Hướng dẫn how do you solve eof while reading a line in python? - làm thế nào để bạn giải quyết eof trong khi đọc một dòng trong python?

width, height = map[int, input[].split[]]
def rectanglePerimeter[width, height]:
   return [[width + height]*2]
print[rectanglePerimeter[width, height]]

Chạy nó như thế này tạo ra:

% echo "1 2" | test.py
6

Tôi nghi ngờ IDLE chỉ đơn giản là chuyển một chuỗi duy nhất cho tập lệnh của bạn. input[] đầu tiên đang nhúng toàn bộ chuỗi. Lưu ý những gì xảy ra nếu bạn đặt một số câu lệnh in sau các cuộc gọi đến input[]:

width = input[]
print[width]
height = input[]
print[height]

Chạy

% echo "1 2" | test.py
6
1 sản xuất

1 2
Traceback [most recent call last]:
  File "/home/unutbu/pybin/test.py", line 5, in 
    height = input[]
EOFError: EOF when reading a line

Lưu ý câu lệnh in đầu tiên in toàn bộ chuỗi

% echo "1 2" | test.py
6
2. Cuộc gọi thứ hai đến input[] làm tăng
% echo "1 2" | test.py
6
4 [lỗi cuối tập tin].

Vì vậy, một đường ống đơn giản như cái tôi chỉ sử dụng chỉ cho phép bạn vượt qua một chuỗi. Do đó, bạn chỉ có thể gọi input[] một lần. Sau đó, bạn phải xử lý chuỗi này, chia nó trên khoảng trắng và chuyển đổi các đoạn chuỗi thành ints. Đó là cái gì

width, height = map[int, input[].split[]]

does.

Lưu ý, có những cách khác để chuyển đầu vào cho chương trình của bạn. Nếu bạn đã chạy

% echo "1 2" | test.py
6
6 trong một thiết bị đầu cuối, thì bạn có thể đã nhập riêng
% echo "1 2" | test.py
6
7 và
% echo "1 2" | test.py
6
8 mà không có vấn đề gì. Hoặc, bạn có thể đã viết một chương trình với pexpect để mô phỏng một thiết bị đầu cuối, vượt qua
% echo "1 2" | test.py
6
7 và
% echo "1 2" | test.py
6
8 theo chương trình. Hoặc, bạn có thể sử dụng argparse để chuyển các đối số trên dòng lệnh, cho phép bạn gọi chương trình của mình với

test.py 1 2



Vì vậy, như chúng ta có thể thấy trong các hình ảnh trên, mặc dù đã tạo ra đầu ra dự kiến, trường hợp thử nghiệm của chúng tôi không thành công do lỗi thời gian chạy, tức là, kết thúc lỗi tệp. Hãy hiểu EOF là gì và làm thế nào để giải quyết nó.EOFError i.e., End of File Error. Let's understand what is EOF and how to tackle it.

Eoferror là gì

Trong Python, một eoferror là một ngoại lệ được nâng lên khi các chức năng như input [] hoặc raw_input [] trong trường hợp python2 trả về phần cuối [EOF] mà không cần đọ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 vài trường hợp phải đối phó với Input [] / RAW_Input [] như:

  • Ngắt mã trong thực thi bằng cách sử dụng

    width = input[]
    print[width]
    height = input[]
    print[height]
    
    1 khi câu lệnh đầu vào được thực thi như được hiển thị bên dưới

  • Một trường hợp có thể khác để gặp EOF là, khi chúng tôi muốn lấy một số đầu vào từ người dùng, tức là chúng tôi không biết số lượng đầu vào chính xác; Do đó, chúng tôi chạy một vòng lặp vô hạn để chấp nhận các đầu vào như bên dưới và gặp lỗi truy tìm ở lần lặp cuối cùng của vòng lặp vô hạn của chúng tôi vì người dùng không đưa ra bất kỳ đầu vào nào ở lần lặp đó

n=int[input[]]
if[n>=1 and n=1 and n

Bài Viết Liên Quan

Chủ Đề