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)
Running 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())
does.
请注意,还有其他方法可以将输入传递给程序。如果你跑了test.py
在终端中,那么你可以输入1
and 2
分开没有问题。或者,您可以编写一个程序pexpect模拟终端,传递1
and 2
以编程方式。或者,你可以使用argparse在命令行上传递参数,允许您使用以下命令调用程序
test.py 1 2