Những loại lỗi nào bạn có thể phải gỡ lỗi trong python?

Các loại lỗi khác nhau có thể xảy ra trong một chương trình và rất hữu ích khi phân biệt chúng để theo dõi chúng nhanh hơn

  1. Lỗi cú pháp được Python tạo ra khi nó dịch mã nguồn thành mã byte. Họ thường chỉ ra rằng có điều gì đó không ổn với cú pháp của chương trình. Thí dụ. Bỏ qua dấu hai chấm ở cuối câu lệnh def sẽ tạo ra thông báo hơi thừa Lỗi cú pháp. không hợp lệ cú pháp .
  2. Lỗi thời gian chạy được tạo bởi hệ thống thời gian chạy nếu có sự cố xảy ra trong khi chương trình đang chạy. Hầu hết các thông báo lỗi thời gian chạy bao gồm thông tin về nơi xảy ra lỗi và chức năng nào đang được thực thi. Thí dụ. Một đệ quy vô hạn cuối cùng gây ra lỗi thời gian chạy vượt quá độ sâu đệ quy tối đa
  3. Lỗi ngữ nghĩa là sự cố với chương trình biên dịch và chạy nhưng không thực hiện đúng. Thí dụ. Một biểu thức có thể không được đánh giá theo thứ tự bạn mong đợi, mang lại kết quả không mong muốn

Bước đầu tiên trong quá trình gỡ lỗi là tìm ra loại lỗi mà bạn đang xử lý. Mặc dù các phần sau đây được sắp xếp theo loại lỗi, một số kỹ thuật có thể áp dụng trong nhiều trường hợp

Lỗi cú pháp

Lỗi cú pháp thường dễ sửa sau khi bạn tìm ra chúng là gì. Thật không may, các thông báo lỗi thường không hữu ích. Các thông báo phổ biến nhất là Lỗi cú pháp. không hợp lệ cú phápLỗi cú pháp. không hợp lệ mã thông báo , cả hai trường hợp đều không có nhiều thông tin.

Mặt khác, thông báo cho bạn biết vấn đề xảy ra ở đâu trong chương trình. Trên thực tế, nó cho bạn biết Python đã nhận thấy sự cố ở đâu, điều này không nhất thiết là lỗi ở đâu. Đôi khi lỗi xảy ra trước vị trí của thông báo lỗi, thường ở dòng trước

Nếu bạn đang xây dựng chương trình dần dần, bạn nên biết rõ lỗi nằm ở đâu. Nó sẽ ở dòng cuối cùng bạn đã thêm

Nếu bạn đang sao chép mã từ một cuốn sách, hãy bắt đầu bằng cách so sánh thật cẩn thận mã của bạn với mã của cuốn sách. Kiểm tra mọi ký tự. Đồng thời, hãy nhớ rằng cuốn sách có thể sai, vì vậy nếu bạn thấy điều gì đó giống như lỗi cú pháp, thì đó có thể là

Dưới đây là một số cách để tránh các lỗi cú pháp phổ biến nhất

  1. Đảm bảo rằng bạn không sử dụng từ khóa Python cho tên biến
  2. Kiểm tra xem bạn có dấu hai chấm ở cuối tiêu đề của mọi câu lệnh ghép hay không, bao gồm for , while, if, and def statements.
  3. Kiểm tra xem vết lõm có nhất quán không. Bạn có thể thụt lề bằng dấu cách hoặc tab nhưng tốt nhất không nên trộn lẫn chúng. Mỗi cấp độ nên được lồng cùng một lượng
  4. Đảm bảo rằng bất kỳ chuỗi nào trong mã đều có dấu ngoặc kép phù hợp
  5. Nếu bạn có chuỗi nhiều dòng với dấu ngoặc kép [đơn hoặc kép], hãy đảm bảo rằng bạn đã kết thúc chuỗi đúng cách. Chuỗi bị hủy kết thúc có thể gây ra lỗi không hợp lệ mã thông báo ở cuối chương trình của bạn hoặc nó có thể xử lý phần sau . Trong trường hợp thứ hai, nó có thể hoàn toàn không tạo ra thông báo lỗi.
  6. Dấu ngoặc đơn — [, { hoặc [ — làm cho Python tiếp tục với dòng tiếp theo như một phần của câu lệnh hiện tại. Nói chung, một lỗi xảy ra gần như ngay lập tức trong dòng tiếp theo
  7. Kiểm tra phiên bản cổ điển = thay vì == .

Nếu không có gì hoạt động, hãy chuyển sang phần tiếp theo

Tôi không thể chạy chương trình của mình bất kể tôi làm gì

Nếu trình biên dịch báo có lỗi mà bạn không nhìn thấy, đó có thể là do bạn và trình biên dịch không nhìn vào cùng một đoạn mã. Kiểm tra môi trường lập trình của bạn để đảm bảo rằng chương trình bạn đang chỉnh sửa là chương trình mà Python đang cố chạy. Nếu bạn không chắc chắn, hãy thử đặt một lỗi cú pháp rõ ràng và cố ý vào đầu chương trình. Bây giờ hãy chạy lại [hoặc nhập] nó. Nếu trình biên dịch không tìm thấy lỗi mới, có thể có điều gì đó không ổn với cách thiết lập môi trường của bạn

Nếu điều này xảy ra, một cách tiếp cận là bắt đầu lại với một chương trình mới như Hello, World. và đảm bảo rằng bạn có thể chạy một chương trình đã biết. Sau đó dần dần thêm các phần của chương trình mới vào chương trình đang hoạt động

lỗi thời gian chạy

Khi chương trình của bạn đúng về mặt cú pháp, Python có thể nhập nó và ít nhất là bắt đầu chạy nó. Cái gì có thể đi sai?

chương trình của tôi hoàn toàn không có gì

Sự cố này phổ biến nhất khi tệp của bạn bao gồm các hàm và lớp nhưng không thực sự gọi bất kỳ thứ gì để bắt đầu thực thi. Điều này có thể là cố ý nếu bạn chỉ định nhập mô-đun này để cung cấp các lớp và hàm

Nếu không cố ý, hãy đảm bảo rằng bạn đang gọi một hàm để bắt đầu thực thi hoặc thực thi một hàm từ lời nhắc tương tác. Cũng xem phần dưới đây

chương trình của tôi bị treo

Nếu một chương trình dừng lại và dường như không làm gì cả, chúng tôi nói rằng nó đang bị treo. Điều đó thường có nghĩa là nó bị vướng vào vòng lặp vô hạn hoặc đệ quy vô hạn

  1. Nếu có một vòng lặp cụ thể mà bạn nghi ngờ là vấn đề, hãy thêm câu lệnh in ngay trước vòng lặp cho biết đã vào vòng lặp và .
  2. Chạy chương trình. Nếu bạn nhận được tin nhắn đầu tiên chứ không phải tin nhắn thứ hai, thì bạn đã có một vòng lặp vô hạn. Chuyển đến phần bên dưới
  3. Hầu hết thời gian, một đệ quy vô hạn sẽ khiến chương trình chạy một lúc và sau đó tạo ra RuntimeError. Lỗi vượt quá độ sâu đệ quy tối đa. Nếu điều đó xảy ra, hãy chuyển đến phần bên dưới
  4. Nếu bạn không gặp lỗi này nhưng nghi ngờ có vấn đề với phương thức hoặc hàm đệ quy, bạn vẫn có thể sử dụng các kỹ thuật trong phần
  5. Nếu cả hai bước đó đều không hoạt động, hãy bắt đầu kiểm tra các vòng lặp khác cũng như các hàm và phương thức đệ quy khác
  6. Nếu điều đó không hiệu quả, thì có thể bạn không hiểu luồng thực thi trong chương trình của mình. Chuyển đến phần bên dưới

Vòng lặp vô hạn

Nếu bạn cho rằng mình có một vòng lặp vô hạn và bạn biết vòng lặp nào đang gây ra sự cố, hãy thêm câu lệnh in vào cuối .

Ví dụ

1
2
3
4
5
6
7

while x > 0 and y  0 and y 

Chủ Đề