Cùng DapAnHay nhận biết một số lỗi trong quá trình thực hiện chương trình Python để biết cách xử lí các lỗi đó. Qua nội dung bài giảng của Bài 29: Nhận biết lỗi chương trình nằm trong chủ đề 5 Giải quyết vấn đề với sự trợ giúp của máy tính dưới đây. Mời các em cùng tham khảo!
Xét các trường hợp sau để xác định các trường hợp lỗi chương trình thường gặp
- Trường hợp 1. Người lập trình viết sai cú pháp lệnh, chương trình lập tức dừng lại và thông báo lỗi cú pháp.
Xét ví dụ trên ta thấy khi bị sai cú pháp chương trình dừng và thông báo lỗi Syntax Error (lỗi cú pháp)
- Trường hợp 2. Người dùng nhập dữ liệu sai, chương trình thông báo lỗi nhập dữ liệu không đúng khuôn dạng.
Qua ví dụ ta thấy khi người dùng nhập dữ liệu sai, hàm int() không thể thực hiện được, chương trình dừng lại và báo lỗi. Mã lỗi là ValueError. Đây là lỗi Runtime (lỗi trong khi đang thực hiện) hay còn gọi là lỗi ngoại lệ (Exceptions error)
- Trường hợp 3. Chương trình thông báo lỗi chì số vượt quá giới hạn cho phép.
Array_b1.py
Khi chạy chương trình sẽ báo lỗi
Quan sát ví dụ trên, chương trình phát hiện lỗi chỉ số vượt qua giới hạn tại dòng 3. Chương trình dừng và báo lỗi. Mã lỗi là IndexError. Đây là lỗi Runtime
- Trường hợp 4. Chương trình thực hiện bình thường nhưng kết quả không đúng với yêu cầu của bài toán. Đây là lỗi logic bên trong chương trình.
+ Ta thấy trong ví dụ trên chương trình cho kết quả là 3 mà kết quả đúng là 1 + 2 + 3 = 6. Vì hàm range(3) trả lại vùng giá trị là 0, 1 , 2 chứ không phải là 1, 2, 3.
+ Trong chương trình không còn lỗi Runtime, nhưng kết quả đưa ra sai. Không có mã lỗi nào được trả lại. Đây là lỗi ngữ nghĩa hoặc lỗi logic bên trong chương trình.
- Tổng thể có thể phân biệt lỗi chương trình Python làm ba loại: 1. Lỗi khi có lệnh viết sai cú pháp hoặc sai cấu trúc ngôn ngữ Python quy định. Chương trình sẽ lập tức dừng và thông báo lỗi Syntax Error. 2. Lỗi khi không thể thực hiện một lệnh trong chương trình, Chương trình dừng lại và thông báo một mã lỗi. Lỗi này gọi lỗi ngoại lệ (Exceptions Error), mã lỗi trả lại gọi là mã lỗi ngoại lệ. 3. Chương trình chạy không lỗi ngoại lệ, nhưng kết quả đưa ra sai, không chính xác. Đây là lỗi lôgic bên trong chương trình. - Với mỗi loại lỗi trên, cách xử lý và kiểm soát lỗi sẽ khác nhau. |
---|
- Nếu gặp lỗi ngoại lệ, chương trình Python sẽ dừng lại, báo lỗi.
- Mỗi lỗi ngoại lệ sẽ sinh ra một mã lỗi riêng biệt. Thông qua mã lỗi để biết cách xử lí các lỗi này
- Một số mã lỗi ngoại lệ thường gặp
Mã lỗi ngoại lệ | Mô tả lỗi |
ZeroDivisionError | Lỗi này xảy ra khi lệnh thực hiện phép chia cho giá trị 0. |
IndexError | Lỗi xảy ra khi lệnh cố gắng truy cập phần tử của danh sách nhưng chỉ số vượt quá giới hạn. |
NameError | Lỗi xảy ra khi chương trình muốn tìm một tên nhưng không thấy. Ví dụ khi lệnh gọi một hàm nhưng không có hàm đó. |
TypeError | Lỗi kiểu dữ liệu. Một số ví dụ lỗi loại này: - Lệnh truy câp một phần tử của danh sách nhưng chỉ số không là số nguyên. - Lệnh tính biểu thức số nhưng lại có một toán hạng không phải là số. |
ValueError | Lỗi liên quan đến giá trị của đối tượng. Lỗi khi thực hiện lệnh chuyển đổi kiểu dữ liệu, đối số của hàm có giá trị mà hàm không hỗ trợ. Ví dụ khi thực hiện lệnh int("1.55") sẽ sinh lỗi loại này. |
IndentationError | Lỗi khi các dòng lệnh thụt vào không thằng hàng hoặc không đúng vị trí. |
SyntaxError | Lỗi cú pháp. |
- Ví dụ: Một số mã lỗi trong thực tế
+ Mã lỗi IndexError:
+ Mã lỗi ValueError
Bài tập 1: Theo em nếu chương trình có lỗi, thì các lỗi này sẽ như thế nào và có thể ở đâu?
Hướng dẫn giải:
Các lỗi có thể là:
- Lỗi khi có lệnh viết sai cú pháp hoặc sai cấu trúc ngôn ngữ python quy định. Chương trình sẽ lập tức dừng lại và thông báo lỗi Syntax Error
- Lỗi khi không thể thực hiện một lệnh trong chương trình. Chương trình sẽ dừng lại và thông báo một mã lỗi. Lỗi ngoại lệ.
- Chương trình chạy không lỗi ngoại lệ nhưng kết quả đưa ra sai, không chính xác. Lỗi lôgic
Bài tập 2: Các lệnh sau khi thực hiện có thể sinh lỗi không? Nêu có thì lỗi có thể là gì?
1. n = int(input("Nhập số nguyên n: "))
2. if prime(n):
3. print(n, "là số nguyên tố")
4. else:
5. print(n, "là hợp số")
Hướng dẫn giải:
- Lệnh 1 có thể phát sinh lỗi ValueError khi người dùng nhập dữ liệu chưa chính xác.
- Lệnh 3 có thể phát sinh lỗi NameError khi hàm prime() chưa được xác định nghĩa.
- Kết quả của chương trình có thể sai nếu hàm prime() không được viết chính xác. Khi đó chương trình có lỗi logic bên trong.
Qua bài học các em cần nắm được các về:
- Biết và phân loại được một số loại lỗi chương trình.
- Biết được một vài lỗi ngoại lệ thường gặp.
Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 10 Kết nối tri thức Chủ đề 5 Bài 29 cực hay có đáp án và lời giải chi tiết.
Lỗi chương trình Python thường có bao nhiêu loại?
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 nhập 1.5 thì chương trình có lỗi ngoại lệ nào?
Các lệnh sau sẽ phát sinh lỗi ngoại lệ nào?
>>> s = "abc"
>>> s[10]
Câu 4-10: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
Các em có thể xem thêm phần hướng dẫn Giải bài tập Tin học 10 Kết nối tri thức Chủ đề 5 Bài 29để giúp các em nắm vững bài học và các phương pháp giải bài tập.
Khởi động trang 141 SGK Tin học 10 Kết nối tri thức - KNTT
Hoạt động 1 trang 141 SGK Tin học 10 Kết nối tri thức - KNTT
Câu hỏi mục 1 trang 142 SGK Tin học 10 Kết nối tri thức - KNTT
Hoạt động 2 trang 143 SGK Tin học 10 Kết nối tri thức - KNTT
Câu hỏi mục 2 trang 143 SGK Tin học 10 Kết nối tri thức - KNTT
Luyện tập trang 144 SGK Tin học 10 Kết nối tri thức - KNTT
Vận dụng trang 144 SGK Tin học 10 Kết nối tri thức - KNTT
Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học DapAnHay sẽ hỗ trợ cho các em một cách nhanh chóng!
Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!
-- Mod Tin Học 10 DapAnHay
Lỗi chương trình Python thường có bao nhiêu loại?
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 nhập 1.5 thì chương trình có lỗi ngoại lệ nào?
Các lệnh sau sẽ phát sinh lỗi ngoại lệ nào?
>>> s = "abc"
>>> s[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?
IndentationError là lỗi ngoại lệ như thế nào?
Đoạn chương trình sau có lỗi không? Nếu có thì lỗi thuộc loại nào?
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)
Lỗi ngoại lệ trong Python là gì?
Chương trình sẽ lập tức dừng và thông báo lỗi Syntax Error đây là lỗi gì trong chương trình Python?
Chương trình sau thuộc lỗi loại nào?
A = [1, 2, 3]
for i in range(4):
print(A[i])
Lệnh sau có lỗi thuộc loại nào?
123ab = {1, 2, 3]
print(123ab)
Một chương trình hoàn chỉnh được mô tả như Hình 29.1: Tiếp nhận các dữ liệu đầu vào, xử lí theo yêu cầu bài toán và đưa ra kết quả đúng theo yêu cầu. Theo em nếu chương trình có lỗi, thì các lỗi này sẽ như thế nào và có thể ở đâu?
Quan sát các trường hợp chương trình gặp lỗi như sau, từ đó nhận biết và phân biệt một số loại lỗi của chương trình.
1. Khi gõ sai cú pháp một lệnh, chương trình sẽ dừng lại và báo lỗi, đó là lỗi loại gì?
2. 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, 0]. Kết quả thu được dãy [1, 3, 8, 10, 0]. Chương trình có lỗi không? Nếu có thì lỗi đó thuộc loại gì?
Đọc, thảo luận để nhận biết một số lỗi ngoại lệ thường gặp trong chương trình Python.
Hãy nêu mã ngoại lệ của mỗi lệnh sau nếu xảy ra lỗi.
1. Các lệnh sau có sinh lỗi chương trình không? Nếu có thì mã lỗi là gì?
2. Để tính giá trị trung bình của một danh sách số A người lập trình đã dùng lệnh sau để tính:
gttb = sum(A)/len(A)
Lệnh này có thể sinh lỗi ngoại lệ không? Nếu có thì những lỗi gì?
1. Giả sử em được yêu cầu viết một chương trình nhập số tự nhiên n từ bàn phím, kết quả đưa ra là danh sách các ước số thực sự của n, tính cả 1 và không tính n. Hãy viết chương trình và kiểm tra các khả năng sinh lỗi khi thực hiện chương trình.
2. Ví dụ về một chương trình khi chạy sinh mã lỗi NameError.
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *