[英]EOFError: EOF when reading a line
我正在嘗試定義一個函數來制作矩形的周長。 這是代碼:
width = input()
height = input()
def rectanglePerimeter(width, height):
return ((width + height)*2)
print(rectanglePerimeter(width, height))
我想我沒有留下任何爭論或類似的東西。
width, height = map(int, input().split())
def rectanglePerimeter(width, height):
return ((width + height)*2)
print(rectanglePerimeter(width, height))
像這樣運行它會產生:
% echo "1 2" | test.py
6
我懷疑 IDLE 只是將單個字符串傳遞給您的腳本。 第一個input()
正在處理整個字符串。 注意如果在調用input()
之后放入一些打印語句會發生什么:
width = input()
print(width)
height = input()
print(height)
運行echo "1 2" | test.py
echo "1 2" | test.py
產生
1 2
Traceback (most recent call last):
File "/home/unutbu/pybin/test.py", line 5, in <module>
height = input()
EOFError: EOF when reading a line
注意第一個打印語句打印整個字符串'1 2'
。 第二次調用input()
會EOFError
(文件結束錯誤)。
所以一個簡單的管道,比如我使用的那個,只允許你傳遞一個字符串。 因此你只能調用input()
一次。 然后,您必須處理此字符串,將其拆分為空格,然后自己將字符串片段轉換為整數。 那是什么
width, height = map(int, input().split())
做。
請注意,還有其他方法可以將輸入傳遞給您的程序。 如果您在終端中運行test.py
,那么您可以分別輸入1
和2
沒有問題。 或者,您可以使用pexpect編寫一個程序來模擬終端,以編程方式傳遞1
和2
。 或者,您可以使用argparse在命令行上傳遞參數,從而允許您使用
test.py 1 2
**最好是使用try except塊來擺脫EOF **
try:
width = input()
height = input()
def rectanglePerimeter(width, height):
return ((width + height)*2)
print(rectanglePerimeter(width, height))
except EOFError as e:
print(end="")
將您的輸入轉換為整數:
width = int(input())
height = int(input())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.