python - EOFError : EOF when reading a line 错误

标签 python python-3.x

我正在尝试定义一个函数来生成矩形的周长。这是代码:

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 产生

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

注意第一个 print 语句打印了整个字符串 '1 2'。第二次调用 input() 引发了 EOFError(文件结束错误)。

所以一个简单的管道,比如我使用的那个,只允许你传递一个字符串。因此,您只能调用一次 input()。然后您必须处理这个字符串,将其拆分为空格,然后自己将字符串片段转换为整数。就是这样

width, height = map(int, input().split())

会。

请注意,还有其他方法可以将输入传递给您的程序。如果您在终端中运行了 test.py,那么您可以分别输入 12 没有问题。或者,您可以使用 pexpect 编写程序模拟终端,以编程方式传递 12。或者,您可以使用 argparse在命令行上传递参数,允许您调用您的程序

test.py 1 2

关于python - EOFError : EOF when reading a line 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17675925/

相关文章:

python-3.x - 将外部队列传递给 flask 路由函数?

python - 如何在python中动态转义/输入文件名

python - 在 selenium 中通过 xpath 查找元素,部分匹配

python - 将 PyQt 输出与 python 文件链接

json - 如何修复Python Elasticsearch Bulk的RequestError?

python - 如何能够以一定的字符串长度添加字符(Python)?

python - 如何在汇编器中使用 IF 伪操作处理前向引用

python-3.x - 如何在不使用 Flask 的情况下将 Python 应用程序绑定(bind)到 Heroku 上的端口?

python - 不安全请求警告 + pytest

python - 如何在Python中根据顶点确定三角形的顺时针顺序