Python 版本 - 2.7.11
我正在关注 Zed Shaw 的艰难地学习 Python,目前在 Exercise 21
我正在尝试修改代码,以便脚本提示用户输入值(年龄、高度等),而不是对它们进行硬编码。
在其他一切保持不变的情况下,我修改了这一行:
age = add(float(raw_input('Enter 2 numbers')))
..并输入两个数字 (5, 1) 导致以下错误:-
ValueError: invalid literal for float(): 5,2
我用 int(raw_input()) 替换了 float(raw_input()) 并给出了以下错误
ValueError: invalid literal for int() with base 10: '5,1'
有人可以告诉我哪里出错了吗?
请您参考如下方法:
在将它们转换为 float 之前,您需要将输入分成两个数字;使用 str.split() :
while True:
ages = raw_input('Enter 2 numbers')
try:
age1, age2 = [float(age) for age in ages.split(',')]
break
except ValueError:
print("Sorry, you did not enter two numbers, try again")
add(age1, age2)
我添加了一个 while True 循环,以便在出现错误时不断询问正确的输入;如果 float() 无法转换值,或者如果没有足够或太多的输入,则会引发 ValueError 异常。如果转换成功并且恰好有两个值分配给 age1 和 age2,则不会引发异常并且 break 语句退出无限循环。参见 Asking the user for input until they give a valid response有关其工作原理的更多详细信息。
