Bài 20 Câu lệnh lặp For
Lớp 10Tin Học20 câu hỏiBài tập
Phần 1
Câu 1
(Câu 20.1 trang 42 SBT Tin học 10) Hãy viết câu lệnh range cho kết quả là các dãy số sau: (a) 0, 1, 2, 3, ..., 11; (b) -2, -1, 0, 1, 2, ..., 8; (c) 5, 6, 7, ..., 20. Phương án nào đúng?
A(a) range(12); (b) range(-2, 9); (c) range(5, 21).
B(a) range(11); (b) range(-2, 8); (c) range(5, 20).
C(a) range(0, 12); (b) range(-2, 8); (c) range(5, 20).
D(a) range(1, 12); (b) range(-2, 9); (c) range(6, 21).
Câu 2
(Câu 20.2 trang 42 SBT Tin học 10) Kết quả thực hiện câu lệnh for dưới đây là gì?
for i in range(10):
print(i*i)
for i in range(10):
print(i*i)
AIn ra dãy 0, 1, 4, 9, ..., 81, là bình phương của các số từ 0 đến 9.
BIn ra dãy 1, 4, 9, ..., 100, là bình phương của các số từ 1 đến 10.
CIn ra dãy 0, 1, 2, 3, ..., 9.
DIn ra dãy 1, 2, 3, ..., 10.
Câu 3
(Câu 20.3 trang 42 SBT Tin học 10) Cho đoạn chương trình sau:
sum = 0
for i in range(1, 11):
sum = sum + i*i
print(sum)
Kết quả thực hiện chương trình và nhận xét khi thay range(1, 11) bằng range(11) là gì?
sum = 0
for i in range(1, 11):
sum = sum + i*i
print(sum)
Kết quả thực hiện chương trình và nhận xét khi thay range(1, 11) bằng range(11) là gì?
AKết quả là 385; nếu thay bằng range(11) thì kết quả không thay đổi vì cộng thêm 0² không làm thay đổi tổng.
BKết quả là 285; nếu thay bằng range(11) thì kết quả tăng thêm 100.
CKết quả là 385; nếu thay bằng range(11) thì kết quả giảm đi 100.
DKết quả là 55; nếu thay bằng range(11) thì kết quả không thay đổi.
Phần 2
Câu 1
(Câu 20.4 trang 42 SBT Tin học 10) Viết chương trình nhập vào từ bàn phím số tự nhiên n và tính tổng S = 1 + 1/2 + 1/3 + ... + 1/n. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo S = 0 trước vòng lặp.
b)Có thể nhập n bằng lệnh n = int(input("Nhập số tự nhiên n: ")).
c)Có thể dùng vòng lặp for i in range(1, n + 1) để lần lượt xét các số từ 1 đến n.
d)Trong vòng lặp, cần cập nhật S = S + i để tính tổng nghịch đảo.
Câu 2
(Câu 20.5 trang 42 SBT Tin học 10) Viết chương trình nhập vào từ bàn phím số tự nhiên n và tính tổng S = 1 × 2 + 2 × 3 + 3 × 4 + ... + (n − 1) × n. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo S = 0 trước khi tính tổng.
b)Có thể dùng vòng lặp for i in range(2, n + 1) để tính các hạng tử từ 1 × 2 đến (n − 1) × n.
c)Trong vòng lặp, có thể cập nhật S = S + (i - 1)*i.
d)Cần dùng vòng lặp for i in range(1, n) và cập nhật S = S + i thì sẽ tính đúng tổng đã cho.
Câu 3
(Câu 20.6 trang 42 SBT Tin học 10) Viết chương trình tính tổng các số tự nhiên chẵn và tổng các số tự nhiên lẻ không vượt quá n, trong đó n là một số tự nhiên được nhập vào từ bàn phím. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo tong_sole = 0 và tong_sochan = 0 trước vòng lặp.
b)Có thể dùng vòng lặp for i in range(1, n + 1) để xét các số tự nhiên từ 1 đến n.
c)Nếu i%2 == 0 thì i là số chẵn và có thể cộng i vào tong_sochan.
d)Nếu i%2 == 0 thì i là số lẻ và phải cộng i vào tong_sole.
Câu 4
(Câu 20.7 trang 42 SBT Tin học 10) Viết chương trình nhập số tự nhiên n từ bàn phím rồi tính tổng và tích các ước số thực sự của n, biết số k là ước số thực sự của n nếu n%k = 0 và k < n. Nhận định nào sau đây đúng hoặc sai?
a)Các ước số thực sự của n không vượt quá n//2.
b)Có thể khởi tạo tong_uocso = 0 và tich_uocso = 1 trước vòng lặp.
c)Có thể duyệt i trong range(1, n//2 + 1) để kiểm tra các ước số thực sự của n.
d)Nếu n%i != 0 thì i là ước số thực sự của n và cần cộng i vào tong_uocso.
Câu 5
(Câu 20.7 trang 42 SBT Tin học 10) Về chương trình tính tổng và tích các ước số thực sự của n, nhận định nào sau đây đúng hoặc sai?
a)Nếu i là ước số thực sự của n thì cần cập nhật tong_uocso = tong_uocso + i.
b)Nếu i là ước số thực sự của n thì cần cập nhật tich_uocso = tich_uocso*i.
c)Điều kiện n%i == 0 dùng để kiểm tra i có phải là ước số của n hay không.
d)Để tính tích các ước số thực sự, nên khởi tạo tich_uocso = 0 vì 0 là phần tử trung hoà của phép nhân.
Câu 6
(Câu 20.8 trang 42 SBT Tin học 10) Điểm tổng kết trung bình năm học được tính theo công thức dạng (diem1 × heso1 + diem2 × heso2 + ... + diemk × hesok)/(heso1 + heso2 + ... + hesok). Viết chương trình tính điểm trung bình, trong đó số môn học k, điểm số từng môn và hệ số tương ứng được nhập vào từ bàn phím. Nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo tong_diem = 0 và tong_heso = 0 trước vòng lặp.
b)Có thể nhập số môn học bằng lệnh n = int(input("Nhập số môn học: ")).
c)Với mỗi môn học, có thể nhập điểm và hệ số rồi cập nhật tong_diem = tong_diem + diem*heso.
d)Điểm trung bình cả năm được tính bằng tong_diem*tong_heso.
Câu 7
(Câu 20.8 trang 42 SBT Tin học 10) Trong chương trình nhập điểm từng môn, sách dùng lệnh diem = float(input("Điểm môn thứ " + str(i) + ": ")). Câu hỏi mở rộng: Có thể thay bằng lệnh diem = float(input("Điểm môn thứ ", i, ": ")) được không? Nhận định nào sau đây đúng hoặc sai?
a)Không thể thay bằng lệnh diem = float(input("Điểm môn thứ ", i, ": ")) trong Python.
b)Hàm input() chỉ nhận một đối số là chuỗi thông báo.
c)Muốn ghép số thứ tự i vào chuỗi thông báo, có thể chuyển i sang xâu bằng str(i).
d)Hàm input() trong Python hoạt động giống print(), có thể nhận nhiều đối số phân tách bằng dấu phẩy.
Câu 8
(Câu 20.9 trang 43 SBT Tin học 10) Lập trình giải bài toán dân gian “Vừa gà vừa chó, bó lại cho tròn, ba mươi sáu con, một trăm chân chẵn”. Nhận định nào sau đây đúng hoặc sai?
a)Nếu kí hiệu k là số con gà thì số con chó là 36 - k.
b)Tổng số chân có thể tính bằng k*2 + (36 - k)*4.
c)Có thể dùng vòng lặp for k in range(37) để xét các khả năng số gà từ 0 đến 36.
d)Nếu k*2 + (36 - k)*4 == 100 thì số chó bằng k.
Câu 9
(Câu 20.9 trang 43 SBT Tin học 10) Về kết quả bài toán gà và chó có 36 con, 100 chân, nhận định nào sau đây đúng hoặc sai?
a)Số gà là 22.
b)Số chó là 14.
c)Với 22 con gà và 14 con chó, tổng số chân là 100.
d)Số gà là 14 và số chó là 22.
Câu 10
(Câu 20.10 trang 43 SBT Tin học 10) Lập trình giải bài toán dân gian “Trăm trâu, trăm cỏ”. Nhận định nào sau đây đúng hoặc sai?
a)Bài toán có 100 con trâu ăn hết 100 bó cỏ.
b)Mỗi trâu đứng ăn 5 bó cỏ, mỗi trâu nằm ăn 3 bó cỏ, ba trâu già ăn chung 1 bó cỏ.
c)Nếu gọi i là số trâu đứng, j là số trâu nằm, k là số trâu già thì cần có i + j + k = 100.
d)Số trâu già luôn bằng i + j - 100.
Câu 11
(Câu 20.10 trang 43 SBT Tin học 10) Về cách dùng vòng lặp lồng nhau để giải bài toán “Trăm trâu, trăm cỏ”, nhận định nào sau đây đúng hoặc sai?
a)Có thể cho i lần lượt nhận các giá trị số trâu đứng có thể có.
b)Có thể cho j lần lượt nhận các giá trị số trâu nằm có thể có.
c)Sau khi có i và j, số trâu già có thể tính bằng k = 100 - i - j.
d)Điều kiện kiểm tra số bó cỏ là i + j + k/3 == 100.
Câu 12
(Câu 20.10 trang 43 SBT Tin học 10) Về một số nghiệm của bài toán “Trăm trâu, trăm cỏ”, nhận định nào sau đây đúng hoặc sai?
a)4 trâu đứng, 18 trâu nằm, 78 trâu già là một nghiệm của bài toán.
b)8 trâu đứng, 11 trâu nằm, 81 trâu già là một nghiệm của bài toán.
c)12 trâu đứng, 4 trâu nằm, 84 trâu già là một nghiệm của bài toán.
d)20 trâu đứng, 20 trâu nằm, 60 trâu già là một nghiệm của bài toán.
Câu 13
(Câu 20.11 trang 43 SBT Tin học 10) Dựa vào lời giải của Câu 20.9, viết chương trình giải bài toán gà và chó tổng quát với tổng số gà và chó là m và tổng số chân là n được nhập vào từ bàn phím. Nhận định nào sau đây đúng hoặc sai?
a)Nếu kí hiệu k là số gà thì số chó là m - k.
b)Điều kiện để k là nghiệm là k*2 + (m - k)*4 == n.
c)Có thể dùng biến co_nghiem để ghi nhận việc đã tìm được lời giải hay chưa.
d)Trong trường hợp tổng quát, bài toán luôn có nghiệm với mọi cặp m và n.
Câu 14
(Câu 20.11 trang 43 SBT Tin học 10) Về chương trình giải bài toán gà và chó tổng quát, nhận định nào sau đây đúng hoặc sai?
a)Có thể khởi tạo co_nghiem = False trước khi duyệt các khả năng.
b)Có thể nhập m bằng lệnh m = int(input("Tổng số gà và chó là: ")).
c)Có thể dùng vòng lặp for k in range(m + 1) để xét các khả năng số gà từ 0 đến m.
d)Nếu tìm được nghiệm, cần gán co_nghiem = False để báo rằng bài toán có nghiệm.
Câu 15
(Câu 20.12 trang 43 SBT Tin học 10) Viết chương trình giải bài toán có m trâu, n bó cỏ, mỗi trâu đứng ăn k1 bó cỏ, trâu nằm ăn k2 bó cỏ, k3 trâu già ăn 1 bó cỏ. Nhận định nào sau đây đúng hoặc sai?
a)Có thể nhập m, n, k1, k2, k3 từ bàn phím bằng các lệnh input() kết hợp int().
b)Có thể dùng hai vòng lặp lồng nhau để xét số trâu đứng và số trâu nằm.
c)Sau khi biết số trâu đứng i và số trâu nằm j, số trâu già có thể tính bằng k = m - i - j.
d)Số trâu già có thể tính bằng k = m + i + j.
Câu 16
(Câu 20.12 trang 43 SBT Tin học 10) Về điều kiện kiểm tra nghiệm trong bài toán trâu, cỏ tổng quát, nhận định nào sau đây đúng hoặc sai?
a)Tổng số cỏ trâu đứng ăn là k1*i.
b)Tổng số cỏ trâu nằm ăn là k2*j.
c)Nếu k3 trâu già ăn chung 1 bó cỏ thì số bó cỏ trâu già ăn là k/k3.
d)Điều kiện kiểm tra nghiệm là k1*i + k2*j + k*k3 == n.
Câu 17
(Câu 20.12 trang 43 SBT Tin học 10) Về việc xử lí trường hợp vô nghiệm trong bài toán trâu, cỏ tổng quát, nhận định nào sau đây đúng hoặc sai?
a)Có thể dùng biến co_nghiem để ghi nhận đã tìm được nghiệm hay chưa.
b)Ban đầu có thể gán co_nghiem = False.
c)Khi tìm được một nghiệm thì cần gán co_nghiem = True.
d)Nếu sau khi duyệt hết các khả năng mà co_nghiem vẫn bằng False thì không cần thông báo gì vì chương trình chắc chắn luôn có nghiệm.