Làm cách nào để bỏ qua lỗi eof trong python?

Trong Python, EOFError là một ngoại lệ xuất hiện khi các hàm như input() hoặc raw_input() trong trường hợp python2 trả về phần cuối của tệp (EOF) mà không đọc bất kỳ đầu vào nào

Khi nào chúng ta có thể mong đợi EOFError

Chúng ta có thể mong đợi EOF trong một số trường hợp phải xử lý input() / raw_input() chẳng hạn như

  • Mã ngắt đang thực thi bằng cách sử dụng

    ingredients = ["325g plain flour", "200g chilled butter", "125g golden caster sugar", "2 tsp vanilla extract", "2 free range egg yolks"]
    
    for i in ingredients:
    7 khi một câu lệnh đầu vào đang được thực thi như hình bên dưới
    Làm cách nào để bỏ qua lỗi eof trong python?

  • Một trường hợp khác có thể gặp phải EOF là khi chúng tôi muốn lấy một số đầu vào từ người dùng i. e. , chúng tôi không biết chính xác số lượng đầu vào;

n=int(input())
if(n>=1 and n<=10**5):
    phone_book={}
    for i in range(n):
        feed=input()
        phone_book[feed.split()[0]]=feed.split()[1]
    while True:
        name=input()
        if name in phone_book.keys():
            print(name,end="")
            print("=",end="")
            print(phone_book[name])
        else:
            print("Not found")

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Đoạn mã trên đưa ra EOFError vì câu lệnh đầu vào bên trong vòng lặp

ingredients = ["325g plain flour", "200g chilled butter", "125g golden caster sugar", "2 tsp vanilla extract", "2 free range egg yolks"]

for i in ingredients:
8 đưa ra một ngoại lệ ở lần lặp cuối cùng

Bằng cách tiếp tục, bạn đồng ý với Điều khoản dịch vụ và Chính sách quyền riêng tư của chúng tôi và bạn đồng ý nhận các ưu đãi và cơ hội từ Career Karma qua điện thoại, tin nhắn văn bản và email

Trong hướng dẫn này, chúng tôi nói về lỗi Python này và tại sao nó lại xuất hiện. Chúng tôi đi qua một vài tình huống ví dụ để bạn có thể tìm ra cách giải quyết lỗi phổ biến này

Lỗi cú pháp. EOF không mong muốn trong khi phân tích cú pháp

“Lỗi cú pháp. lỗi EOF không mong muốn trong khi phân tích cú pháp” xảy ra khi mã nguồn của bạn kết thúc trước khi tất cả mã được thực thi. Điều này xảy ra khi bạn mắc lỗi trong cấu trúc hoặc cú pháp mã của mình

EOF là viết tắt của Kết thúc tệp. Đây là ký tự cuối cùng trong chương trình Python

Python đến cuối tệp trước khi chạy mọi khối mã nếu

  • Bạn quên đặt mã bên trong một câu lệnh đặc biệt như vòng lặp for, vòng lặp while hoặc hàm
  • Bạn không đóng tất cả các dấu ngoặc đơn trên một dòng mã trong chương trình của mình

Hãy lần lượt đi qua từng sai lầm này. Có những trường hợp khác xảy ra lỗi này nhưng những trường hợp được đề cập ở trên là phổ biến nhất

Ví dụ 1. Kèm theo Mã trong Tuyên bố Đặc biệt

Đối với các vòng lặp, câu lệnh if, vòng lặp while và các hàm yêu cầu ít nhất một dòng mã trong câu lệnh của chúng. Quên bao gồm một dòng mã trong một câu lệnh đặc biệt sẽ dẫn đến lỗi EOF không mong muốn

Hãy xem một vòng lặp in ra danh sách các thành phần trong một công thức

ingredients = ["325g plain flour", "200g chilled butter", "125g golden caster sugar", "2 tsp vanilla extract", "2 free range egg yolks"]

for i in ingredients:

Chúng tôi xác định một biến gọi là "thành phần" lưu trữ danh sách các thành phần cho công thức bánh mì vani. Chúng tôi sử dụng vòng lặp for để lặp qua từng thành phần trong danh sách. Chạy mã của chúng tôi và xem điều gì sẽ xảy ra

File "main.py", line 4
    
                     	^
SyntaxError: unexpected EOF while parsing

Chúng tôi chưa thêm bất kỳ mã nào vào vòng lặp “for” của chúng tôi. Điều này gây ra một lỗi. Lỗi tương tự này xảy ra nếu chúng ta xác định vòng lặp while, câu lệnh if hoặc hàm mà không kèm theo bất kỳ mã nào trong câu lệnh

» THÊM.   Cấu trúc dữ liệu Python

Để giải quyết vấn đề này, chúng tôi thêm một số mã vào vòng lặp của chúng tôi. Chúng tôi thêm một câu lệnh

File "main.py", line 4
    
                     	^
SyntaxError: unexpected EOF while parsing
1 để chúng tôi có thể in từng thành phần riêng lẻ ra bảng điều khiển

for i in ingredients:
	print(i)

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

325g plain flour
200g chilled butter
125g golden caster sugar
2 tsp vanilla extract
2 free range egg yolks

Mã của chúng tôi in ra từng thành phần trong danh sách thành phần của chúng tôi. Điều này cho chúng tôi biết các khối mã đã được hoàn thành thành công.  

Nếu bạn không có bất kỳ mã nào muốn thêm vào một câu lệnh đặc biệt, hãy sử dụng câu lệnh “vượt qua” làm trình giữ chỗ. Hãy xem xét mã này

ingredients = ["325g plain flour", "200g chilled butter", "125g golden caster sugar", "2 tsp vanilla extract", "2 free range egg yolks"]

for i in ingredients:
	pass

Mã này không trả về giá trị nào. Chúng ta đã định nghĩa một vòng lặp nhưng câu lệnh “pass” cho chương trình của chúng ta biết rằng vòng lặp chưa cần thực hiện bất cứ điều gì. Từ khóa này thường được sử dụng khi các nhà phát triển đang xây dựng cấu trúc cho một chương trình. Khi cấu trúc của chương trình được xác định, câu lệnh “vượt qua” được thay thế bằng mã có liên quan

Ví dụ #2. Dấu ngoặc đơn không đóng

Lỗi "EOF không mong muốn trong khi phân tích cú pháp" xảy ra khi bạn quên đóng tất cả các dấu ngoặc đơn trên một dòng mã

Viết chương trình in thông tin về một công thức ra bàn điều khiển. Bắt đầu bằng cách xác định một vài biến với thông tin về công thức

name = "Vanilla Shortbread"
author = "Career Karma"
vegetarian = "This recipe is vegetarian."

Chúng tôi định dạng này thành một chuỗi bằng cách sử dụng phương pháp

File "main.py", line 4
    
                     	^
SyntaxError: unexpected EOF while parsing
2

print("The {} recipe was devised by {}. {}".format(name, author, vegetarian)

Các giá trị {} được thay thế bằng các giá trị tương ứng trong câu lệnh

File "main.py", line 4
    
                     	^
SyntaxError: unexpected EOF while parsing
2. Điều này có nghĩa là chuỗi của chúng tôi sẽ nói

ingredients = ["325g plain flour", "200g chilled butter", "125g golden caster sugar", "2 tsp vanilla extract", "2 free range egg yolks"]

for i in ingredients:
1

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

ingredients = ["325g plain flour", "200g chilled butter", "125g golden caster sugar", "2 tsp vanilla extract", "2 free range egg yolks"]

for i in ingredients:
2

Trên dòng mã

File "main.py", line 4
    
                     	^
SyntaxError: unexpected EOF while parsing
1 của chúng tôi, chúng tôi chỉ đóng một bộ dấu ngoặc đơn. Chúng tôi đã mở hai bộ dấu ngoặc đơn. Do đó, một lỗi đã được trả lại.  

» THÊM.   Sự kiện Python tốt nhất để tìm hiểu và nhận hỗ trợ

Chúng tôi giải quyết vấn đề này bằng cách thêm ký tự dấu ngoặc đơn kết thúc (“)”) vào cuối dòng mã

File "main.py", line 4
    
                     	^
SyntaxError: unexpected EOF while parsing
1

ingredients = ["325g plain flour", "200g chilled butter", "125g golden caster sugar", "2 tsp vanilla extract", "2 free range egg yolks"]

for i in ingredients:
5

Dòng mã này kết thúc bằng hai dấu ngoặc thay vì một. Tất cả các dấu ngoặc đơn hiện đã đóng

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

File "main.py", line 4
    
                     	^
SyntaxError: unexpected EOF while parsing
0

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

Lỗi tương tự này xảy ra nếu bạn quên đóng từ điển bằng dấu ngoặc {}. Bạn cũng gặp phải lỗi này nếu quên đóng danh sách bằng dấu ngoặc []

Làm cách nào để bỏ qua lỗi eof trong python?
Làm cách nào để bỏ qua lỗi eof trong python?

"Career Karma bước vào cuộc đời tôi khi tôi cần nó nhất và nhanh chóng giúp tôi phù hợp với bootcamp. Hai tháng sau khi tốt nghiệp, tôi đã tìm được công việc mơ ước phù hợp với giá trị và mục tiêu của mình trong cuộc sống. "

Venus, Kỹ sư phần mềm tại Rockbot

Find Your Bootcamp Match

Sự kết luận

“Lỗi cú pháp. lỗi EOF không mong muốn trong khi phân tích cú pháp” xuất hiện khi trình thông dịch Python chạy đến cuối chương trình trước khi mọi dòng mã được thực thi

Để giải quyết lỗi này, trước tiên hãy kiểm tra để đảm bảo rằng mọi câu lệnh if, vòng lặp for, vòng lặp while và hàm đều chứa mã. Thứ hai, hãy kiểm tra để đảm bảo rằng bạn đã đóng tất cả các dấu ngoặc đơn trong mã của mình

Bây giờ bạn đã sẵn sàng để giải quyết lỗi cú pháp này như một chuyên gia Python

5 Xếp hạng



Về chúng tôi. Career Karma là một nền tảng được thiết kế để giúp người tìm việc tìm kiếm, nghiên cứu và kết nối với các chương trình đào tạo việc làm để thăng tiến trong sự nghiệp của họ. Tìm hiểu về ấn phẩm CK