Skip to main content
 首页 » 编程设计

Python 2.7之无效文字错误

2025年05月04日27lidabo

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有关其工作原理的更多详细信息。