Đáp án và lời giải
Giải SBT Tin 10 KNTT Bài 21. Câu lệnh lặp While có đáp án
Câu 1
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
a) Lần lượt in ra trên cùng một dòng các giá trị bằng (gần đúng) của 1/3, 1/4, 1/5, 1/6. Chương trình dừng khi giá trị = 5.

Câu 2
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Câu 3
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Câu 4
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Cả hai đoạn chương trình đều tính và in ra tổng các số tự nhiên từ 1 đến 10.
a)

Câu 5
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
b)

Câu 6
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Đoạn chương trình thực hiện việc tính tổng bình phương các số tự nhiên từ 5 đến 10. Em có thể dùng câu lệnh while để thay thế câu lệnh for như sau:
s = 0
i = 5
while i < 11:
s = s + i*i
i = i + 1
print(s)

Câu 7
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Em có thể thay câu lệnh for đã cho bằng nhóm các câu lệnh có sử dụng while tương ứng như sau:
biến> = gia_tri1
while biến> < gia_tri2:
khối lệnh>
biến> = biến> + 1
Câu 8
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Đoạn chương trình thực hiện việc in ra số tự nhiên i nhỏ nhất sao cho tổng:

Câu 9
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Chương trình có thể viết như sau:
dem = 0
i = 1
while i < 101:
if (i%5 == 0) or (i%3 == 1):
dem = dem + 1
i = i + 1
print("Số các số cần tìm = ", dem)

Ghi chú: Có thể dùng câu lệnh for để giải bài toán trên như sau:
dem = 0
for i in range(1, 101):
if (i%5 == 0) or (i%3 == 1):
dem = dem + 1
print("Số các số cần tìm = ", dem)
Câu 10
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Chương trình có thể viết như sau:
print("GIẢI BÀI TOÁN GÀ VÀ CHÓ")
print("Vừa gà vừa chó");
print("Bó lại cho tròn");
print("Ba mươi sáu (36) con");
print("Một trăm(100) chân chẵn");
print("Hỏi có mấy gà, mấy chó?");
k = 1
while k < 37:
if((k * 2 + (36 - k) * 4) == 100):
print("Số gà là: ", k)
print("Số chó là: ", 36-k)
k = k + 1

Lưu ý: Hoàn toàn tương tự, có thể thay thế các câu lệnh for trong các bài Gà và Chó tổng quát cũng như "Trăm trâu, trăm cỏ" ở Bài 20.
Câu 11
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Chương trình có thể viết như sau:
# Tổng các chữ số của số n
n = int(input("Nhập số nguyên dương n = "))
tong = 0
luu = n
while n > 0:
tong = tong + n % 10
n = n // 10
print("Tổng các chữ số của ", luu , " là ", tong)
Câu 12
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Chương trình có thể viết như sau:
# Bảng số 100
i = 0
while i <10:
j = 1
while j < 11:
print(i*10+j, end = " ")
j = j + 1
print("")
i = i + 1

Câu 13
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Chương trình có thể viết như sau:
so_ho_gd = 0
So_ho_ngheo = 0
so_ho_khagia = 0
tongthunhap_ngheo = 0
tongthunhap = 0
thunhap = 1 #Có thể gán 1 số bất kì > 0 để thực hiện vòng lặp
while thunhap > 0 :
thunhap = float(input("Thu nhập của hệ tiếp theo (đơn vị tính triệu đồng): "))
if thunhap > 0: #Xem lưu ý ở dưới.
tongthunhap = tongthunhap + thunhap
so_ho_gd = so_ho_gd + 1
if thunhap < 20:
tongthunhap_ngheo = tongthunhap_ngheo + thunhap
so_ho_ngheo = so_ho_ngheo + 1
print("Số các hộ gia đình được khảo sát = ", so_ho_gd, "Thu nhập bình quân 1 hộ = ", tongthunhap/so_ho_gd)
if so_ho_ngheo > 0:
print("Số các hộ gia đình nghèo được khảo sát = ", so_ho_ngheo, "Thu nhập bình quân 1 hộ = ", tongthunhap_ngheo/so_ho_ngheo)
else:
print("Không có các hộ gia đình nghèo")
Lưu ý: Cần có câu lệnh kiểm tra để tránh trường hợp giá trị nhập vào cho biến thunhap ≤ 0 (dấu hiệu kết thúc nhập dữ liệu) nhưng vẫn tính thêm một hộ gia đình được khảo sát.
Câu 14
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý


Câu 15
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Chương trình có thể viết như sau:
# Xác định palindrom
so_bandau = int(input("Nhập số tự nhiên bất kì: "))
so_nghichdao = 0
k = so_bandau
while k > 0:
so_nghichdao = so_nghichdao*10 + k % 10 # Từng bước tạo số nghịch đảo
k = k // 10
if so_nghichdao == so_bandau:
print("Số đã cho ", so_bandau, "là palindrom")
else:
print("Số đã cho ", so_bandau, "không phải là palindrom")
Câu 16
Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý
Chương trình có thể viết như sau:
# Số hoàn hảo > n cho trước
n = int(input("Nhập giá trị của n: "))
so_hoanhao = n + 1
tim_ra = False
while tim_ra == False:
tong_uocso = 0
for i in range(1, so_hoanhao):
if so_hoanhao%i==0: # i là ước số
tong_uocso = tong_uocso+i
if tong_uocso == so_hoanhao :
tim_ra = True
print("Số hoàn hảo đầu tiên lớn hơn ", n, " là ", so_hoanhao)
else:
so_hoanhao = so_hoanhao + 1