Bài 29 Nhận biết lỗi chương trình
Lớp 10Tin Học15 câu hỏiBài tập
Phần 1
Câu 1
(Câu 29.1 trang 59 SBT Tin học 10) Xác định loại lỗi của câu lệnh sau:
>>> A = list(12)
>>> A = list(12)
ALỗi ngoại lệ.
BLỗi cú pháp.
CLỗi khác.
DKhông có lỗi.
Câu 2
(Câu 29.2 trang 60 SBT Tin học 10) Lệnh sau có lỗi không? Nếu có thì lỗi thuộc loại nào?
123ab = {1,2,3]
print(123ab)
123ab = {1,2,3]
print(123ab)
ALỗi cú pháp.
BLỗi ngoại lệ.
CLỗi khác.
DKhông có lỗi.
Câu 3
(Câu 29.3 trang 60 SBT Tin học 10) Lỗi ngoại lệ trong Python là lỗi gì?
ALỗi khi không thể thực hiện một lệnh nào đó của chương trình.
BLỗi khi viết một câu lệnh sai cú pháp của ngôn ngữ lập trình.
CLỗi khi truy cập một biến chưa được khai báo.
DLỗi khi chương trình biên dịch sang tệp exe.
Câu 4
(Câu 29.7 trang 60 SBT Tin học 10) Trong lời gọi hàm, nếu các đối số được truyền vào hàm bị thiếu thì lỗi ngoại lệ phát sinh thuộc loại nào dưới đây?
ATypeError.
BSyntaxError.
CNameError.
DKhông phát sinh lỗi ngoại lệ.
Câu 5
(Câu 29.8 trang 60 SBT Tin học 10) Các lệnh sau sẽ phát sinh lỗi ngoại lệ nào?
>>> s = "abc"
>>> s[10]
>>> s = "abc"
>>> s[10]
AIndexError.
BSyntaxError.
CNameError.
DTypeError.
Câu 6
(Câu 29.9 trang 60 SBT Tin học 10) Giả sử chương trình có lệnh nhập dữ liệu sau:
n = int(input("Nhập số nguyên n: "))
Khi chúng ta nhập 1.5 thì chương trình có lỗi ngoại lệ không? Đó là lỗi ngoại lệ nào?
n = int(input("Nhập số nguyên n: "))
Khi chúng ta nhập 1.5 thì chương trình có lỗi ngoại lệ không? Đó là lỗi ngoại lệ nào?
ACó, đó là lỗi ValueError.
BCó, đó là lỗi SyntaxError.
CCó, đó là lỗi TypeError.
DCó, đó là lỗi IndexError.
Phần 2
Câu 1
(Câu 29.4 trang 60 SBT Tin học 10) Xét chương trình sau:
A = [1,2,3]
for i in range(4):
print(A[i])
Nhận định nào sau đây đúng hoặc sai?
A = [1,2,3]
for i in range(4):
print(A[i])
Nhận định nào sau đây đúng hoặc sai?
a)Chương trình có lỗi.
b)Danh sách A có 3 phần tử với các chỉ số hợp lệ là 0, 1, 2.
c)Vòng lặp range(4) làm i lần lượt nhận các giá trị 0, 1, 2, 3.
d)Khi i = 3, lệnh A[i] vẫn truy cập được phần tử hợp lệ của danh sách A.
Câu 2
(Câu 29.4 trang 60 SBT Tin học 10) Về lỗi trong chương trình truy cập danh sách A = [1,2,3] với vòng lặp for i in range(4), nhận định nào sau đây đúng hoặc sai?
a)Lỗi xảy ra khi chương trình cố truy cập A[3].
b)Đây là lỗi ngoại lệ vì cú pháp chương trình không sai nhưng khi chạy có thao tác không thực hiện được.
c)Có thể sửa bằng cách thay range(4) thành range(3).
d)Đây là lỗi cú pháp vì câu lệnh for luôn không được phép dùng với range().
Câu 3
(Câu 29.5 trang 60 SBT Tin học 10) Xét chương trình sau:
n = 10
for i in range(n):
Print(i, end = " ")
Nhận định nào sau đây đúng hoặc sai?
n = 10
for i in range(n):
Print(i, end = " ")
Nhận định nào sau đây đúng hoặc sai?
a)Chương trình có lỗi.
b)Trong Python, tên hàm phân biệt chữ hoa và chữ thường.
c)Hàm đúng để in dữ liệu ra màn hình là print(), không phải Print().
d)Chương trình không có lỗi vì Print() và print() là hai cách viết hoàn toàn giống nhau trong Python.
Câu 4
(Câu 29.5 trang 60 SBT Tin học 10) Về loại lỗi trong chương trình dùng Print(i, end = " "), nhận định nào sau đây đúng hoặc sai?
a)Lỗi này phát sinh khi chương trình được thực hiện.
b)Đây là lỗi ngoại lệ vì tên Print chưa được định nghĩa.
c)Lỗi này có thể thuộc loại NameError.
d)Đây là lỗi ngữ nghĩa vì chương trình vẫn chạy bình thường và cho kết quả sai.
Câu 5
(Câu 29.6 trang 60 SBT Tin học 10) Xét đoạn chương trình sau:
n = input("Nhập số tự nhiên n: ")
k = int(input("Nhập số lần cần nhân lên: "))
print("Kết quả là:", n*k)
Nhận định nào sau đây đúng hoặc sai?
n = input("Nhập số tự nhiên n: ")
k = int(input("Nhập số lần cần nhân lên: "))
print("Kết quả là:", n*k)
Nhận định nào sau đây đúng hoặc sai?
a)Chương trình có lỗi về ngữ nghĩa nếu mục đích là tính kết quả nhân hai số.
b)Lệnh input() trả về dữ liệu kiểu xâu kí tự.
c)Biểu thức n*k với n là xâu và k là số nguyên sẽ lặp lại xâu n k lần.
d)Chương trình chắc chắn có lỗi cú pháp nên không thể chạy được.
Câu 6
(Câu 29.6 trang 60 SBT Tin học 10) Về cách sửa chương trình nhập n và k rồi in kết quả n*k theo nghĩa phép nhân số học, nhận định nào sau đây đúng hoặc sai?
a)Cần chuyển n sang kiểu số, ví dụ n = int(input("Nhập số tự nhiên n: ")).
b)Cần chuyển k sang kiểu số nguyên bằng int(input(...)).
c)Sau khi n và k đều là số nguyên, biểu thức n*k sẽ cho kết quả nhân số học.
d)Để sửa lỗi, chỉ cần thay print thành Print.
Câu 7
(Câu 29.10 trang 61 SBT Tin học 10) Bài toán yêu cầu sắp xếp dãy số ban đầu thành dãy tăng dần. Giả sử dãy số ban đầu là [3, 1, 8, 10, 5], kết quả thu được là [1, 3, 8, 5, 10]. Nhận định nào sau đây đúng hoặc sai?
a)Chương trình có lỗi vì kết quả thu được chưa phải là dãy tăng dần.
b)Kết quả đúng sau khi sắp xếp tăng dần phải là [1, 3, 5, 8, 10].
c)Đây là lỗi ngữ nghĩa bên trong chương trình, không phải lỗi ngoại lệ.
d)Đây là lỗi cú pháp vì danh sách [1, 3, 8, 5, 10] không được phép xuất hiện trong Python.
Câu 8
(Câu 29.11 trang 61 SBT Tin học 10) Xét đoạn chương trình:
n = int(input("Nhập số nguyên n: "))
if prime(n):
print(n, "là số nguyên tố")
else:
print(n,"là hợp số")
Nhận định nào sau đây đúng hoặc sai?
n = int(input("Nhập số nguyên n: "))
if prime(n):
print(n, "là số nguyên tố")
else:
print(n,"là hợp số")
Nhận định nào sau đây đúng hoặc sai?
a)Lệnh n = int(input(...)) có thể phát sinh lỗi ValueError nếu người dùng nhập dữ liệu không chuyển được thành số nguyên.
b)Lệnh if prime(n): có thể phát sinh lỗi NameError nếu hàm prime() chưa được định nghĩa.
c)Nếu hàm prime() được viết sai thuật toán thì chương trình có thể cho kết quả sai dù không phát sinh lỗi cú pháp.
d)Chương trình trên luôn chạy đúng trong mọi trường hợp, không thể phát sinh lỗi.
Câu 9
(Câu 29.11 trang 61 SBT Tin học 10) Về các loại lỗi có thể gặp trong chương trình kiểm tra số nguyên tố ở Câu 29.11, nhận định nào sau đây đúng hoặc sai?
a)Nhập dữ liệu không phù hợp cho int(input(...)) có thể gây lỗi ngoại lệ.
b)Gọi hàm prime(n) khi chưa định nghĩa hàm prime có thể gây lỗi ngoại lệ.
c)Hàm prime() viết sai nhưng chương trình vẫn chạy và cho kết quả sai là lỗi lôgic/ngữ nghĩa.
d)Mọi lỗi trong chương trình Python đều là lỗi cú pháp.