Kết quả của chương trình sau là gì? Duyệt danh sách bằng for và print(k, end)

Trả lời nhanh

Chương trình dùng vòng lặp for k in a để lấy lần lượt từng phần tử của danh sách a rồi in ra bằng print(k, end=' '). Vì end=' ' thay việc xuống dòng bằng một dấu cách, các giá trị nằm trên cùng một dòng. Với a = [1, 2, 3, 4, 5, 6], kết quả là 1 2 3 4 5 6, các số cách nhau bằng dấu cách.

1. Đọc chương trình

a = [1, 2, 3, 4, 5, 6]
for k in a:
    print(k, end=' ')
  • a là danh sách gồm sáu số nguyên.
  • for k in a nghĩa là: lần lượt gán cho biến k từng giá trị của a, từ phần tử đầu đến phần tử cuối.
  • Dòng thụt vào bên dưới là thân vòng lặp, được thực hiện sau mỗi lần k nhận giá trị mới.

2. Chạy từng bước

Lần lặp Giá trị k Lệnh in ra
1 1 1 và một dấu cách
2 2 2 và một dấu cách
3 3 3 và một dấu cách
4 4 4 và một dấu cách
5 5 5 và một dấu cách
6 6 6 và một dấu cách

Màn hình hiển thị: 1 2 3 4 5 6. Phía sau số 6 còn một dấu cách nhưng mắt thường không nhìn thấy.

3. Tham số end làm gì?

Mặc định, mỗi lệnh print kết thúc bằng ký tự xuống dòng. Tham số end cho phép đổi phần kết thúc đó.

Lệnh in Kết quả với a = [1, 2, 3, 4, 5, 6]
print(k) Mỗi số nằm trên một dòng
print(k, end=' ') 1 2 3 4 5 6
print(k, end='') 123456 (liền nhau, không dấu cách)
print(k, end=', ') 1, 2, 3, 4, 5, 6, (còn dấu phẩy thừa ở cuối)

4. Các biến thể hay gặp trong đề

Các đề trắc nghiệm thường chỉ thay đổi một chi tiết nhỏ ở vòng lặp. Em hãy luôn tự lập bảng giá trị k để tránh nhầm.

  • for k in a[:5]: chỉ lấy năm phần tử đầu, in ra 1 2 3 4 5.
  • for k in a[::2]: lấy cách một phần tử, in ra 1 3 5.
  • for k in a[::-1]: duyệt ngược, in ra 6 5 4 3 2 1.
  • for k in range(5): k chạy từ 0 đến 4, in ra 0 1 2 3 4 (không có 5).
  • for k in range(len(a)): k là chỉ số, print(a[k], end=' ') vẫn in 1 2 3 4 5 6.

5. Lỗi sai thường gặp

  • Nhầm k là chỉ số. Trong for k in a, k là giá trị của phần tử, không phải vị trí.
  • Quên rằng range(n) không bao gồm n.
  • Bỏ qua tham số end nên chọn đáp án in mỗi số một dòng.
  • Nhầm đáp án có dấu phẩy với đáp án có dấu cách: phải đọc kĩ giá trị của end.

6. Luyện tập

  1. a = [2, 4, 6] rồi for k in a: print(k * 2, end=' '). Đáp án: 4 8 12.
  2. for k in range(1, 6): print(k, end=''). Đáp án: 12345.
  3. a = [1, 2, 3, 4, 5, 6] rồi for k in a[::-1]: print(k, end=' '). Đáp án: 6 5 4 3 2 1.

Câu hỏi thường gặp

Kết quả của chương trình duyệt a = [1, 2, 3, 4, 5, 6] với print(k, end=' ') là gì?

Là 1 2 3 4 5 6, các số nằm trên cùng một dòng và cách nhau bằng dấu cách.

Tham số end trong print có tác dụng gì?

Nó quy định chuỗi được in ở cuối lệnh. Mặc định là xuống dòng, đặt end=' ' thì các lần in nằm cùng một dòng, cách nhau dấu cách.

for k in a thì k là chỉ số hay giá trị?

k là giá trị của từng phần tử trong danh sách a. Muốn lấy chỉ số, dùng for k in range(len(a)).

range(5) gồm những số nào?

Gồm 0, 1, 2, 3, 4. Hàm range(n) bắt đầu từ 0 và không bao gồm n.