Computer >> Máy Tính >  >> Lập trình >> Python

Lỗi cú pháp Python:EOL trong khi quét chuỗi ký tự Giải pháp

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

Nếu bạn gặp phải lỗi “lỗi cú pháp:EOL trong khi quét ký tự chuỗi”, đừng lo lắng. Trong hướng dẫn này, chúng ta sẽ nói về lỗi này có nghĩa là gì và cách giải quyết nó. Chúng tôi sẽ giới thiệu cho các bạn một số tình huống ví dụ để giúp bạn xác định các nguyên nhân và giải pháp tiềm năng.

Hãy bắt đầu!

Sự cố:Lỗi cú pháp:EOL trong khi quét ký tự chuỗi

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

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

syntaxerror: EOL while scanning string literal

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

Mô tả lỗi chỉ ra rằng Python đang mong đợi một ký tự cụ thể xuất hiện ở cuối dòng mã không được tìm thấy. Ví dụ:Python có thể mong đợi một ký tự đóng chuỗi (”) ở cuối dòng mà bạn đã mở một chuỗi.

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

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Lỗi này thường do:

  • Các chuỗi kéo dài nhiều dòng sử dụng sai cú pháp
  • Thiếu dấu ngoặc kép
  • Dấu ngoặc kép không khớp

Kịch bản mẫu:Chuỗi nhiều dòng

Trong Python, các chuỗi có thể kéo dài nhiều dòng. Cú pháp của một chuỗi nhiều dòng khác với cú pháp của một chuỗi truyền thống. Chuỗi nhiều dòng phải được đặt trong dấu ngoặc kép ba hoặc được viết bằng ba dấu ngoặc kép.

Hãy xem xét một 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 tôi đã xác định một hàm có tên là welcome_hero() . Chức năng này in một thông báo đến bảng điều khiển. Thông báo này được gán cho biến "thông báo".

Hãy thử chạy mã của chúng tôi:

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

Một lỗi được trả lại. Điều này là do một chuỗi sử dụng dấu nháy đơn hoặc dấu ngoặc kép không thể kéo dài nhiều dòng. Để giải quyết vấn đề này, chúng ta cần đặt chuỗi của mình bằng ba dấu nháy đơ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ã của chúng tôi với dòng sửa đổi này. Mã của chúng tôi 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ã của chúng tôi in ra thông báo mà không có lỗi.

Tình huống mẫu:Thiếu dấu ngoặc kép

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

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

welcome_hero()

Hãy chạy mã của chúng tôi:

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

Chúng tôi đã quên đóng chuỗi của chúng tôi. Nếu bạn nhìn vào dòng mã nơi chúng ta khai báo biến “message”, sẽ không có ký tự chuỗi đóng nào.

Chúng tôi có thể sửa lỗi này bằng cách đóng chuỗi của chúng tôi bằng cách sử dụng giống nhau dấu ngoặc kép mà chúng tôi đã sử dụng để mở chuỗi của mình.

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

welcome_hero()

Hãy chạy lại mã của chúng tôi:

Welcome, Hero!

Mã của chúng tôi chạy thành công.

Tình huống mẫu:Dấu báo giá không khớp

Loại trích dẫn bạn sử dụng để mở một chuỗi phải giống với loại trích dẫn bạn sử dụng để đóng một chuỗi.

Lỗi cú pháp được trả về khi các loại dấu ngoặc kép mà bạn sử dụng để mở và đóng một chuỗi khác nhau. Hãy xem một chương trình mở một chuỗi bằng dấu nháy đơn (‘) và đóng một chuỗi bằng dấu nháy kép (”):

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

welcome_hero()

Mã của chúng tôi trả về:

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

Chúng tôi có thể khắc phục sự cố này bằng cách làm cho các câu trích dẫn của chúng tôi khớp với nhau. Chúng tôi sẽ thay đổi dấu ngoặc kép đầu tiên của mình để sử dụng dấu ngoặc kép (“):

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

welcome_hero()

Mã của chúng tôi hiện đã chạy thành công:Chào mừng, Anh hùng!



Kết luận

Mọi nhà phát triển Python đều gặp phải lỗi “cú pháp:EOL khi quét ký tự chuỗi”. Lỗi này xảy ra khi:

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

Để giải quyết lỗi này, hãy kiểm tra xem bất kỳ điều kiện nào ở trên là đúng. Sau đó, thực hiện các thay đổi cần thiết đối với mã của bạn. Bây giờ, bạn đã sẵn sàng để bắt đầu giải quyết lỗi này như một chuyên gia Python!