2024-09-26 17:49:26 发布
网友
我正在尝试定义一个函数来生成矩形的周长。代码如下:
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()之后放入一些print语句,会发生什么情况:
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
注意,第一个print语句打印整个字符串'1 2'。对input()的第二次调用引发EOFError(文件结束错误)。
'1 2'
EOFError
所以像我用的那种简单的管道只允许你传递一个字符串。因此,您只能调用input()一次。然后必须处理该字符串,将其拆分为空白,并将字符串片段转换为int。那就是
width, height = map(int, input().split())
是的。
注意,还有其他方法可以将输入传递给程序。如果您在终端中运行了test.py,那么您可以分别键入1和2,没有问题。或者,您可以编写一个带有pexpect的程序来模拟终端,以编程方式传递1和2。或者,您可以使用argparse在命令行上传递参数,允许您使用
test.py
1
2
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())
这样运行会产生:
我怀疑IDLE只是在向脚本传递一个字符串。第一个
input()
是整个字符串。注意,如果在调用input()
之后放入一些print语句,会发生什么情况:运行
echo "1 2" | test.py
生成注意,第一个print语句打印整个字符串
'1 2'
。对input()
的第二次调用引发EOFError
(文件结束错误)。所以像我用的那种简单的管道只允许你传递一个字符串。因此,您只能调用
input()
一次。然后必须处理该字符串,将其拆分为空白,并将字符串片段转换为int。那就是是的。
注意,还有其他方法可以将输入传递给程序。如果您在终端中运行了
test.py
,那么您可以分别键入1
和2
,没有问题。或者,您可以编写一个带有pexpect的程序来模拟终端,以编程方式传递1
和2
。或者,您可以使用argparse在命令行上传递参数,允许您使用**最好使用try-except块来消除EOF**
将输入转换为整数:
相关问题 更多 >
编程相关推荐