Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Lỗi Python syntaxerror: EOL while scanning string literal - Giải pháp

Ngay cả các lập trình viên giỏi nhất cũng thường mắc lỗi cú pháp khi viết mã. Ngôn ngữ lập trình có rất nhiều quy tắc và chỉ một lỗi đánh máy cũng có thể gây ra lỗi.

Nếu bạn gặp lỗi "syntaxerror: EOL while scanning string literal", đừng lo lắng. Trong hướng dẫn này, chúng ta sẽ nói về ý nghĩa của lỗi này và cách khắc phục. Chúng ta sẽ đi qua vài tình huống ví dụ để giúp bạn xác định nguyên nhân và giải pháp tiềm năng.

Hãy bắt đầu!

Vấn đề: syntaxerror: EOL while scanning string literal

Cú pháp giống như ngữ pháp của ngôn ngữ lập trình. Tiếng Anh có quy tắc điều khiển dấu câu và chính tả; ngôn ngữ lập trình cũng có quy tắc tương tự.

Hãy xem lỗi của chúng ta:

syntaxerror: EOL while scanning string literal

Thông báo SyntaxError cho biết chúng ta đã không tuân theo quy tắc cú pháp của Python.

Mô tả lỗi cho thấy Python mong đợi một ký tự cụ thể xuất hiện trước cuối dòng mã nhưng không tìm thấy. Ví dụ, Python có thể mong đợi ký tự đóng chuỗi (") trước cuối dòng bạn đã mở chuỗi.

Nếu gặp lỗi cú pháp, Python dừng thực thi chương trình. Điều này vì trình thông dịch Python cần bạn khắc phục sự cố trước khi có thể đọc tiếp phần còn lại của mã.

81% người tham gia cho biết họ cảm thấy tự tin hơn về cơ hội việc làm công nghệ sau khi tham gia bootcamp. Được ghép nối với bootcamp ngay hôm nay.

Sinh viên trung bình tốt nghiệp bootcamp mất chưa đến sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được việc đầu tiên.

Lỗi này thường do các nguyên nhân sau:

  • Chuỗi trải nhiều dòng dùng cú pháp sai
  • Thiếu dấu ngoặc kép
  • Dấu ngoặc kép không khớp

Tình huống ví dụ: Chuỗi nhiều dòng

Trong Python, chuỗi có thể trải nhiều dòng. Cú pháp cho chuỗi nhiều dòng khác chuỗi truyền thống. Chuỗi nhiều dòng phải được bao quanh bằng ba dấu ngoặc kép, hoặc viết bằng ba dấu ngoặc kép.

Hãy xem chuỗi nhiều dòng:

def welcome_hero(): message = "Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman." print(message) welcome_hero()

Chúng ta định nghĩa hàm welcome_hero(). Hàm này in thông báo ra console. Thông báo này gán cho biến "message".

Hãy thử chạy mã:

File "main.py", line 2 message = "Welcome, Hero! ^ SyntaxError: EOL while scanning string literal

Lỗi được trả về. Điều này vì chuỗi dùng dấu ngoặc đơn hoặc kép không thể trải nhiều dòng. Để giải quyết, cần bao quanh chuỗi bằng ba dấu ngoặc đơn hoặc kép. Bất kỳ văn bản nào xuất hiện giữa các ký tự này sẽ là một phần của chuỗi:

message = """Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman."""

Hãy thử chạy mã với dòng đã sửa. Mã trả về:

Welcome, Hero! You have just entered the Castle of Doom. Your challenge, should you choose to accept it, is to locate the Sacred Emerald and take it back to the travelling salesman.

Thành công! Mã in thông báo không lỗi.

Tình huống ví dụ: Thiếu dấu ngoặc kép

Chuỗi phải được đóng sau khi nội dung chuỗi được khai báo. Nếu không, Python trả về lỗi cú pháp. Hãy xem chuỗi không đóng:

def welcome_hero(): message = "Welcome, Hero! print(message) welcome_hero()

Hãy chạy mã:

File "main.py", line 2 message = "Welcome, Hero! ^ SyntaxError: EOL while scanning string literal

Chúng ta quên đóng chuỗi. Nếu nhìn dòng mã khai báo biến "message", không có ký tự đóng chuỗi.

Chúng ta có thể khắc phục lỗi bằng cách đóng chuỗi dùng cùng dấu ngoặc kép dùng để mở chuỗi.

def welcome_hero(): message = "Welcome, Hero!" print(message) welcome_hero()

Hãy chạy mã lại:

Welcome, Hero!

Mã chạy thành công.

Tình huống ví dụ: Dấu ngoặc kép không khớp

Loại dấu ngoặc dùng mở chuỗi nên giống loại dùng đóng chuỗi.

Lỗi cú pháp trả về khi loại dấu ngoặc dùng mở và đóng chuỗi khác nhau. Hãy xem chương trình mở chuỗi bằng dấu ngoặc đơn (') và đóng bằng dấu ngoặc kép ("):

def welcome_hero(): message = 'Welcome, Hero!" print(message) welcome_hero()

Mã trả về:

File "main.py", line 2 message = 'Welcome, Hero!" ^ SyntaxError: EOL while scanning string literal

Chúng ta khắc phục bằng cách làm cho dấu ngoặc khớp. Chúng ta sẽ đổi dấu ngoặc đầu tiên dùng dấu ngoặc kép ("):

def welcome_hero(): message = "Welcome, Hero!" print(message) welcome_hero()

Mã giờ chạy thành công: Welcome, Hero!



Kết luận

Lỗi "syntaxerror: EOL while scanning string literal" được trải qua bởi mọi lập trình viên Python. Lỗi này xảy ra khi:

  • Bạn quên đóng chuỗi
  • Bạn đóng chuỗi dùng ký hiệu sai
  • Bạn khai báo chuỗi nhiều dòng dùng một dấu ngoặc kép thay vì ba

Để khắc phục lỗi này, kiểm tra xem có điều kiện nào trên đúng không. Sau đó, thực hiện thay đổi cần thiết cho mã. Bây giờ bạn đã sẵn sàng giải quyết lỗi này như chuyên gia Python!