Mọi lập trình viên đều gặp phải lỗi, cả những người mới bắt đầu và những người đã lập trình trong nhiều năm. Đôi khi gặp lỗi và ngoại lệ có thể rất khó chịu và có thể khiến việc viết mã giống như một nỗ lực vô vọng. Tuy nhiên, hiểu được các loại lỗi khác nhau là gì và khi nào bạn có thể gặp phải chúng có thể giúp ích rất nhiều. Khi bạn biết lý do tại sao bạn gặp phải một số loại lỗi nhất định, chúng sẽ trở nên dễ sửa hơn nhiều
mục tiêu
- Để có thể đọc truy nguyên và xác định các mẩu thông tin liên quan sau đây
- Tệp, chức năng và số dòng xảy ra lỗi
- Loại lỗi
- Thông báo lỗi
- Để có thể mô tả các loại tình huống xảy ra các lỗi sau
3 và--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
4--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
5--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
6 và--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
7--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
8--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
Giải phẫu của một lỗi
Lỗi trong Python có một dạng rất cụ thể, được gọi là dấu vết. Hãy kiểm tra một
from errors_01 import favorite_ice_cream
favorite_ice_cream[]
---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
Tracback cụ thể này có hai cấp độ. Bạn có thể xác định số cấp độ bằng cách tìm số mũi tên ở phía bên tay trái. Trong trường hợp này
- Đầu tiên hiển thị mã từ ô bên trên, với một mũi tên chỉ đến Dòng 2 [là
9]--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
- Dòng thứ hai hiển thị một số mã trong một chức năng khác [______90, nằm trong tệp
1], với một mũi tên chỉ đến Dòng 7 [làdef some_function[] msg = "hello, world!" print msg return msg
2]def some_function[] msg = "hello, world!" print msg return msg
Cấp độ cuối cùng là nơi thực sự xảy ra lỗi. [Các] cấp độ khác cho biết chương trình đã thực hiện chức năng nào để xuống cấp độ tiếp theo. Vì vậy, trong trường hợp này, trước tiên chương trình thực hiện lệnh gọi hàm tới hàm
def some_function[]
msg = "hello, world!"
print msg
return msg
0. Bên trong chức năng này, chương trình đã gặp lỗi ở Dòng 7, khi nó cố chạy mã def some_function[]
msg = "hello, world!"
print msg
return msg
2Truy nguyên dài
Đôi khi, bạn có thể thấy một truy nguyên rất dài – đôi khi chúng thậm chí có thể sâu tới 20 cấp độ. Điều này có thể làm cho nó giống như một điều gì đó khủng khiếp đã xảy ra, nhưng thực sự nó chỉ có nghĩa là chương trình của bạn đã gọi nhiều chức năng trước khi gặp lỗi. Hầu hết thời gian, bạn chỉ có thể chú ý đến mức thấp nhất, đó là nơi thực sự xảy ra lỗi
Vậy thực sự chương trình đã gặp phải lỗi gì?
Nếu bạn gặp lỗi và không biết nó có nghĩa là gì, điều quan trọng vẫn là đọc kỹ phần truy nguyên. Bằng cách đó, nếu bạn sửa lỗi nhưng gặp một lỗi mới, bạn có thể biết rằng lỗi đã thay đổi. Ngoài ra, đôi khi chỉ cần biết lỗi xảy ra ở đâu là đủ để sửa lỗi, ngay cả khi bạn không hoàn toàn hiểu thông báo
Nếu bạn gặp lỗi mà bạn không nhận ra, hãy thử xem tài liệu chính thức về lỗi. Tuy nhiên, lưu ý rằng không phải lúc nào bạn cũng có thể tìm thấy lỗi ở đó, vì có thể tạo lỗi tùy chỉnh. Trong trường hợp đó, hy vọng thông báo lỗi tùy chỉnh đủ thông tin để giúp bạn tìm ra lỗi đã xảy ra
Thách đấu. đọc thông báo lỗi
Đọc truy nguyên bên dưới và xác định các mẩu thông tin sau về nó
- Tracback có bao nhiêu cấp độ?
- Tên tệp xảy ra lỗi là gì?
- Tên chức năng xảy ra lỗi là gì?
- Lỗi xảy ra ở dòng nào trong chức năng này?
- Loại lỗi là gì?
- Thông báo lỗi là gì?
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
5---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
Lỗi cú pháp
Khi bạn quên dấu hai chấm ở cuối dòng, vô tình thêm quá nhiều khoảng trắng khi thụt lề dưới câu lệnh
def some_function[]
msg = "hello, world!"
print msg
return msg
6 hoặc quên dấu ngoặc đơn, bạn sẽ gặp lỗi cú pháp. Điều này có nghĩa là Python không thể tìm ra cách đọc chương trình của bạn. Điều này tương tự như quên dấu câu trong tiếng Anhvăn bản này rất khó đọc không có dấu chấm câu cũng không có cách viết hoa tại sao lại khó như vậy bởi vì bạn phải tìm ra vị trí kết thúc của mỗi câu bạn cũng phải tìm ra vị trí bắt đầu của mỗi câu ở một mức độ nào đó có thể không rõ ràng nếu có
Mọi người thường có thể tìm ra ý nghĩa của văn bản mà không có dấu chấm câu, nhưng mọi người thông minh hơn nhiều so với máy tính. Nếu Python không biết cách đọc chương trình, nó sẽ bỏ cuộc và báo lỗi cho bạn. Ví dụ
def some_function[]
msg = "hello, world!"
print msg
return msg
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
9Ở đây, Python cho chúng ta biết rằng có một
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
3 trên dòng 1, và thậm chí còn đặt một mũi tên nhỏ ở nơi có vấn đề. Trong trường hợp này, vấn đề là định nghĩa hàm bị thiếu dấu hai chấm ở cuốiTrên thực tế, chức năng trên có hai vấn đề với cú pháp. Nếu chúng ta khắc phục sự cố với dấu hai chấm, chúng ta sẽ thấy rằng cũng có một
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
4, có nghĩa là các dòng trong định nghĩa hàm không phải tất cả đều có cùng một vết lõm---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
2---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
3Cả
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
3 và ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
4 đều chỉ ra vấn đề với cú pháp chương trình của bạn, nhưng ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
4 cụ thể hơn. điều đó luôn có nghĩa là có vấn đề với cách mã của bạn được thụt vàoKhoảng trắng. tab và không gian
Ghi chú nhanh về lỗi thụt lề. đôi khi chúng có thể ngấm ngầm, đặc biệt nếu bạn đang trộn dấu cách và tab. Vì cả hai đều là "khoảng trắng" nên rất khó để phân biệt bằng mắt thường. Sổ tay IPython thực sự cung cấp cho chúng ta một chút gợi ý, nhưng không phải trình soạn thảo Python nào cũng làm được điều đó. Trong ví dụ sau, hai dòng đầu tiên đang sử dụng tab để thụt lề, trong khi dòng thứ ba sử dụng bốn khoảng trắng
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
7---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
8Theo mặc định, một tab tương đương với tám dấu cách, vì vậy cách duy nhất để trộn các tab và dấu cách là làm cho nó trông như thế này. Nói chung, tốt hơn là không bao giờ sử dụng các tab và luôn sử dụng khoảng trắng, vì nó có thể khiến mọi thứ trở nên rất khó hiểu
---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
0Thách đấu. xác định lỗi cú pháp
- Đọc mã bên dưới và [không chạy mã] cố gắng xác định lỗi là gì
- Chạy ô và đọc thông báo lỗi. Nó là một
3 hay một--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
4?--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
- Sửa lỗi
- Lặp lại bước 2 và 3 cho đến khi bạn sửa được tất cả các lỗi
---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
1Lỗi tên biến
Một loại lỗi rất phổ biến khác được gọi là
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
5 và xảy ra khi bạn cố gắng sử dụng một biến không tồn tại. Ví dụ---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
2---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
3Lỗi tên biến đi kèm với một số thông báo lỗi thông tin nhất, thường có dạng "tên 'tên_biến' không được xác định"
Tại sao thông báo lỗi này xảy ra? . Tuy nhiên, có một vài lý do rất phổ biến khiến bạn có thể có một biến không xác định. Đầu tiên là bạn muốn sử dụng một chuỗi, nhưng quên đặt dấu ngoặc kép xung quanh nó
---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
4---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
5Thứ hai là bạn quên tạo biến trước khi sử dụng nó. Trong ví dụ sau, lẽ ra
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
95 phải được xác định [e. g. , với ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
96] trước vòng lặp for---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
6---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
7Cuối cùng, khả năng thứ ba là bạn đã mắc lỗi đánh máy khi viết mã. Giả sử chúng ta đã sửa lỗi ở trên bằng cách thêm dòng
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
97 trước vòng lặp for. Bực bội, điều này thực sự không sửa lỗi. Hãy nhớ rằng các biến phân biệt chữ hoa chữ thường, vì vậy biến ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
95 khác với biến ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
99. Chúng tôi vẫn gặp lỗi tương tự vì chúng tôi vẫn chưa xác định ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
95---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
8---------------------------------------------------------------------------
IndexError Traceback [most recent call last]
in []
1 from errors_01 import favorite_ice_cream
----> 2 favorite_ice_cream[]
/Users/jhamrick/project/swc/novice/python/errors_01.pyc in favorite_ice_cream[]
5 "strawberry"
6 ]
----> 7 print ice_creams[3]
IndexError: list index out of range
9Thách đấu. xác định lỗi tên biến
- Đọc mã bên dưới và [không chạy mã] cố gắng xác định lỗi là gì
- Chạy ô và đọc thông báo lỗi. Bạn nghĩ đây là loại
5 nào?--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
- Sửa lỗi
- Lặp lại bước 2 và 3 cho đến khi bạn sửa được tất cả các lỗi
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
50Lỗi mặt hàng
Tiếp theo là các lỗi liên quan đến vùng chứa [như danh sách và từ điển] và các mục bên trong chúng. Nếu bạn cố gắng truy cập một mục trong danh sách hoặc từ điển không tồn tại, thì bạn sẽ gặp lỗi. Điều này thật ý nghĩa. Hãy suy nghĩ về một ví dụ thực tế cuộc sống. nếu bạn hỏi ai đó muốn uống cà phê vào ngày nào và họ trả lời là "thứ bảy", bạn có thể hơi khó chịu [mặc dù, có lẽ sau khi cảm thấy thích thú khi ai đó nghĩ ra ý tưởng về thứ bảy]. Python cũng khó chịu tương tự nếu bạn cố hỏi nó về một mục không tồn tại
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
51---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
52---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
53Ở đây, Python đang nói với chúng ta rằng có một
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
7 trong mã của chúng ta, nghĩa là chúng ta đã cố truy cập vào một chỉ mục danh sách không tồn tạiChúng tôi gặp lỗi tương tự trong trường hợp từ điển
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
54---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
55Trong trường hợp này, chúng tôi nhận được một
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
6, có nghĩa là khóa mà chúng tôi đã yêu cầu [---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
24, như thông báo lỗi cho chúng tôi biết] không có trong từ điển. Điều này có thể là do nó thực sự không tồn tại trong từ điển, nhưng cũng có thể là do lỗi đánh máy. Điều này tương tự như trường hợp chúng tôi đã thảo luận ở trên, đôi khi bạn có thể nhận được ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
5 do lỗi đánh máy. Ví dụ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
56---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
57Thách đấu. xác định lỗi mục
- Đọc mã bên dưới và [không chạy mã] cố gắng xác định lỗi là gì
- Chạy ô và đọc thông báo lỗi. Nó là một
7 hay một--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
6?--------------------------------------------------------------------------- KeyError Traceback [most recent call last] in [] 1 from errors_02 import print_friday_message ----> 2 print_friday_message[] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[] 13 14 def print_friday_message[]: ---> 15 print_message["Friday"] /Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day] 9 "sunday": "Aw, the weekend is almost over." 10 } ---> 11 print messages[day] 12 13 KeyError: 'Friday'
- Sửa lỗi
- Lặp lại bước 2 và 3 cho đến khi bạn sửa được tất cả các lỗi
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
58Lỗi tệp
Loại lỗi cuối cùng chúng tôi sẽ đề cập hôm nay là những lỗi liên quan đến việc đọc và ghi tệp.
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
8. "IO" trong ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
8 là viết tắt của "input/output", đây chỉ là một cách nói thú vị của "viết/đọc"Nếu bạn cố đọc một tệp không tồn tại, bạn sẽ nhận được thông báo ________ 08 cho bạn biết như vậy. Đây là lý do phổ biến nhất khiến bạn nhận được
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
8 và nếu thông báo lỗi cho biết "không có tệp hoặc thư mục như vậy", thì bạn biết mình vừa cố truy cập một tệp không tồn tại---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
59---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
0Một lý do khiến bạn nhận được lỗi này là do bạn đã chỉ định đường dẫn đến tệp không chính xác. Ví dụ: nếu tôi hiện đang ở trong một thư mục có tên là
---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
32 và tôi có một tệp trong ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
33, nhưng tôi cố gắng chỉ mở ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
34, thao tác này sẽ không thành công. Đường dẫn chính xác sẽ là ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
35. Cũng có thể [như với ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
5 và ---------------------------------------------------------------------------
KeyError Traceback [most recent call last]
in []
1 from errors_02 import print_friday_message
----> 2 print_friday_message[]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_friday_message[]
13
14 def print_friday_message[]:
---> 15 print_message["Friday"]
/Users/jhamrick/project/swc/novice/python/errors_02.py in print_message[day]
9 "sunday": "Aw, the weekend is almost over."
10 }
---> 11 print messages[day]
12
13
KeyError: 'Friday'
6] bạn vừa mắc lỗi đánh máyMột vấn đề khác có thể là bạn đã sử dụng cờ "đọc" thay vì cờ "ghi". Python sẽ không báo lỗi cho bạn nếu bạn cố mở tệp để ghi khi tệp không tồn tại. Tuy nhiên, nếu bạn định mở một tệp để đọc, nhưng lại vô tình mở tệp đó để ghi và sau đó cố đọc từ tệp đó, bạn sẽ gặp lỗi thông báo rằng tệp không được mở để đọc