width, height = map(int, input().split())def rectanglePerimeter(width, height): return ((width + height)*2)print(rectanglePerimeter(width, height))
像这样运行它会产生:
% echo "1 2" | test.py6
我怀疑IDLE只是将单个字符串传递给您的脚本。首先
input()是对整个字符串进行细化。请注意,如果在调用以下命令后放入一些打印语句,会发生什么情况
input():
width = input()print(width)height = input()print(height)
运行
echo "1 2" | test.py产品
1 2Traceback (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()一次电话。然后,您必须处理此字符串,将其在空白处分割,然后将字符串片段自己转换为int。那是什么
width, height = map(int, input().split())
做。
注意,还有其他方法可以将输入传递给程序。如果您
test.py在终端中运行,那么您可以分别键入
1并
2没有问题。或者,您可能已经编写了带有pexpect的程序来模拟终端,传递
1并以
2编程方式进行编程。或者,您可以使用argparse在命令行上传递参数,从而允许您使用
test.py 1 2



