将用户输入转换为float numb时出错

2024-06-26 00:09:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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: '.'

我尝试在循环之前将原始的input语句转换为float,但它只会给我一个不同的错误。你知道吗


Tags: oftheinforinputifvalue错误
3条回答

假设python3.x,input()给您一个字符串,因此magnitude是一个字符串。你知道吗

执行for mag in magnitude:操作时,将迭代输入字符串中的每个字符,因此,如果输入类似5.4的内容,mag将首先是5,然后是.,然后是4。当您尝试将'.'转换为float时,这会导致问题。你知道吗

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

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/mag3。你知道吗

函数input总是给你一个字符串。在本例中,您尝试对字符串进行迭代。如果将此值更改为浮点值,则会遇到类似的问题。你知道吗

Python字符串作为序列操作,其中每个字符都是一个元素。 因此,如果输入字符串“2.5”,那么for mag in magnitude:行将依次遍历每个字符。你知道吗

例如:

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

将产生:

4
.
9

字符49可以强制为数字类型,但是.不能,这会导致错误。你知道吗

相关问题 更多 >