Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Đề bài yêu cầu khi nhập vào 1 số n thì sẽ in ra các giá trị i^2 với i thuộc khoảng [0;n-1].
Em có đọc được 1 answer như này mong mọi người giúp em giải đáp vài thắc mắc
print(*[num**2 for num in range(5)], sep='\n')
Dấu * ngay sau lệnh print có nghĩa là gì?
Theo như em biết thì hàm range(5) sẽ cho ra giá trị từ 1 - 5 tại sao trong hàm này nó lại lấy cả giá trị 0?
Parameter sep có nghĩa như nào?
format lại các dòng code tương ứng đi bạn.
Thứ 1: Dấu * để giải nén (Asterisks for unpacking into function call) đầu vào cho hàm print. Nghĩa là chuyển đổi các phần tử của 1 list thành các arguments (arguments : đối số của hàm) cho hàm print.
Ví dụ:
print(*[1, 2, 4]) tương đương với print(1, 2, 4).
print(*['abc', 'xyz']) tương đương print('abc', 'xyz').
Tại sao lại dùng? Vì mong muốn in ra các phần tử của 1 list chứ không in ra list.
Thứ 2: range(5): Sẽ chạy từ 0 nhé. Từ sau em nên tự mình thử nghiệm lại là biết thôi.
Thứ 3: Parameter sep là ngăn cách giữa các arguments mà hàm print nhận vào. Mặc định là 1 space ' '.
Ví dụ
>>> print(*[1, 2, 4], sep=' ') // tuong duong print(1, 2, 4, sep=' ')
1 2 4
>>> print(*[1, 2, 4], sep='*')
1*2*4
>>> print(*[1, 2, 4], sep='##')
1##2##4