Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

Giải thích ý nghĩa câu lệnh trong Python

22:07 20-09-2021 4.578 lượt xem 4 bình luậ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?

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Cu Xin Author đã bình luận 00:21 22-09-2021

format lại các dòng code tương ứng đi bạn.

lyquy197 đã bình luận 00:43 21-09-2021

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

Câu hỏi mới nhất