Cách Xác định Lỗi Trong Python - T3H
Có thể bạn quan tâm
Tìm hiểu về lỗi cú pháp trong Python
Tìm hiểu về lỗi trong Python
Có hai loại lỗi có thể xảy ra trong Python
Lỗi cú pháp
Lỗi cú pháp có thể được phát hiện trước khi chương trình của bạn được bắt đầu. Đây thường là lỗi dễ phát hiện nhất, lỗi cú pháp xảy ra khi bạn mắc lỗi chính tả hoặc lỗi đánh máy. Một lỗi có thể xảy ra khi bạn quên kết thúc câu lệnh if bằng các sử dụng dấu chấm phẩy hoặc viết nhầm while thay vì while. Lỗi cú pháp thường xuất hiện vào thời điểm bạn biên dịch chương trình và sẽ được thông báo bởi trình biên dịch. Dưới đây là ví dụ về lỗi cú pháp:
x = int(input('Enter a number: '))
whille x%2 == 0:
print('You have entered an even number.')
else:
print ('You have entered an odd number.')
Trong đoạn code phía trên, bạn sẽ thấy từ while bị gõ nhầm, nếu bạn cố gắng chạy chương trình trước khi sửa lỗi này, bạn sẽ gặp lỗi sau:
C:Python34Scripts>python error.py
File "error.py", line 3
whille x%2 == 0:
^
SyntaxError: invalid syntax
>>> Xem thêm: Cách chạy chương trình trong Python - Chạy tập lệnh trong Python
Lỗi logic
Lỗi logic trong python còn gọi là lỗi ngữ nghĩa, lỗi logic khiến chương trình hoạt động không chính xác, nhưng chúng thường không làm hỏng chương trình. Không giống như một chương trình có lỗi cú pháp, một chương trình có lỗi logic có thể được chạy, nhưng nó sẽ không hoạt động như cách bạn mong muốn. Cùng xem ví dụ sau về lỗi logic
x = float(input('Enter a number: '))
y = float(input('Enter a number: '))
z = x+y/2
print ('The average of the two numbers you have entered is:',z)
Ví dụ trên sẽ tính giá trị trung bình của hai số mà người dùng nhập vào. Tuy nhiên, do thứ tự của các phép toán trong số học (phép chia được tính trước khi cộng) nên khi chạy chương trình sẽ không đưa ra câu trả lời đúng:
>>>
Enter a number: 3
Enter a number: 4
The average of the two numbers you have entered is: 5.0
>>>
Để khắc phục vấn đề này, chúng ta chỉ cần thêm dấu ngoặc đơn: z = (x + y) / 2 vào phép tính
Bây giờ chúng ta sẽ nhận được kết quả phù hợp như sau:
>>>
Enter a number: 3
Enter a number: 4
The average of the two numbers you have entered is: 3.5
>>>
So sánh về lỗi cú pháp và lỗi logic trong Python
Các lỗi cú pháp chung trong Python
Khi bạn mắc lỗi trong Python lần đầu, sẽ rất hữu ích nếu bạn biết rõ lỗi đến từ đâu và cách khắc phục lỗi như thế nào. Trong phần dưới đây, bạn sẽ tìm hiểu sâu hơn về cách các lỗi trong Python xuất hiện và cách khắc phục chúng như sau:
Quá lạm dụng toán từ chuyển nhượng (=)
Trong Python, sẽ có một số trường hợp mà bạn không thể gán các đối tượng được, một ví dụ dưới đây là về chuỗi và hàm gọi như sau:
>>> len('hello') = 5
File "<stdin>", line 1
SyntaxError: can't assign to function call
>>> 'foo' = 1
File "<stdin>", line 1
SyntaxError: can't assign to literal
>>> 1 = 'foo'
File "<stdin>", line 1
SyntaxError: can't assign to literal
Trong ví dụ đầu, ta có thể thấy nó đang cố gán giá trị 5 cho hàm gọi len(). Thông báo lỗi rất hữu ích trong trường hợp này, nó cho thấy bạn không thể gán giá trị cho một hàm gọi.
Ví dụ thứ hai và thứ 3 dưới đây đang cố gán một string với một số nguyên cho các chuỗi. Quy tắc tương tự với giá trị của các chuỗi khác. Lần này, traceback sẽ chỉ ra vấn đề khi bạn cố gắng gán một giá trị cho một chuỗi.
Có thể mong muốn của bạn không phải là gán giá trị cho một lệnh gọi hàm hoặc chuỗi. Tuy nhiên, các lỗi trên vẫn xảy ra khi bạn quên mất dấu “=” khi thực hiện phép so sánh:
>>> len('hello') == 5
True
Trong nhiều trường hợp, khi Python thông báo rằng bạn đang thực hiện một phép gán với một đối tượng không thể gán được. Điều đầu tiên bạn cần làm là kiểm tra xem câu lệnh là một lệnh gán hay một biểu thức Boolean. Một trong những trường hợp mà bạn hay gặp vấn đề là khi cố gán giá trị với các từ khóa.
Lỗi chính tả, thiếu và sử dụng sai các từ khóa trong Python
Các keyword trong Python là một tập hợp các từ được bảo vệ và chúng có những ý nghĩa đặc biệt trong Python. Đây là những từ khóa mà bạn không thể sử dụng như biến, hàm. Chúng là một phần của ngôn ngữ và chỉ được sử dụng trong ngữ cảnh mà Python cho phép.
Có ba cách sử dụng nhầm từ khóa mà bạn hay gặp như sau:
- Viết sau từ khóa
- Viết thiếu từ khóa
- Sử dụng sai từ khóa
Nếu bạn viết sai chính tả một từ khóa trong Python, bạn sẽ nhận lỗi cú pháp SyntaxError ngay lập tức. Ví dụ về lỗi đánh nhầm key như sau:
>>> fro i in range(10):
File "<stdin>", line 1
fro i in range(10):
^
SyntaxError: invalid syntax
Ở đây bạn có thể thấy từ khóa for đã bị gõ nhầm thành fro. Do vậy, đoạn code trên sẽ gặp lỗi SyntaxError. Traceback sẽ chỉ ra nơi mà lỗi này xảy ra, và tùy vào đó, bạn có thể khắc phục nó. Những lỗi tương tự có thể được sửa lại một cách dễ dàng thông qua việc sửa lỗi chính tả.
Lỗi thiếu từ khóa trong Python
>>> for i range(10):
File "<stdin>", line 1
for i range(10):
^
SyntaxError: invalid syntax
Như ta có thể thấy, trong đoạn code trên, từ khóa in đã bị thiếu, traceback đã chỉ ra lỗi này và giúp cho bạn đi đúng hướng, Do vậy, bạn có thể sửa lại chương trình của mình khi nhận được thông báo.
Bên cạnh các lỗ như trên, bạn cũng có thể sử dụng sai các từ khóa được Python bảo vệ. Bạn cần nhớ rằng các keyword này chỉ được chỉ định trong một số trường hợp cụ ưu thể. Nếu bạn sử dụng sai bạn có thể nhận được lỗi cú pháp. Một ví dụ điển hình là việc sử dụng các lệnh như break và loop ngoài vòng lặp. Điều này có thể dễ dàng xảy ra.
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
... print('jim found')
... break
...
File "<stdin>", line 3
SyntaxError: 'break' outside loop
>>> if 'jim' in names:
... print('jim found')
... continue
...
File "<stdin>", line 3
SyntaxError: 'continue' not properly in loop
Ở đây, Python cho bạn biết chính xác lỗi sai diễn ra ở đâu. Các thông báo như “break” outside loop hay continue not properly in loop giúp bạn tìm ra chính xác những gì bạn cần sửa trong đoạn code của mình. Nếu đoạn code này nằm trong một tệp, Python cũng sẽ sử dụng traceback để chỉ ta các từ khóa bị lạm dụng sử dụng.
Một ví dụ khác là khi bạn cố gán từ khóa cho một biến hoặc sử dụng một từ khóa để xác định một hàm như sau:
>>> pass = True
File "<stdin>", line 1
pass = True
^
SyntaxError: invalid syntax
>>> def pass():
File "<stdin>", line 1
def pass():
^
SyntaxError: invalid syntax
Nếu bạn thử gắn một giá trị cho pass hoặc khi bạn định nghĩa một hàm với tên pass, bạn sẽ gặp lỗi cú pháp và thông báo lỗi invalid syntax một lần nữa.
Trong trường hợp này, bạn sẽ có thể khó phát hiện lỗi hơn vì code của bạn trông đẹp và chỉn chu từ bên ngoài. Nếu bạn vẫn nhận được lỗi cú pháp, thì bạn nên cân nhắc việc kiểm tra tên biến hoặc tên hàm mà bạn muốn sử dụng.
Danh sách các từ khóa được bảo vệ sẽ được tùy chỉnh theo phiên bản của Python.
>>> Tham khảo: Khóa học lập trình Python
Thiếu dấu ngoặc đơn, dấu ngoặc và dấu ngoặc kép
Thông thường, nguyên nhân cú pháp không hợp lệ trong lập trình Python là thiếu dấu ngoặc, ngoặc đơn và ngoặc kép. Những dấu này có thể rất khó phát hiện ở những dòng có ngoặc đơn lồng nhau hoặc các khối lệnh nhiều dòng. Tuy vậy, bạn vẫn có thể phát hiện ra những lỗi này nhờ vào sự giúp đỡ của traceback:
>>> message = 'don't'
File "<stdin>", line 1
message = 'don't'
^
SyntaxError: invalid syntax
Ở đây, traceback sẽ chỉ ra lỗi code không hợp lệ và bạn có thể fix lỗi này bằng hai cách như sau:
- Bao quanh string với cặp dấu nháy kép ("don't") và đừng quên đóng string
- Thêm ký tự thoát \ trước dấu nháy đơn thứ hai ('don\'t')
Kết luận: Việc xác định cú pháp không hợp lệ hay lỗi trong Python là việc mà bất kỳ lập trình viên nào cũng phải làm khi lập trình. Bài viết trên đã chỉ ra một số lỗi cú pháp không xác định trong Python kèm các ví dụ cụ thể. Qua bài viết này, bạn có thể xác định các lỗi cũng như tìm cách khắc phục chúng một cách nhanh chóng.
Nguồn: RealPython, Geek University
Từ khóa » Câu Lệnh Gán Sai Trong Python
-
[Python Cơ Bản Thường Dùng Trong Công Việc] Phần 2 : Cú Pháp ...
-
Top 15 đâu Là Lệnh Gán đúng Trong Python
-
Trường Hợp Nào Sau đây Không Phải Lệnh Gán Trong Python | HoiCay
-
Biến, Phép Gán Và Các Kiểu Dữ Liệu Cơ Sở Trong Python
-
Trong Pascal, Câu Lệnh Gán Nào Dưới đây Sai ? A. A:= B
-
Câu Lệnh Gán Nào Sau đây đúng Trong Python? A. X="1234 ... - Hoc24
-
.Lệnh Gán Nào Sau đây Sai? (Python)so1+so2=10VN="Tôi ... - Hoc24
-
Phần 1. Phép Toán, Biểu Thức, Câu Lệnh Gán – Trắc Nghiệm Python
-
Lệnh Gán Nào Sau đây Là Sai? - Bài Tập Tin Học Lớp 11
-
12.Để Nhập Dữ Liệu Từ Bàn Phím Và Chuyển Về Dạng Số Nguyên Ta Sử ...
-
Python: Cú Pháp Không Hợp Lệ Trong Python: Lý Do Phổ Biến Cho Lỗi ...
-
CÂU HỎI TRẮC NGHIỆM PYTHON CÓ ĐÁP ÁN - Blog Toán Tin
-
Chi Tiết Bài Học 9.Toán Tử Trong Python - Vimentor