我正在尝试定义一个函数来制作矩形的周长。这是代码:
width = input()
height = input()
def rectanglePerimeter(width, height):
return ((width + height)*2)
print(rectanglePerimeter(width, height))
我想我没有留下任何争论或类似的东西。
我正在尝试定义一个函数来制作矩形的周长。这是代码:
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
注意第一个打印语句打印整个字符串'1 2'
。第二次调用input()
引发EOFError
(文件结束错误)。
所以一个简单的管道,比如我使用的那个,只允许你传递一个字符串。因此,您只能调用input()
一次。然后,您必须处理此字符串,将其拆分为空格,然后自己将字符串片段转换为整数。那是什么
width, height = map(int, input().split())
做。
请注意,还有其他方法可以将输入传递给您的程序。如果您test.py
在终端中运行,那么您可以毫无问题地单独1
输入。2
或者,您可以使用pexpect编写一个程序来模拟终端,1
并以2
编程方式传递。或者,您可以使用argparse在命令行上传递参数,允许您使用
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())