Lỗi trong mã Python là gì?

Lỗi cú pháp là loại lỗi cơ bản nhất. Chúng phát sinh khi trình phân tích cú pháp Python không thể hiểu một dòng mã. Lỗi cú pháp hầu như luôn luôn nghiêm trọng, tôi. e. hầu như không bao giờ có cách nào để thực thi thành công một đoạn mã chứa lỗi cú pháp. Một số lỗi cú pháp có thể được phát hiện và xử lý, chẳng hạn như eval(""), nhưng những lỗi này rất hiếm

Trong IDLE, nó sẽ làm nổi bật lỗi cú pháp ở đâu. Hầu hết các lỗi cú pháp là lỗi chính tả, thụt lề không chính xác hoặc đối số không chính xác. Nếu bạn gặp lỗi này, hãy thử xem mã của bạn để biết bất kỳ lỗi nào trong số này

Đây là loại lỗi khó tìm nhất, bởi vì chúng sẽ cho kết quả không thể đoán trước và có thể làm hỏng chương trình của bạn. Rất nhiều điều khác nhau có thể xảy ra nếu bạn mắc lỗi logic. Tuy nhiên, những điều này rất dễ khắc phục vì bạn có thể sử dụng trình gỡ lỗi, trình gỡ lỗi này sẽ chạy qua chương trình và khắc phục mọi sự cố

Một ví dụ đơn giản về lỗi logic có thể được trình bày bên dưới, vòng lặp while sẽ biên dịch và chạy, tuy nhiên, vòng lặp sẽ không bao giờ kết thúc và có thể làm hỏng Python

#Counting Sheep
#Goal: Print number of sheep up until 101.
sheep_count=1
while sheep_count<100:
    print("%i Sheep"%sheep_count)

Lỗi logic chỉ là sai lầm trong quan điểm của mục tiêu lập trình mà người ta có thể mắc phải; . Vòng lặp while ở trên đang hoạt động chính xác như mục đích của Python, nhưng thiếu điều kiện thoát mà người dùng cần

Các trường hợp ngoại lệ phát sinh khi trình phân tích cú pháp python biết phải làm gì với một đoạn mã nhưng không thể thực hiện hành động. Một ví dụ là cố gắng truy cập internet bằng python mà không cần kết nối internet;

Không giống như lỗi cú pháp, ngoại lệ không phải lúc nào cũng nghiêm trọng. Các ngoại lệ có thể được xử lý bằng cách sử dụng câu lệnh thử

Xem xét đoạn mã sau để hiển thị HTML của trang web 'ví dụ. com'. Khi thực thi chương trình đến câu lệnh try nó sẽ cố gắng thực hiện đoạn mã thụt vào bên dưới, nếu vì lý do nào đó có lỗi (máy tính không kết nối internet hay gì đó) thì trình thông dịch python sẽ chuyển đến đoạn mã thụt vào bên dưới . ' chỉ huy

import urllib2
url = 'http://www.example.com'
try:
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    the_page = response.read()
    print(the_page)
except:
    print("We have a problem.")

Một cách khác để xử lý lỗi là loại trừ một lỗi cụ thể

try:
    age = int(raw_input("Enter your age: "))
    print("You must be {0} years old.".format(age))
except ValueError:
    print("Your age must be numeric.")

Nếu người dùng nhập một giá trị số là tuổi của mình, đầu ra sẽ như thế này

Enter your age: 5
Your age must be 5 years old.

Tuy nhiên, nếu người dùng nhập một giá trị không phải là số như tuổi của họ, thì ValueError sẽ được đưa ra khi cố gắng thực thi phương thức int() trên một chuỗi không phải là số và mã trong mệnh đề ngoại trừ được thực thi

Enter your age: five
Your age must be numeric.

Bạn cũng có thể sử dụng khối thử với vòng lặp while để xác thực đầu vào

valid = False
while valid == False:
    try:
        age = int(raw_input("Enter your age: "))
        valid = True     # This statement will only execute if the above statement executes without error.
        print("You must be {0} years old.".format(age))
    except ValueError:
        print("Your age must be numeric.")

Chương trình sẽ nhắc bạn về độ tuổi của bạn cho đến khi bạn nhập độ tuổi hợp lệ

Enter your age: five
Your age must be numeric.
Enter your age: abc10
Your age must be numeric.
Enter your age: 15
You must be 15 years old.

Trong một số trường hợp khác, có thể cần phải có thêm thông tin về ngoại lệ và xử lý nó một cách thích hợp. Trong những tình huống như vậy, cấu trúc except as có thể được sử dụng

Lỗi là sự cố xảy ra trong chương trình do thao tác bất hợp pháp được thực hiện bởi người dùng hoặc do lỗi của người lập trình, điều này làm dừng dòng chảy bình thường của chương trình. Lỗi cũng được gọi là lỗi hoặc lỗi. Có hai loại lỗi chủ yếu trong lập trình python. Hãy để chúng tôi tìm hiểu về cả hai loại lỗi python

  1. Lỗi cú pháp
  2. Lỗi logic hoặc ngoại lệ

Bất cứ khi nào chúng ta không viết đúng cú pháp của ngôn ngữ lập trình python (hoặc bất kỳ ngôn ngữ nào khác) thì trình thông dịch python sẽ đưa ra một lỗi được gọi là lỗi cú pháp

Mặt khác, Lỗi logic là những lỗi không thể bắt được trong thời gian biên dịch. Vì chúng tôi không thể kiểm tra các lỗi này trong thời gian biên dịch, chúng tôi đặt tên cho chúng là Ngoại lệ. Ngoại lệ có thể gây ra một số vấn đề nghiêm trọng vì vậy chúng ta nên xử lý chúng một cách hiệu quả

Ghi chú. Lỗi cú pháp cũng có thể được gọi là Lỗi thời gian biên dịch. Một số lỗi thời gian biên dịch phổ biến nhất là lỗi cú pháp, tham chiếu thư viện, nhập sai hàm và phương thức thư viện, (các) cặp dấu ngoặc không đều, v.v.

Lỗi cú pháp

Lỗi cú pháp là một trong những loại lỗi cơ bản nhất trong lập trình. Bất cứ khi nào chúng ta không viết đúng cú pháp của ngôn ngữ lập trình python (hoặc bất kỳ ngôn ngữ nào khác) thì trình thông dịch hoặc trình phân tích cú pháp python sẽ đưa ra một lỗi được gọi là lỗi cú pháp. Lỗi cú pháp đơn giản có nghĩa là trình phân tích cú pháp python không thể hiểu một dòng mã

Hãy để chúng tôi lấy một ví dụ để hiểu rõ hơn về lỗi cú pháp

number = 100

if number > 50
    print("Number is greater than 50!")

đầu ra

________số 8

Như chúng ta có thể thấy trong ví dụ trên, việc giải thích python đã đưa ra một lỗi cú pháp cho biết cú pháp không hợp lệ. Vì chúng tôi đã bỏ lỡ dấu chấm phẩy (. ) sau câu lệnh if, đó là lý do tại sao trình thông dịch python đưa ra lỗi cú pháp

Một số lỗi cú pháp chung có thể là lỗi đánh máy (lỗi), thụt đầu dòng không chính xác hoặc đối số không chính xác. Trong trường hợp có lỗi cú pháp, chúng ta nên xem mã của mình và cố gắng hiểu vấn đề

Ghi chú. Trong các IDE khác nhau (Môi trường phát triển tích hợp), (các) lỗi cú pháp được hiển thị bằng các đường đứt nét màu đỏ

lỗi logic

Như chúng ta đã thấy ở trên, có hai loại lỗi python chính. Chúng ta đã nghiên cứu về lỗi cú pháp, bây giờ chúng ta hãy tìm hiểu về lỗi logic trong python

Lỗi logic là những lỗi không thể bắt được trong thời gian biên dịch. Vì chúng tôi không thể kiểm tra các lỗi này trong thời gian biên dịch, chúng tôi đặt tên cho chúng là Ngoại lệ. Vì chúng tôi không thể kiểm tra các lỗi logic trong thời gian biên dịch nên rất khó để tìm ra chúng.

Còn một tên lỗi logic nữa. Lỗi thời gian chạy là những lỗi không thể bắt được trong thời gian biên dịch. Vì vậy, thời gian chạy có thể gây ra một số vấn đề nghiêm trọng, vì vậy chúng ta nên xử lý chúng một cách hiệu quả

Bây giờ chúng ta hãy nói về một số loại lỗi logic phổ biến nhất trong lập trình python

ZeroDivisionError ngoại lệ

ZeroDivisionError được đưa ra bởi trình thông dịch Python khi chúng tôi cố gắng chia bất kỳ số nào cho 0. Hãy để chúng tôi lấy một ví dụ để hiểu ZeroDivisionError

number = 100
divided_by_zero = number / 0

print(divided_by_zero)

đầu ra

import urllib2
url = 'http://www.example.com'
try:
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    the_page = response.read()
    print(the_page)
except:
    print("We have a problem.")
0

Thụt lề không chính xác

Lỗi thụt lề là một loại lỗi khác trong python có thể được tóm tắt bên trong lỗi cú pháp. Như chúng ta đã biết, chúng ta sử dụng thụt đầu dòng để xác định một khối mã trong python. Vì vậy, trong trường hợp thụt lề không đúng cách, trình thông dịch Python sẽ phát sinh lỗi Thụt lề. Hãy để chúng tôi lấy một ví dụ để hiểu Lỗi thụt lề

import urllib2
url = 'http://www.example.com'
try:
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    the_page = response.read()
    print(the_page)
except:
    print("We have a problem.")
1

đầu ra

import urllib2
url = 'http://www.example.com'
try:
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    the_page = response.read()
    print(the_page)
except:
    print("We have a problem.")
2

Ngoại lệ tích hợp

Giống như bất kỳ ngôn ngữ lập trình nào khác, Python có một số ngoại lệ tích hợp

Ghi chú. Tất cả các phiên bản trong Python phải là phiên bản của một lớp xuất phát từ BaseException

Hãy cùng chúng tôi tìm hiểu về các ngoại lệ tích hợp phổ biến trong python

ExceptionDescriptionIndexErrorNhư tên cho thấy, IndexError được nâng lên khi sử dụng sai chỉ mục của danh sách. AssertionErrorAssertionError xuất hiện khi câu lệnh khẳng định failAttributeErrorAttributeError xuất hiện khi gán thuộc tính không thành công. ImportErrorImportError xuất hiện khi không tìm thấy mô-đun đã nhập hoặc có sự cố khi nhập mô-đun được yêu cầu. KeyErrorKeyError được nâng lên khi không tìm thấy khóa của từ điển. NameErrorNameError được nâng lên khi biến chưa được xác định. MemoryErrorMemoryError xuất hiện khi chương trình hết bộ nhớ. TypeErrorTypeError xuất hiện khi một chức năng hoặc thao tác được áp dụng không đúng loại. EOFErrorEOFError xuất hiện khi hàm input() chạm vào điều kiện cuối tệp. FloatingPointErrorFloatingPointError được nâng lên khi thao tác dấu phẩy động không thành công. GeneratorExit TypeError xuất hiện khi chúng ta gọi phương thức close() của bộ tạo. KeyboardInterruptKeyboardInterrupt được nâng lên khi người dùng nhấn phím ngắt i. e. Ctrl + C hoặc Xóa. NotImplementedErrorNotImplementedError được đưa ra bởi các phương thức trừu tượng khi chúng được định nghĩa. OSErrorOSError được nâng lên khi hoạt động của hệ thống gây ra các lỗi liên quan đến hệ thống. OverflowErrorOverflowError xuất hiện khi kết quả của một phép toán số học quá lớn. ReferenceErrorReferenceError được nâng lên khi một proxy tham chiếu yếu được sử dụng để truy cập một tham chiếu được thu gom rác. RuntimeErrorRuntimeError xuất hiện khi một lỗi không thuộc bất kỳ danh mục ngoại lệ Python tích hợp nào khác. StopIterationStopIteration được đưa ra bởi hàm next() của trình vòng lặp để cho biết rằng không có mục nào khác được trả về bởi trình vòng lặp. IndentationError IndentationError được nâng lên khi có thụt lề không chính xác. TabErrorTabError được nâng lên khi trình thông dịch phát hiện lỗi nội bộ. SystemErrorSystemError được nâng lên khi thụt đầu dòng bao gồm các tab và khoảng trắng không nhất quán. UnboundLocalErrorUnboundLocalError xuất hiện khi một tham chiếu được tạo cho một biến cục bộ trong một hàm hoặc phương thức, không có giá trị nào bị ràng buộc với biến đó. UnicodeErrorUnicodeError xuất hiện khi xảy ra lỗi mã hóa hoặc giải mã liên quan đến Unicode. UnicodeEncodeErrorUnicodeEncodeError xuất hiện khi xảy ra lỗi liên quan đến Unicode tại thời điểm mã hóa. UnicodeDecodeErrorUnicodeDecodeError xuất hiện khi xảy ra lỗi liên quan đến Unicode tại thời điểm giải mã. UnicodeTranslateErrorUnicodeTranslateError xuất hiện khi xảy ra lỗi liên quan đến Unicode trong quá trình dịch. ValueErrorValueError được nâng lên khi một hàm được cung cấp đúng loại đối số nhưng có giá trị không phù hợp. ZeroDivisionError ZeroDivisionError xuất hiện khi chúng ta cố gắng chia bất kỳ số nào cho 0

Tìm hiểu thêm

Lỗi là sự cố xảy ra trong chương trình do thao tác bất hợp pháp do người dùng thực hiện hoặc do lỗi của người lập trình. Xử lý ngoại lệ là quá trình xử lý các lỗi và ngoại lệ sao cho việc thực thi bình thường của hệ thống không bị dừng lại. Xử lý ngoại lệ là cần thiết để ngăn chương trình kết thúc đột ngột

Để tìm hiểu thêm về ngoại lệ và xử lý ngoại lệ, hãy tham khảo bài viết - Xử lý ngoại lệ trong Python

3 loại lỗi trong Python là gì?

Có ba loại lỗi chính có thể phân biệt được trong Python. lỗi cú pháp, ngoại lệ và lỗi logic .

Lỗi trong mã Python của tôi ở đâu?

Công cụ kiểm tra mã Python . Bạn có thể kiểm tra trực tuyến mã Python của mình trực tiếp trong trình duyệt của mình. Nếu phát hiện lỗi cú pháp, thì dòng bị lỗi sẽ được tô sáng và nó sẽ chuyển đến dòng đó để tiết kiệm thời gian (không cần tìm kiếm dòng). Python error checker tool allows to find syntax errors (lint). You can test your Python code online directly in your browser. If a syntax error is detected, then the line in error is highlighted, and it jumps to it to save time (no need to search the line).

Lỗi loại trong ví dụ Python là gì?

Lỗi Loại Ngoại lệ xuất hiện khi hai loại toán hạng hoặc đối tượng khác nhau hoặc không liên quan được kết hợp . Trong ví dụ dưới đây, một số nguyên và một chuỗi được thêm vào, dẫn đến lỗi loại. thử. a = 5 b = "DataCamp" c = a + b ngoại trừ TypeError. in ('TypeError ngoại lệ tăng lên') khác. print('Thành công, không lỗi.

Các lỗi phổ biến trong Python là gì?

Tránh 8 lỗi phổ biến này trong Python .
1️⃣ Không tuân theo các quy tắc. .
2️⃣ Dùng sai cách diễn đạt. .
3️⃣ Sửa đổi và lặp lại danh sách. .
4️⃣ Đụng độ tên. .
5️⃣ Sử dụng biến lớp không chính xác. .
6️⃣ Không xác định chính xác các thông số. .
7️⃣ Lạm dụng “_ _ del _ _”.
8️⃣ Phụ thuộc mô-đun tròn