Giải sách bài tập Tin học 10 Bài 21: Câu lệnh lặp While
a)
i = 1
while i < 5:
print(1/(i + 2), end = " ")
i = i + 1
b)
i = 5
while i < 5 :
print(1/(i + 2), end = " ")
i = i + 1
Trả lờ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.
b) Chương trình không in gì mà kết thúc luôn, do điều kiện thực hiện vòng lặp (i < 5) không được thoả mãn.
x = 1
while x > 0:
x = int(input("Thu nhập của hộ tiếp theo: "))
Trả lời:
Đoạn chương trình đã cho thực hiện việc nhập dữ liệu thu nhập của hộ gia đình từ bàn phím. Khi giá trị được nhập vào nhỏ hơn hoặc bằng 0 thì quá trình nhập dữ liệu kết thúc.
Câu 21.3 trang 44 SBT Tin học 10: Em hãy cho biết kết quả thực hiện hai đoạn chương trình sau:
a)
s = 0
for i in range(1, 11):
s = s + i
print(s)
b)
s = 0
i = 1
while i < 11:
s = s + i
i = i + 1
print(s)
Trả lờ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)
b)
s = 0
for i in range(5,11):
s = s + i*i
print(s)
Trả lờ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)
for
Trả lờ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:
while
Câu 21.6 trang 45 SBT Tin học 10: Em hãy cho biết đoạn chương trình sau thực hiện công việc gì:
s = 0
i = 0
while s < 2:
i = i + 1
s = s + 1/i
print("Giá trị i cần tìm = ", i)
Trả lờ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:
Trả lờ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 21.8 trang 45 SBT Tin học 10: Sử dụng câu lệnh while để giải bài toán "Gà và Chó" (Câu 20.9).
Trả lờ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.
Trả lờ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)
Trả lờ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
Trả lờ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.
Trả lời:
Trả lờ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")
6: 1 + 2 + 3 = 6
28: 1 + 2 + 4 + 7 + 14 = 28
496: 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248 = 496
8128: 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064 = 8128
Em hãy viết chương trình xác định số hoàn hảo đầu tiên lớn hơn số tự nhiên n được nhập vào từ bàn phím.
Trả lờ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
Xem thêm các bài giải SBT Tin học lớp 10 Kết nối tri thức hay, chi tiết khác:
Bài 22: Kiểu dữ liệu danh sách