WorksheetsCÁC VÒNG LẶP TRONG PYTHON
Total questions: 78
Worksheet time: 39mins
Dựa trên hình minh họa, cấu trúc vòng lặp nào của Python được dùng để lặp qua một dãy hoặc bộ sưu tập phần tử?
def dùng để định nghĩa hàm
while dùng điều kiện tiếp tục lặp
for dùng để duyệt qua iterable
if dùng để rẽ nhánh nhiều lần
Trong ngữ cảnh bộ đếm vòng lặp hiển thị trên hình, lựa chọn nào mô tả đúng cách tăng bộ đếm trong vòng while để tránh vòng lặp vô hạn?
Giữ biến đếm không đổi suốt vòng lặp
Giảm biến đếm sau mỗi lần lặp
Tăng biến đếm và kiểm tra điều kiện kết thúc
Đặt điều kiện luôn đúng để chạy mã
Trong Python, khi nào nên ưu tiên dùng vòng for thay vì while?
Khi cần chờ sự kiện hệ thống
Khi số lần lặp biết trước rõ ràng
Khi điều kiện dừng phụ thuộc ngẫu nhiên
Khi cần thao tác đa luồng phức tạp
Lệnh continue trong vòng lặp Python có tác dụng gì?
Thoát hẳn khỏi vòng lặp ngay lập tức
Lặp lại lần hiện tại thêm một lần
Bỏ qua lần lặp hiện tại, tiếp lần tiếp theo
Dừng chương trình và báo lỗi
Chọn mô tả đúng về cấu trúc for/else trong Python.
Khối else chỉ chạy với danh sách rỗng
Khối else chạy nếu vòng lặp không bị break
Khối else chạy ở mỗi lần lặp cuối
Khối else chạy khi điều kiện vòng lặp sai ngay
Bạn cần kiểm tra các cặp phần tử trong một ma trận để tìm giá trị lớn nhất theo hàng và cột. Cấu trúc nào phù hợp nhất?
for/else để bắt lỗi
continue để bỏ qua tất cả phần tử
Vòng lặp lồng nhau với for
Một vòng while đơn lẻ
Trong Python, cú pháp cơ bản của vòng lặp while là gì?
while: condition do block
while condition: block
while block: condition
while True: condition
Điều gì xảy ra với khối lặp nếu điều kiện của while là False ngay từ đầu?
Khối lặp không chạy lần nào
Khối lặp chạy cho đến khi break
Khối lặp chạy một lần rồi dừng
Khối lặp chạy vô hạn
Chọn phát biểu đúng về cách thoát vòng while trong Python.
Điều kiện True sẽ tự động thoát vòng while
Phải dùng return để thoát mọi vòng while
Có thể thoát bằng cách làm điều kiện trở thành False
Chỉ có thể thoát bằng từ khóa continue
Quan sát sơ đồ dòng chảy của while: sau khi thực thi block, bước kế tiếp là gì?
Chuyển sang vòng for tiếp theo
Thiết lập condition thành True một lần nữa
Đánh giá lại condition để quyết định lặp tiếp
Thoát vòng và kết thúc chương trình
Trong ví dụ kiểm tra nhập, điều kiện nào giữ vòng lặp chạy cho đến khi giá trị nằm trong [1..10]?
value < 1 or value > 10
value > 1 and value < 10
value <= 1 and value >= 10
value == 1 or value == 10
Mục tiêu của đoạn mã nhập lại là gì khi người dùng nhập sai?
Tự động sửa giá trị nhập
Bỏ qua và dùng giá trị mặc định
Yêu cầu nhập lại đến khi hợp lệ
Thoát chương trình ngay lập tức
Sau khi người dùng nhập đúng số trong [1..10], chương trình thực hiện tác vụ nào?
In bình phương của giá trị
Cộng thêm một vào giá trị
Nhân giá trị với ba
In ra chuỗi xác nhận đơn giản
Trong ví dụ tính tổng s=1+2+...+N, biến i được khởi tạo bằng bao nhiêu trước vòng while?
i = 0 trước vòng lặp
i = 2 trước vòng lặp
i = 1 trước vòng lặp
i = N trước vòng lặp
Điều kiện vòng while để cộng dồn từ 1 đến N trong ví dụ là gì?
i == n+1 bắt đầu vòng lặp
i <= n giữ vòng lặp chạy
i < n-1 giữ vòng lặp chạy
i != n dừng vòng lặp
Với N=5, giá trị tổng s sau lần lặp thứ 5 là bao nhiêu theo vết thực thi?
s = 15 sau lần lặp 5
s = 10 sau lần lặp 5
s = 20 sau lần lặp 5
s = 5 sau lần lặp 5
Cho yêu cầu: "Nhập vào n nguyên dương, in ra dãy số từ 1 đến n và tổng của chúng". Trong ngôn ngữ giả, đâu là cấu trúc vòng lặp while phù hợp để in các số từ 1 đến n?
i = 0; while i < n: in i; i = i + 2
i = 1; while i < n: in i; i = i + 1
i = n; while n > 0: in n; n = n - 2
i = 1; while i <= n: in i; i = i + 1
Bài 2 yêu cầu: "Liên tục yêu cầu người dùng nhập số nguyên. Kết thúc khi nhập số âm và in ra tích của các số này". Đâu là cách xử lý điều kiện dừng đúng?
Dừng khi số nhập bằng 0 vì tích không đổi
Dừng khi nhập số âm, không nhân số âm vào tích
Tiếp tục cho đến khi tổng vượt 100 rồi dừng
Dừng ngay sau số đầu tiên và in tích bằng chính số đó
Trong đoạn mã Bài 1, biến nào dùng làm biến đếm để điều khiển điều kiện while i <= n?
s là biến đếm tích lũy tổng
i là biến đếm tăng dần mỗi bước
n là biến đếm chính của vòng lặp
print là biến đếm quyết định dừng
Giả sử người dùng nhập n = 4 cho Bài 1. Chuỗi số được in ra (trên cùng một dòng, cách bởi một khoảng trắng) là gì?
1 2 3 4
4 3 2 1
0 1 2 3
1 2 3 4 5
Trong Bài 2, vòng lặp dừng khi nào?
Khi tích đạt giá trị lớn hơn 1000
Khi đã nhập đủ 10 số
Khi người dùng nhập số âm bất kỳ
Khi người dùng nhập số bằng 0
Xét Bài 2: người dùng lần lượt nhập 3, 2, 0, -1. Giá trị tích cuối cùng được in ra là bao nhiêu?
0 vì nhân với 0 làm tích bằng 0
6 vì dừng trước khi nhân với 0
5 vì cộng các số đã nhập
-6 vì có số âm trong tích
Trong bài toán đoán số bí mật (phạm vi 0–9), điều kiện dừng vòng while nên là gì khi đọc liên tục dự đoán của người dùng?
Khi số lần đoán đạt giới hạn cố định
Khi người dùng nhập số âm bất kỳ
Khi người dùng nhập số lớn hơn 10
Khi dự đoán bằng số bí mật
Chọn mô tả đúng thuật toán dùng while để đảo ngược số nguyên dương n.
Lặp: trừ dần 1 từ n đến khi bằng 0
Lặp: cộng dồn n vào kết quả đến khi về 0
Lặp: lấy chữ số đầu n, prepend vào kết quả, nhân n với 10
Lặp: lấy chữ số cuối n, append vào kết quả, chia n cho 10
Trong Bài 3, vòng lặp while dừng khi nào?
Khi biến doan bằng so_bi_mat
Khi số bí mật thay đổi giá trị
Khi số lần đoán đạt mười lần
Khi người dùng nhập số lớn hơn 10
Trong thuật toán đảo số ở Bài 4, phép toán n //= 10 có ý nghĩa gì?
Lấy phần dư của n chia mười
Đặt n về giá trị ban đầu
Nhân n với mười rồi cộng chữ số
Loại bỏ chữ số cuối của n
Cho n = 1205. Theo Bài 4, sau ba vòng lặp while, giá trị biến dao_nguoc là bao nhiêu?
50
502
501
5021
Trong Bài 3, điều gì sẽ xảy ra nếu người dùng đoán sai?
In thông báo sai và yêu cầu đoán lại
Thoát chương trình ngay lập tức
Thay đổi giá trị so_bi_mat ngẫu nhiên
Tăng doan lên một cách tự động
Trong Python, cú pháp cơ bản để lặp n lần dùng biến i là gì?
for i in range(n):
for i = 0 to n:
repeat n times using i:
loop i from 0 to n:
Hàm range(10) tạo ra dãy giá trị nào?
10, 9, 8, 7, 6, 5, 4, 3, 2, 1
0, 2, 4, 6, 8, 10, 12, 14, 16, 18
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Tham số step trong range(begin, end, step) có ý nghĩa gì?
Giá trị cuối cùng được bao gồm
Kiểu dữ liệu của biến lặp i
Bước nhảy giữa các giá trị liên tiếp
Số lượng phần tử cần tạo ra
Kết quả của range(1, 10, 2) là gì?
2, 4, 6, 8, 10
1, 3, 5, 7, 9
1, 2, 3, 4, 5, 6, 7, 8, 9
10, 8, 6, 4, 2
Trong lưu đồ vòng for với range(n), điều kiện tiếp tục lặp là gì?
i ≤ n − 1
i < n − 2
i == n
i ≥ n + 1
Dãy giá trị nào đúng cho range(10, 0, -2)?
9, 7, 5, 3, 1
10, 8, 6, 4, 2
10, 9, 8, 7, 6
0, 2, 4, 6, 8
Khi dùng range(n), biến i ở lần lặp đầu tiên nhận giá trị nào?
n − 1
n
1
0
Cho đoạn mã: for n in range(10): print(n, end=' '). Dãy giá trị được in ra là gì?
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
Trong Python, range(1,10) tạo ra dãy nào?
2 4 6 8 10
1 3 5 7 9
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
Câu lệnh for n in range(1,10,2): print(n, end=' ') sẽ in ra dãy nào?
1 3 5 7 9
1 2 3 4 5 6 7 8 9
2 4 6 8 10
9 7 5 3 1
Với range(10,0,-1), dãy in ra là gì?
9 8 7 6 5 4 3 2 1 0
10 9 8 7 6 5 4 3 2 1
10 8 6 4 2
0 1 2 3 4 5 6 7 8 9
Đoạn mã: n=int(input()); s=0; if n%2==0: for x in range(2,n+1,2): s+=x; elif n%2!=0: for x in range(1,n+1,2): s+=x; print(s). Nếu n=8, giá trị s cuối cùng là bao nhiêu?
12
16
20
24
Với cùng đoạn mã cộng dồn ở trên, nếu n=9 thì vòng lặp sẽ cộng các giá trị nào?
2 4 6 8
1 2 3 4 5
1 3 5 7 9
0 2 4 6 8
Trong Python, mục đích chính của câu lệnh break trong vòng lặp là gì?
Tạm dừng vòng lặp rồi tiếp tục sau đó
Thoát khỏi vòng lặp chứa nó ngay lập tức
Nhảy đến lần lặp kế tiếp và bỏ qua phần còn lại
Kết thúc toàn bộ chương trình ngay lập tức
Trong đoạn mã: for k in range(10): print(k,end=" "); if k==5: break. Dãy số được in ra là gì?
0 1 2 3 4
1 2 3 4 5 6
0 1 2 3 4 5
0 1 2 3 4 5 6 7 8 9
Trong vòng lặp while True với yêu cầu nhập giá trị liên tục, điều kiện nào nên dùng để thoát khi người dùng chọn dừng?
if s=="c": break
if s!="k": continue
if s=="k": break
if s=="c": continue
Khác biệt chính giữa break và continue trong điều khiển vòng lặp là gì?
Break tăng biến đếm, continue giảm biến đếm
Break chỉ dùng cho while, continue chỉ dùng cho for
Break thoát khỏi vòng lặp, continue chuyển sang lần lặp kế tiếp
Break bỏ qua vòng lặp hiện tại, continue kết thúc chương trình
Khi câu lệnh break được thực thi bên trong vòng lặp, các lệnh bên dưới break trong cùng khối sẽ:
Chỉ chạy nếu là lệnh print
Bị bỏ qua hoàn toàn trong lần thoát đó
Chạy lại từ đầu vòng lặp
Được chạy sau khi vòng lặp kết thúc
Chọn nhận định đúng về việc dùng break để xử lý vòng lặp vô hạn while True khi nhận lệnh dừng từ người dùng.
Break giúp thoát gọn, tránh treo chương trình
Break làm vòng lặp chạy nhanh hơn mọi lúc
Break tự lưu trạng thái trước khi thoát
Break chỉ hoạt động nếu biến nhập là số
Câu lệnh continue trong vòng lặp có tác dụng chính là gì?
Tạm dừng vòng lặp trong một khoảng thời gian
Kết thúc toàn bộ vòng lặp ngay lập tức
Lặp lại lần lặp hiện tại thêm một lần
Bỏ qua phần thân hiện tại và sang lần lặp kế tiếp
Trong đoạn mã Python: for i in range(1,16,2): if i==3 or i==11: continue sum+=i, giá trị i nào sẽ không được cộng vào biến sum?
Chỉ số 3 và 11
Mọi số lẻ từ 1 đến 15
Mọi số chẵn từ 1 đến 16
Chỉ số 1 và 15
Sự khác biệt chính giữa continue và break trong vòng lặp là gì?
Cả hai đều kết thúc chương trình
Cả hai đều chỉ bỏ qua một câu lệnh
continue bỏ qua lần lặp hiện tại, break kết thúc vòng lặp
continue kết thúc vòng lặp, break bỏ qua thân hiện tại
Khi cần loại trừ một số giá trị theo điều kiện trong vòng lặp mà vẫn tiếp tục duyệt các giá trị khác, lựa chọn phù hợp là gì?
Sử dụng try/except để bỏ qua giá trị
Sử dụng print để bỏ qua giá trị
Sử dụng continue với điều kiện tương ứng
Sử dụng return trong vòng lặp
Trong Python, else trong while được thực thi khi nào?
Ngay sau mỗi lần lặp của while
Khi vòng while kết thúc bình thường
Khi vòng while kết thúc do break
Khi điều kiện while còn đúng liên tục
Cú pháp đúng của while/else là gì?
while cond { block } else { block }
do while cond: block else: block
while cond then: block else: block
while cond: block; else: block
Trong ví dụ nhập 5 số dương, điều gì khiến else không chạy?
Khi count tăng vượt quá 5 sau else
Khi hết số lần lặp theo kế hoạch
Khi nhập số âm và dùng break
Khi nhập số bằng 0 sau cùng
Giả sử không nhập số âm, sau khi count đạt 5, điều gì xảy ra?
While lặp vô hạn rồi else chạy
Else chỉ chạy nếu có continue
Chương trình dừng trước else
Else in ra trung bình các số
Trong đoạn mã minh hoạ, biến nào dùng để đếm số lượng nhập?
count biến đếm số lần nhập
avg biến tính trung bình cuối
val biến nhận giá trị nhập vào
sum biến cộng dồn giá trị
Chọn phát biểu đúng về break trong while/else.
Break kết thúc while và vẫn chạy else
Break bỏ qua else và kết thúc vòng lặp
Break chỉ bỏ qua lần lặp hiện tại
Break làm điều kiện while thành sai tạm thời
Trong Python, else trong for được thực thi khi nào?
Khi vòng lặp for hoàn tất bình thường
Khi vòng lặp for không có phần thân
Khi điều kiện if luôn đúng mọi lần
Khi vòng lặp for chạy lần đầu tiên
Cú pháp đúng của for/else trong Python là gì?
for ...: khối-for; else: khối-else
for ... else: khối-for; end
for ... do: khối-for; otherwise: khối-else
loop ...: khối-for; else if: khối-else
Điều gì khiến else của for không chạy?
Biến đếm đạt đến giá trị cuối
Có câu lệnh print trong for
Vòng lặp dùng range tăng dần
Vòng lặp bị dừng bằng break
Trong ví dụ, mục tiêu của chương trình là gì khi a là số chẵn?
Tính tổng các số trong range(5,10)
In ra tất cả số lẻ trong range(5,10)
Dừng vòng lặp ngay lập tức
Kiểm tra điều kiện 4%a luôn bằng 1
Trong đoạn mã, khi nào thông báo "Ngừng for" được in?
Khi s lớn hơn n thì thoát
Khi n đạt giá trị 10 thì dừng
Khi a là số chẵn thì tiếp tục
Khi 4%a là 1 thì break
Giả sử a=6, chương trình sẽ in gì sau khi chạy?
In "Ngừng for" ngay đầu vòng lặp
In "Sum=" với tổng các số 5..9
In từng số n rồi kết thúc
Không in gì vì else không chạy
Giả sử a=5, chương trình sẽ dừng như thế nào?
Dừng bằng break trước khi else
Hoàn tất bình thường rồi else
Tiếp tục vô hạn không dừng
Ném lỗi vì a không phải số
Trong đoạn mã Python minh họa, vòng lặp nào chịu trách nhiệm duyệt từng hàng của ma trận ký tự n×n?
Vòng lặp trong theo biến j
Câu lệnh if trong vòng lặp
Vòng lặp ngoài theo biến i
Hàm input đọc chiều cao
Điều kiện nào làm cho chương trình in ra dấu "*" thay vì khoảng trắng trong mỗi ô?
i!=j và j!=0 và i!=n-1
i>j và j>0 và i
j==0 hoặc i==j hoặc j==n-1
i==0 hoặc j==i hoặc i==n-1
Quan sát sơ đồ lưới, ký tự "*" xuất hiện ở những vị trí nào khi n là kích thước cạnh?
Mọi ô đều là "*" không có khoảng trắng
Cột đầu, đường chéo chính, cột cuối
Hàng đầu, đường chéo phụ, hàng cuối
Chỉ đường chéo chính và đường chéo phụ
Nếu người dùng nhập n=7, tổng số ký tự "*" được in ra là bao nhiêu? (Dựa trên điều kiện j==0, i==j, j==n-1 và không tính trùng lặp)
7 + 7 + 7 − 2 trùng
3×7 ký tự không trùng
14 ký tự vì hai biên
7 ký tự duy nhất
Muốn in khung hình vuông (hàng đầu và hàng cuối), điều kiện nào cần thay thế hoặc bổ sung vào mã?
i==0 hoặc i==n-1 thay vì j==0
j==i và i!=0
i>0 và j
i==0 hoặc i==n-1 bổ sung cùng j==0 hoặc j==n-1
Giả sử bạn muốn in đường chéo phụ (từ góc trên phải xuống góc dưới trái). Điều kiện đúng là gì?
i + j == n - 1
i - j == 0
j == 0
i == 0
Xét chuỗi S(x, n) = x+2!x2+3!x3+...+n!xn . Khi viết chương trình, biến nào nên dùng để tích lũy giá trị giai thừa tại mỗi vòng lặp để tối ưu hiệu năng?
Lưu toàn bộ giai thừa trong mảng lớn
Gọi hàm pow và factorial mỗi lần
Biến tích lũy factorial và nhân dần
Tính giai thừa bằng đệ quy mỗi bước
Cho số n = 29. Chọn phát biểu đúng về việc kiểm tra n có phải số nguyên tố bằng cách thử chia n cho các số từ 2 đến ⌊√n⌋.
Không cần thử, mọi số lẻ đều nguyên tố
Phải thử từ 2 đến ⌊n/2⌋ mới đúng
Chỉ cần thử từ 2 đến ⌊√n⌋ là đủ
Cần thử tất cả 2 đến n−1 để chắc chắn
Bạn cần xuất bảng cửu chương 2→9 theo định dạng hàng là i từ 1 đến 10, cột là j từ 2 đến 9. Chọn cấu trúc lặp phù hợp để duyệt tất cả ô.
Hai vòng lặp lồng nhau while-do
Một vòng lặp while duy nhất
Một vòng lặp for duy nhất
Hai vòng lặp lồng nhau for-for
Quan sát hình mẫu ở trang, cho n = 5 là chiều cao. Mẫu hình yêu cầu in viền hình vuông bằng dấu “*”. Cấu trúc vòng lặp lồng nhau nào mô tả đúng số lần lặp theo hàng và cột để in viền?
Ba vòng for: i từ 1..n, j từ 1..n, k từ 1..n; chỉ in khi k==1 hoặc k==n
Hai vòng while vô hạn; thoát khi đếm đủ n hàng và n cột
Một vòng for i từ 1..n; in n dấu “*” mỗi dòng bằng toán tử nhân chuỗi
Hai vòng for: i từ 1..n, j từ 1..n; in “*” khi i==1||i==n||j==1||j==n
Cho chuỗi S(x,n) = x+3!x3+5!x5+...+(2n+1)!x2n+1 . Phương án tính đúng giá trị S khi lập trình với n>=0 là gì?
Cộng tất cả lũy thừa xk chia k! với k từ 0..2n+1
Nhân các hạng rồi chia cho tổng các giai thừa để tối ưu
Dùng vòng for k từ 0..n, cộng thêm term = pow(x,2*k+1)/factorial(2*k+1)
Chỉ cộng hai hạng đầu x và x3/3! để xấp xỉ mọi n
Xét đoạn mã sau: done = False; n, m = 0, 100; while not done and n != m: n = int(input()); if n < 0: done = True; print("n =", n). Cách viết lại để loại biến done và vẫn dừng vòng lặp khi n < 0 là gì?
Đổi while thành for với range cố định
Dùng return trong vòng lặp while thay cho print
Dùng break trong if n < 0 và bỏ điều kiện done
Dùng continue khi n < 0 rồi gán n = m
Quan sát đoạn mã: a = 0; while a < 100: print('*', end=''); print(). Biết rằng biến a không thay đổi trong thân vòng lặp, điều gì xảy ra khi chạy và có bao nhiêu dấu '*' được in trước khi chương trình dừng?
In đúng 100 dấu rồi kết thúc bình thường
In vô hạn dấu vì điều kiện luôn đúng
Không in dấu nào vì điều kiện sai ngay
In vài dấu rồi báo lỗi cú pháp
In 99 dấu rồi thoát do điều kiện sai
Cho đoạn mã: for a in range(20, 100, 5): print('*', end=''); print(). Hỏi có bao nhiêu dấu '*' được in ra?
15 dấu vì có 15 bước nhảy
16 dấu vì bao gồm cả 100
14 dấu vì bước nhảy bỏ qua một số cuối
20 dấu vì nhảy từ 0 đến 100
17 dấu vì bao gồm cả 20 đến 100
