Câu 46. Cho biết kết quả của đoạn chương trình sau:
s=0
for i in range(3,10,2):…
s=0
for i in range(3,10,2):
if i%3==0: s=s+i
print(s)
a. 12 b. 42 c. 5 d. 9
Câu 47. Cho biết kết quả của đoạn chương trình sau:
x=2; n=3
t=1
for i in range(3): t=t*x
print(t)
a. 8 b. 6 c. 9 d. 3
Câu 48. Cho biết kết quả của đoạn chương trình sau:
s = 0
for i in range (4,10,2) : s = s*i
print(s)
a. 0 b. 192 c. 18 d. 3
Câu 49. Hãy cho biết kết quả của đoạn chương trình sau:
a=4
if (not a>=5) :
print(“hello”)
else:
print(“bye bye”)
a. hello b. hello bye bye
c. bye bye hello d.bye bye
Câu 50. Hãy cho biết kết quả của đoạn chương trình sau:
a=21 ; b=11
if a%b==0 :
print(“yes”)
esle :
print(“no”)
a. yes b. no c. yes no d. no yes
Câu 51. Cho đoạn chương trình sau:
j=0
for i in range(5):
j=j+i
print(j)
Sau khi thực hiện chương trình giá trị biến j bằng bao nhiêu?
a. 10 b. 15 c. 12 d. 0
Câu 52. Đoạn trương trình sau giải bài toán nào?
t=0
for i in range(1,101):
if(i%3==0) and (i%5==0):
t=t+i
print(t)
a. Tính tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ 1 đến 100
b. Tính tổng các số phạm vi từ 1 đến 100
c. Tính tổng các số chẵn từ 1 đến 100
d. Đếm các số chia hết cho 3 và 5 trong phạm vi từ 1 đến 100
Câu 53: Quan sát chương trình và cho biết chương trình sai ở dòng lệnh nào?
a=int(input(“nhập chiều dài=”))
b=int(input(“nhập chiều rộng=”))
s=a*b
print(“Diện tích hình chữ nhật là=”,S)
a. 1 b.2
c. 3 d. 4
— Câu 46 —
Đề bài: Cho biết kết quả của đoạn chương trình sau:
s=0
for i in range(3,10,2):
if i%3==0: s=s+i
print(s)
Phân tích và lời giải chi tiết (Step-by-step):
- Khởi tạo biến:
- Biến
sđược gán giá trị ban đầu là0.
- Biến
- Vòng lặp
for i in range(3,10,2)::- Lệnh
range(3,10,2)sẽ tạo ra một dãy số bắt đầu từ3, kết thúc trước10, và mỗi số cách nhau2đơn vị. - Các giá trị mà biến
isẽ lần lượt nhận là:3, 5, 7, 9.
- Lệnh
- Thực hiện vòng lặp:
- Lần lặp 1:
i = 3- Kiểm tra điều kiện
if i%3==0(tức là3 % 3 == 0). Điều kiện này làTrue(3 chia hết cho 3). - Thực hiện lệnh
s = s + i. Giá trị mới củassẽ là \(0 + 3 = 3\).
- Kiểm tra điều kiện
- Lần lặp 2:
i = 5- Kiểm tra điều kiện
if i%3==0(tức là5 % 3 == 0). Điều kiện này làFalse(5 không chia hết cho 3, 5 chia 3 dư 2). - Không thực hiện lệnh
s = s + i. Giá trị củasvẫn giữ nguyên là3.
- Kiểm tra điều kiện
- Lần lặp 3:
i = 7- Kiểm tra điều kiện
if i%3==0(tức là7 % 3 == 0). Điều kiện này làFalse(7 không chia hết cho 3, 7 chia 3 dư 1). - Không thực hiện lệnh
s = s + i. Giá trị củasvẫn giữ nguyên là3.
- Kiểm tra điều kiện
- Lần lặp 4:
i = 9- Kiểm tra điều kiện
if i%3==0(tức là9 % 3 == 0). Điều kiện này làTrue(9 chia hết cho 3). - Thực hiện lệnh
s = s + i. Giá trị mới củassẽ là \(3 + 9 = 12\).
- Kiểm tra điều kiện
- Lần lặp 1:
- Kết thúc vòng lặp.
- Lệnh
print(s):- Chương trình in ra giá trị cuối cùng của biến
s, là12.
- Chương trình in ra giá trị cuối cùng của biến
Kết quả cuối cùng: 12
Đáp án đúng: a. 12
— Câu 47 —
Đề bài: Cho biết kết quả của đoạn chương trình sau:
x=2; n=3
t=1
for i in range(3): t=t*x
print(t)
Phân tích và lời giải chi tiết (Step-by-step):
- Khởi tạo biến:
- Biến
xđược gán giá trị2. - Biến
nđược gán giá trị3(biếnnkhông được sử dụng trong vòng lặp này, đây có thể là một biến thừa hoặc dùng để gây nhiễu). - Biến
tđược gán giá trị ban đầu là1.
- Biến
- Vòng lặp
for i in range(3)::- Lệnh
range(3)sẽ tạo ra một dãy số bắt đầu từ0, kết thúc trước3. - Các giá trị mà biến
isẽ lần lượt nhận là:0, 1, 2. Vòng lặp sẽ chạy 3 lần.
- Lệnh
- Thực hiện vòng lặp:
- Lần lặp 1:
i = 0- Thực hiện lệnh
t = t * x. Giá trị mới củatsẽ là \(1 * 2 = 2\).
- Thực hiện lệnh
- Lần lặp 2:
i = 1- Thực hiện lệnh
t = t * x. Giá trị mới củatsẽ là \(2 * 2 = 4\).
- Thực hiện lệnh
- Lần lặp 3:
i = 2- Thực hiện lệnh
t = t * x. Giá trị mới củatsẽ là \(4 * 2 = 8\).
- Thực hiện lệnh
- Lần lặp 1:
- Kết thúc vòng lặp.
- Lệnh
print(t):- Chương trình in ra giá trị cuối cùng của biến
t, là8.
- Chương trình in ra giá trị cuối cùng của biến
Giải thích thêm: Đoạn mã này thực hiện phép tính lũy thừa \(x^3\), với \(x=2\), vậy kết quả là \(2^3 = 8\).
Kết quả cuối cùng: 8
Đáp án đúng: a. 8
— Câu 48 —
Đề bài: Cho biết kết quả của đoạn chương trình sau:
s = 0
for i in range (4,10,2) : s = s*i
print(s)
Phân tích và lời giải chi tiết (Step-by-step):
- Khởi tạo biến:
- Biến
sđược gán giá trị ban đầu là0.
- Biến
- Vòng lặp
for i in range (4,10,2)::- Lệnh
range(4,10,2)sẽ tạo ra một dãy số bắt đầu từ4, kết thúc trước10, và mỗi số cách nhau2đơn vị. - Các giá trị mà biến
isẽ lần lượt nhận là:4, 6, 8.
- Lệnh
- Thực hiện vòng lặp:
- Lần lặp 1:
i = 4- Thực hiện lệnh
s = s * i. Giá trị mới củassẽ là \(0 * 4 = 0\).
- Thực hiện lệnh
- Lần lặp 2:
i = 6- Thực hiện lệnh
s = s * i. Giá trị mới củassẽ là \(0 * 6 = 0\).
- Thực hiện lệnh
- Lần lặp 3:
i = 8- Thực hiện lệnh
s = s * i. Giá trị mới củassẽ là \(0 * 8 = 0\).
- Thực hiện lệnh
- Lần lặp 1:
- Kết thúc vòng lặp.
- Lệnh
print(s):- Chương trình in ra giá trị cuối cùng của biến
s, là0.
- Chương trình in ra giá trị cuối cùng của biến
Giải thích thêm: Bất kỳ số nào nhân với 0 đều bằng 0. Vì biến s được khởi tạo bằng 0, nên dù i có giá trị nào thì s cũng sẽ luôn là 0 sau mỗi phép nhân.
Kết quả cuối cùng: 0
Đáp án đúng: a. 0
— Câu 49 —
Đề bài: Hãy cho biết kết quả của đoạn chương trình sau:
a=4
if (not a>=5) :
print("hello")
else:
print("bye bye")
Phân tích và lời giải chi tiết (Step-by-step):
- Khởi tạo biến:
- Biến
ađược gán giá trị4.
- Biến
- Kiểm tra điều kiện
if (not a>=5)::- Đầu tiên, ta xét biểu thức bên trong dấu ngoặc:
a >= 5. Vớia = 4, biểu thức này trở thành4 >= 5. Kết quả làFalse. - Tiếp theo, ta xét toán tử
not:not False. Kết quả làTrue. - Vì điều kiện của câu lệnh
iflàTrue, nên khối lệnh bên dướiifsẽ được thực thi.
- Đầu tiên, ta xét biểu thức bên trong dấu ngoặc:
- Thực hiện khối lệnh
if:- Lệnh
print("hello")sẽ được thực hiện. - Khối lệnh
elsesẽ bị bỏ qua.
- Lệnh
Kết quả cuối cùng: hello
Đáp án đúng: a. hello
— Câu 50 —
Đề bài: Hãy cho biết kết quả của đoạn chương trình sau:
a=21 ; b=11
if a%b==0 :
print("yes")
esle :
print("no")
Phân tích và lời giải chi tiết (Step-by-step):
- Khởi tạo biến:
- Biến
ađược gán giá trị21. - Biến
bđược gán giá trị11.
- Biến
- Kiểm tra điều kiện
if a%b==0::- Tính toán biểu thức
a % b: \(21 % 11\). Kết quả là10(vì 21 chia 11 được 1 dư 10). - Kiểm tra điều kiện
10 == 0. Điều kiện này làFalse. - Vì điều kiện của câu lệnh
iflàFalse, nên khối lệnh bên dướiifsẽ bị bỏ qua và khối lệnhelsesẽ được thực thi.
- Tính toán biểu thức
- Xác định lỗi cú pháp:
- Tuy nhiên, có một lỗi cú pháp ở dòng
esle :. Từ khóa đúng phải làelse. - Nếu đoạn chương trình này được chạy trong Python, nó sẽ báo lỗi
SyntaxErrordo từ khóaeslekhông hợp lệ. - Trong các bài kiểm tra trắc nghiệm, nếu không có phương án “Lỗi cú pháp”, chúng ta thường ngầm hiểu là cần sửa lỗi cú pháp để đoạn code có thể chạy được. Giả sử ta sửa
eslethànhelse.
- Tuy nhiên, có một lỗi cú pháp ở dòng
- Thực hiện khối lệnh
else(sau khi sửa lỗi cú pháp):- Lệnh
print("no")sẽ được thực hiện.
- Lệnh
Lưu ý quan trọng: Đoạn mã gốc có lỗi cú pháp ở từ khóa “esle”. Nếu chạy trực tiếp sẽ báo lỗi. Tuy nhiên, nếu đề bài mong muốn kết quả khi chương trình hoạt động bình thường (đã sửa lỗi), thì kết quả là “no”. Cô sẽ trả lời theo hướng đã sửa lỗi cú pháp vì các phương án đều là kết quả in ra.
Kết quả cuối cùng (giả sử đã sửa lỗi cú pháp “esle” thành “else”): no
Đáp án đúng: b. no
— Câu 51 —
Đề bài: Cho đoạn chương trình sau:
j=0
for i in range(5):
j=j+i
print(j)
Sau khi thực hiện chương trình giá trị biến j bằng bao nhiêu?
Phân tích và lời giải chi tiết (Step-by-step):
- Khởi tạo biến:
- Biến
jđược gán giá trị ban đầu là0.
- Biến
- Vòng lặp
for i in range(5)::- Lệnh
range(5)sẽ tạo ra một dãy số nguyên bắt đầu từ0và kết thúc trước5. - Các giá trị mà biến
isẽ lần lượt nhận là:0, 1, 2, 3, 4.
- Lệnh
- Thực hiện vòng lặp:
- Lần lặp 1:
i = 0- Thực hiện lệnh
j = j + i. Giá trị mới củajsẽ là \(0 + 0 = 0\).
- Thực hiện lệnh
- Lần lặp 2:
i = 1- Thực hiện lệnh
j = j + i. Giá trị mới củajsẽ là \(0 + 1 = 1\).
- Thực hiện lệnh
- Lần lặp 3:
i = 2- Thực hiện lệnh
j = j + i. Giá trị mới củajsẽ là \(1 + 2 = 3\).
- Thực hiện lệnh
- Lần lặp 4:
i = 3- Thực hiện lệnh
j = j + i. Giá trị mới củajsẽ là \(3 + 3 = 6\).
- Thực hiện lệnh
- Lần lặp 5:
i = 4- Thực hiện lệnh
j = j + i. Giá trị mới củajsẽ là \(6 + 4 = 10\).
- Thực hiện lệnh
- Lần lặp 1:
- Kết thúc vòng lặp.
- Lệnh
print(j):- Chương trình in ra giá trị cuối cùng của biến
j, là10.
- Chương trình in ra giá trị cuối cùng của biến
Giải thích thêm: Đoạn mã này tính tổng của các số từ 0 đến 4, tức là \(0 + 1 + 2 + 3 + 4 = 10\).
Kết quả cuối cùng: 10
Đáp án đúng: a. 10
— Câu 52 —
Đề bài: Đoạn trương trình sau giải bài toán nào?
t=0
for i in range(1,101):
if(i%3==0) and (i%5==0):
t=t+i
print(t)
Phân tích và lời giải chi tiết (Step-by-step):
- Khởi tạo biến:
- Biến
tđược gán giá trị ban đầu là0. Đây là biến dùng để lưu trữ kết quả cuối cùng.
- Biến
- Vòng lặp
for i in range(1,101)::- Lệnh
range(1,101)sẽ tạo ra một dãy số nguyên bắt đầu từ1và kết thúc tại100(không bao gồm 101). - Tức là, biến
isẽ lần lượt nhận các giá trị từ 1 đến 100.
- Lệnh
- Điều kiện
if(i%3==0) and (i%5==0)::- Điều kiện này kiểm tra xem số
icó chia hết cho3hay không (i%3==0) VÀ có chia hết cho5hay không (i%5==0). - Việc một số chia hết cho cả 3 và 5 có nghĩa là nó chia hết cho bội chung nhỏ nhất của 3 và 5, tức là 15.
- Điều kiện này kiểm tra xem số
- Thao tác
t=t+i:- Nếu điều kiện trên đúng (tức là
ichia hết cho cả 3 và 5), thì giá trị củaisẽ được cộng dồn vào biếnt.
- Nếu điều kiện trên đúng (tức là
- Kết thúc chương trình:
- Sau khi vòng lặp kết thúc, lệnh
print(t)sẽ in ra tổngtcủa tất cả các sốitrong khoảng từ 1 đến 100 mà chia hết cho cả 3 và 5.
- Sau khi vòng lặp kết thúc, lệnh
Tổng hợp ý nghĩa của chương trình:
Đoạn chương trình này tính tổng của các số nguyên trong phạm vi từ 1 đến 100 mà đồng thời chia hết cho 3 và 5.
Phân tích các đáp án:
- a. Tính tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ 1 đến 100: Sai, điều kiện là
and(và), không phảior(hoặc). - b. Tính tổng các số phạm vi từ 1 đến 100: Sai, chương trình chỉ cộng những số thỏa mãn điều kiện, không phải tất cả các số.
- c. Tính tổng các số chẵn từ 1 đến 100: Sai, điều kiện kiểm tra chia hết cho 3 và 5, không phải số chẵn.
- d. Đếm các số chia hết cho 3 và 5 trong phạm vi từ 1 đến 100: Đáp án này đúng về phần điều kiện “chia hết cho 3 và 5” và phạm vi “từ 1 đến 100”. Tuy nhiên, chương trình đang thực hiện phép “Tính tổng” (
t=t+i), chứ không phải “Đếm” (nếu là đếm thì sẽ làt=t+1). Dù vậy, trong các lựa chọn được đưa ra, đây là lựa chọn mô tả đúng nhất tập hợp các số mà chương trình đang xử lý.
Kết luận: Mặc dù có sự không chính xác nhỏ ở từ “Đếm” thay vì “Tính tổng”, nhưng đáp án d là đáp án gần đúng nhất và mô tả chính xác nhất về tập hợp các số được chọn để xử lý.
Đáp án đúng: d.
— Câu 53 —
Đề bài: Quan sát chương trình và cho biết chương trình sai ở dòng lệnh nào?
a=int(input("nhập chiều dài="))
b=int(input("nhập chiều rộng="))
s=a*b
print("Diện tích hình chữ nhật là=",S)
Phân tích và lời giải chi tiết (Step-by-step):
- Dòng 1:
a=int(input("nhập chiều dài="))- Đây là lệnh đúng cú pháp để nhập một chuỗi từ bàn phím và chuyển đổi nó thành số nguyên, sau đó gán cho biến
a. Không có lỗi.
- Đây là lệnh đúng cú pháp để nhập một chuỗi từ bàn phím và chuyển đổi nó thành số nguyên, sau đó gán cho biến
- Dòng 2:
b=int(input("nhập chiều rộng="))- Tương tự dòng 1, đây là lệnh đúng cú pháp để nhập và gán giá trị số nguyên cho biến
b. Không có lỗi.
- Tương tự dòng 1, đây là lệnh đúng cú pháp để nhập và gán giá trị số nguyên cho biến
- Dòng 3:
s=a*b- Đây là lệnh đúng cú pháp để tính tích của
avàb, sau đó gán kết quả cho biếns. Không có lỗi.
- Đây là lệnh đúng cú pháp để tính tích của
- Dòng 4:
print("Diện tích hình chữ nhật là=",S)- Tại dòng này, biến được sử dụng là
S(chữ cái S in hoa). - Tuy nhiên, biến lưu trữ kết quả diện tích được định nghĩa ở dòng 3 là
s(chữ cái s in thường). - Python là ngôn ngữ phân biệt chữ hoa, chữ thường (case-sensitive). Do đó,
svàSlà hai biến hoàn toàn khác nhau. - Khi chương trình cố gắng in giá trị của biến
S(chữ hoa), Python sẽ không tìm thấy biến này và sẽ báo lỗiNameError: name 'S' is not defined(Lỗi tên: tên ‘S’ chưa được định nghĩa).
- Tại dòng này, biến được sử dụng là
Kết luận: Lỗi xảy ra ở dòng 4 do sử dụng sai tên biến (S thay vì s).
Đáp án đúng: d. 4
Chúc mừng các em đã hoàn thành các bài tập! Qua đây, chúng ta đã ôn lại cách thức hoạt động của vòng lặp for, câu lệnh điều kiện if-else, toán tử số học, toán tử logic, và đặc biệt là tầm quan trọng của việc cẩn thận với cú pháp và phân biệt chữ hoa/thường trong Python. Hãy tiếp tục luyện tập để trở thành những lập trình viên giỏi nhé!
Câu 46.
Cho biết kết quả của đoạn chương trình sau:
s = 0
for i in range(3, 10, 2):
if i % 3 == 0 : s = s + i
print(s)
=> i = 3 => i % 3 == 0 => đúng => s = 0 + 3 = 3
=> i = 5 => i % 3 == 0 => sai
=> i = 7 => i % 3 == 0 => sai
=> i = 9 => i % 3 == 9 => đúng => s = 3 + 9 = 12
=> Đáp án : A. 12
Câu 47.
Cho biết kết quả của đoạn chương trình sau:
x = 2; n = 3
t = 1
for i in range(3) : t = t * x
print(t)
=> i = 0 => t = 1 * 2 = 2
=> i = 1 => t = 2 * 2 = 4
=> i = 2 => t = 4 * 2 = 8
=> Đáp án : A. 8
Câu 48.
Cho biết kết quả của đoạn chương trình sau:
s = 0
for i in range (4, 10, 2) : s = s * i
print(s)
=> s = 0 => s = s * i = 0
=> số bất kì nhân với 0 đều bằng 0
=> Đáp án : A. 0
Câu 49.
Hãy cho biết kết quả của đoạn chương trình sau:
a = 4
if (not a >= 5) :
print(“hello”)
else:
print(“bye bye”)
=> 4 >= 5 => False
=> not False => True
=> print(“hello”)
=> Đáp án : A. hello
Câu 50.
Hãy cho biết kết quả của đoạn chương trình sau:
a = 21; b = 11
if a % b == 0 : print(“yes”)
esle : print(“no”)
=> 21 % 11 = 0 => sai
=> thực hiện lệnh sau else
=> Đáp án : B. no
Câu 51.
Cho đoạn chương trình sau:
j = 0
for i in range(5):
j = j + i
print(j)
Sau khi thực hiện chương trình giá trị biến j bằng bao nhiêu?
=> biến i lặp từ 0 đến 4
=> j = j + i : tổng từ 0 đến 4 : 0 + 1 + 2 + … + 4
=> Đáp án : A. 10
Câu 52.
Đoạn trương trình sau giải bài toán nào?
t = 0
for i in range(1, 101):
if(i % 3 == 0) and (i %5 == 0):
t = t + i
print(t)
=> i từ 1 đến 100
=> i chia hết cho 3 và cho 5
=> t = t + i : tổng các số chia hết cho 3 và 5
=> Đáp án : Tổng các số chia hết cho 3 và 5 trong phạm vi từ 1 đến 100
Câu 53 :
Quan sát chương trình và cho biết chương trình sai ở dòng lệnh nào?
a=int(input(“nhập chiều dài=”))
b=int(input(“nhập chiều rộng=”))
s = a * b
print(“Diện tích hình chữ nhật là =”, S)
=> Sai ở dòng 4
=> Python phân biệt chữ ho thường
=> Nên s và S là hai biến hoàn toàn khác nhau
=> Đáp án : D. 4
Câu 46. Cho biết kết quả của đoạn chương trình sau:
s=0
for i in range(3,10,2):
if i%3==0: s=s+i
print(s)
a. 12 b. 42 c. 5 d. 9
Câu 47. Cho biết kết quả của đoạn chương trình sau:
x=2; n=3
t=1
for i in range(3): t=t*x
print(t)
a. 8 b. 6 c. 9 d. 3
Câu 48. Cho biết kết quả của đoạn chương trình sau:
s = 0
for i in range (4,10,2) : s = s*i
print(s)
a. 0 b. 192 c. 18 d. 3
Câu 49. Hãy cho biết kết quả của đoạn chương trình sau:
a=4
if (not a>=5) :
print(“hello”)
else:
print(“bye bye”)
a. hello b. hello bye bye
c. bye bye hello d.bye bye
vì a = 4 ở ngay phần gán giá trị
Câu 50. Hãy cho biết kết quả của đoạn chương trình sau:
a=21 ; b=11
if a%b==0 :
print(“yes”)
esle :
print(“no”)
a. yes b. no c. yes no d. no yes
vì a không chia hết cho b
Câu 51. Cho đoạn chương trình sau:
j=0
for i in range(5):
j=j+i
print(j)
Sau khi thực hiện chương trình giá trị biến j bằng bao nhiêu?
a. 10 b. 15 c. 12 d. 0
Câu 52. Đoạn trương trình sau giải bài toán nào?
t=0
for i in range(1,101):
if(i%3==0) and (i%5==0):
t=t+i
print(t)
a. Tính tổng các số chia hết cho 3 hoặc 5 trong phạm vi từ 1 đến 100
b. Tính tổng các số phạm vi từ 1 đến 100
c. Tính tổng các số chẵn từ 1 đến 100
d. Đếm các số chia hết cho 3 và 5 trong phạm vi từ 1 đến 100
Câu 53: Quan sát chương trình và cho biết chương trình sai ở dòng lệnh nào?
a=int(input(“nhập chiều dài=”))
b=int(input(“nhập chiều rộng=”))
s=a*b
print(“Diện tích hình chữ nhật là=”,S)
a. 1 b.2
c. 3 d. 4
Vì s = a*b
và S này là viết in hoa