无法在Python中将字符串转换为float

时间:2016-02-17 21:15:32

标签: python

我正在尝试编写一个小程序来计算用户的数字。还有一些条件可以检查数字是正数还是用户只是输入。出于某种原因,我无法将数据变量转换为浮点数。

错误发生在第5行,我得到错误“ValueError:无法将字符串转换为浮点数:”我现在尝试了很多组合,并尝试搜索StackOverflow以获得答案,但没有任何运气。

如何将输入转换为浮点数?在此先感谢您的帮助!

sum = 0.0

while True:

    data = float(input('Enter a number or just enter to quit: '))

    if data < 0:
        print("Sorry, no negative numbers!")
        continue
    elif data == "":
        break
    number = data
    sum += data

print("The sum is", sum)

4 个答案:

答案 0 :(得分:1)

您可以改为写入:

,而不是让用户按Enter键退出
sum = 0.0

while True:
    data = float(input('Enter a number or "QUIT" to quit: '))

    if data.upper() != "QUIT":

        if data < 0:
            print("Sorry, no negative numbers!")
            continue
        elif data == "":
            break
        number = data
        sum += data

print("The sum is", sum)

答案 1 :(得分:0)

您无法将空字符串转换为浮点数。

获取用户的输入,检查其是否为空,如果不是,则然后将其转换为浮动。

答案 2 :(得分:0)

在使用这种方式转换为float之前,您可以检查数据是否为空:

sum = 0.0

while True:

    data = input('Enter a number or just enter to quit: ')

    if data != "":
        data = float(data);
        if data < 0:
           print("Sorry, no negative numbers!")
           continue
        number = data
        sum += data 
        print("The sum is", sum)
     else:
        print("impossible because data is empty")

答案 3 :(得分:0)

您必须首先检查空字符串,然后将其转换为float

此外,您可能希望捕获格式错误的用户输入。

sum = 0.0

while True:

    answer = input('Enter a number or just enter to quit: ')

    if not answer:   # break if string was empty
        break
    else:        
        try:
            number = float(data)
        except ValueError:   # Catch the error if user input is not a number
            print('Could not read number') 
            continue
        if number < 0:
            print('Sorry, no negative numbers!')
            continue
        sum += data

print('The sum is', sum)

在python中,像''这样的空白内容比较False,在与if not <variable>if <variable>的比较中使用它是惯用的。

这也适用于空列表:

>>> not []
True

适用于None

>>> not None
True

几乎所有其他可以描述为空或未定义的内容如None