我不确定为什么会收到此错误。我已经阅读并尝试了不同的东西,但它不起作用。
def product():
y, x= raw_input('Please enter two numbers: ')
times = float(x) * int(y)
print 'product is', times
product()
我究竟做错了什么?非常感谢
我不确定为什么会收到此错误。我已经阅读并尝试了不同的东西,但它不起作用。
def product():
y, x= raw_input('Please enter two numbers: ')
times = float(x) * int(y)
print 'product is', times
product()
我究竟做错了什么?非常感谢
raw_input
返回单个字符串。要在你做的时候解压参数,它需要返回两件事。
你可以这样做:
y, x = raw_input('Please enter two numbers (separated by whitespace): ').split(None,1)
请注意,这仍然有点脆弱,因为用户可以输入像“2 1 3”这样的字符串。解包将毫无例外地工作,但在尝试将“1 3”转换为整数时会阻塞。做这些事情的最强大的方法是通过一个try/except
块。这就是我将如何做到的。
while True: #try to get 2 numbers forever.
try:
y, x = raw_input("2 numbers please (integer, float): ").split()
y = int(y)
x = float(x)
break #got 2 numbers, we can stop trying and do something useful with them.
except ValueError:
print "Oops, that wasn't an integer followed by a float. Try again"
@mgilson 的回答是正确的;除非有人输入三个数字,否则您将得到相同的ValueError
例外。
所以,这个替代版本抓住了:
numbers = raw_input('Please enter only two numbers separated by a space: ').split()
if len(numbers) > 2:
print 'Sorry, you must enter only two numbers!'
else:
x,y = numbers