【问题标题】:Error in converting a user input into a float number将用户输入转换为浮点数时出错
【发布时间】:2015-10-28 02:16:06
【问题描述】:
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: '.'

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

【问题讨论】:

    标签: python string loops


    【解决方案1】:

    假设 Python 3.x,input() 给你一个字符串,因此magnitude 是一个字符串。

    当您执行 for mag in magnitude: 时,您将遍历输入字符串中的每个字符,因此如果您输入类似 5.4 的内容,mag 将首先是 5 然后是 . 然后是 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/mag3 是之前定义的。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        Python 字符串作为序列操作,其中每个字符都是一个元素。 所以如果你输入字符串“2.5”,for mag in magnitude:这行会依次遍历每个字符。

        例如:

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

        将产生:

        4
        .
        9
        

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

        【讨论】:

          猜你喜欢
          • 2020-04-29
          • 1970-01-01
          • 1970-01-01
          • 2021-02-22
          • 2018-03-26
          • 2016-02-24
          • 1970-01-01
          • 2023-01-17
          • 2011-05-18
          相关资源
          最近更新 更多