我正在尝试定义一个函数来生成矩形的周长。这是代码:
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
,那么您可以分别输入 1
和 2
没有问题。或者,您可以使用 pexpect 编写程序模拟终端,以编程方式传递 1
和 2
。或者,您可以使用 argparse在命令行上传递参数,允许您调用您的程序
test.py 1 2
关于python - EOFError : EOF when reading a line 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17675925/