将用户输入转换为浮点数时出错

时间:2015-10-28 02:16:07

标签: python string loops

magnitude = input("Enter the value of magnitude: ")

for mag in magnitude:
    if float(mag) <= 1.9:
        print(mag1)

    elif float(mag) <= 2.9:
        print(mag2)

    elif float(mag) <= 3.9:
        print(mag3)

如果我使用小数进行任何输入,我会收到此错误

Traceback (most recent call last):  line 36, in effects
    if float(mag) <= 1.9:
ValueError: could not convert string to float: '.'

我尝试在循环之前将原始输入语句转换为浮点数,但它只是给了我一个不同的错误。

3 个答案:

答案 0 :(得分:0)

函数input总是为您提供一个字符串。在这种情况下,您尝试迭代字符串。如果将此值更改为浮点数,您将遇到类似的问题。

答案 1 :(得分:0)

假设Python 3.x,input()为您提供了一个字符串,因此magnitude是一个字符串。

当您执行for mag in magnitude:时,您正在迭代输入字符串中的每个字符,因此如果您输入5.4之类的内容,mag将首先为5,然后{ {1}}然后.。当您尝试将4转换为浮动时,会导致此问题。

如果输入一个十进制数字,则不需要循环,只需执行 -

即可
'.'

假设先前已定义try: if float(magnitude) <= 1.9: print(mag1) elif float(magnitude) <= 2.9: print(mag2) elif float(magnitude) <= 3.9: print(mag3) except ValueError: print("Invalid Input") #Handle invalid input the way you like. / mag1 / mag2

如果您的输入是空格分隔的十进制数字,例如mag3,那么在字符串上使用5.4 4.5 ...基于任何空格进行拆分(以便获得所有数字的列表)然后迭代拆分列表,示例 -

.split()

再次假设先前已定义for mag in magnitude.split(): try: if float(mag) <= 1.9: print(mag1) elif float(mag) <= 2.9: print(mag2) elif float(mag) <= 3.9: print(mag3) except ValueError: print("Invalid Input") #Handle invalid input the way you like. / mag1 / mag2

答案 2 :(得分:0)

Python字符串作为序列运行,其中每个字符都是一个元素。 因此,如果您输入字符串&#34; 2.5&#34;,则行for mag in magnitude:将依次遍历每个字符。

例如:

magnitude = "2.5"
for mag in magnitude:
    print mag

将产生:

4
.
9

字符49可以强制转换为数字类型,但.可能会导致您的错误。