Buổi 6: Vòng lặp while

Hôm nay em sẽ học

  1. while: lặp khi chưa biết trước số lần
  2. Vòng lặp vô hạn và cách dừng
  3. break – thoát vòng lặp, continue – bỏ qua một lượt
  4. Khi nào dùng for, khi nào dùng while
  5. Lập trình trò chơi Đoán số!

Bấm vào slide rồi dùng phím ← → để chuyển, phím F để xem toàn màn hình.

Mở toàn màn hình

1. Kiến thức chính

Lặp khi chưa biết trước số lần

tien = 0
ngay = 0
while tien < 50000:       # lặp TRONG KHI điều kiện còn đúng
    tien += 2000
    ngay += 1
print(ngay)               # 25
ScratchPython
lặp lại cho đến khi < đủ tiền >while tien < 50000:
liên tụcwhile True:
Scratch lặp cho đến khi điều kiện đúng; Python while lặp trong khi điều kiện đúng. Hai điều kiện ngược nhau!

Vòng lặp vô hạn

Nếu quên thay đổi biến trong vòng lặp, điều kiện luôn đúng và chương trình chạy mãi. Cách dừng: nút Stop trong Thonny hoặc Ctrl + C.

break và continue

while True:
    x = int(input())
    if x == 0:
        break             # thoát hẳn vòng lặp
    if x < 0:
        continue          # bỏ qua phần còn lại, sang lượt tiếp
    print(x * 2)

Chọn for hay while?

Tình huốngDùng
Biết trước số lần: n số, từ 1 đến nfor
Lặp đến khi một điều kiện xảy rawhile
Lặp mãi, tự quyết định lúc dừngwhile True + break

2. Ghi nhớ và lỗi thường gặp

LỗiHậu quả
Quên cập nhật biến trong whilevòng lặp vô hạn
Viết điều kiện của Scratch (cho đến khi) vào whilevòng lặp không chạy lần nào hoặc chạy sai
Khởi tạo giá trị lớn nhất bằng 0 khi các số có thể âmkết quả sai
Đếm chữ số bằng while n > 0 khi n = 0ra 0 chữ số thay vì 1

3. Câu hỏi tự kiểm tra

  1. Vòng lặp while x < 10: sẽ chạy bao nhiêu lần nếu bên trong có x += 3 và ban đầu x = 1?
  2. break khác continue thế nào?
  3. Đề bài: "đọc các số cho đến khi gặp số 0". Nên dùng for hay while?

4. Bài tập về nhà

Bài 1 ★★ – FIBO

Dãy Fibonacci: 1, 1, 2, 3, 5, 8, 13, … (mỗi số bằng tổng hai số đứng trước).

Input: số nguyên n (1 ≤ n ≤ 10¹⁸).

Output: các số Fibonacci không vượt quá n, trên một dòng.

InputOutput
101 1 2 3 5 8
11 1

Bài 2 ★★ – CHINHPHUONG

Số chính phương là bình phương của một số nguyên: 1, 4, 9, 16, 25, …

Input: số nguyên n (1 ≤ n ≤ 10¹²).

Output: số chính phương nhỏ nhất lớn hơn hoặc bằng n.

InputOutput
1016
1616

Bài 3 ★★★ (thử thách) – CANSO

Cộng các chữ số của n được một số mới. Lặp lại việc cộng chữ số cho đến khi chỉ còn một chữ số. In chữ số đó.

Ví dụ: 9875 → 9 + 8 + 7 + 5 = 29 → 2 + 9 = 11 → 1 + 1 = 2.

Input: số nguyên n (0 ≤ n ≤ 10¹⁸).

Output: chữ số cuối cùng.

InputOutput
98752
77
Gợi ý: dùng hai vòng while lồng nhau – vòng ngoài lặp khi n ≥ 10, vòng trong tính tổng chữ số.
Cách nộp bài: mỗi bài một file .py đặt tên theo tên bài. Chạy thử với tất cả ví dụ trước khi nộp!

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Zalo