ValueError:无法将字符串转换为float:使用输入函数时

时间:2014-02-04 00:39:01

标签: python python-3.x

我用错误读取了类似的线程,无法找到解决方案。在大多数其他线程中,似乎人们输入的数据不正确,但正如您所看到的,我正在输入具有正确类型的值。我似乎无法找到我可能遗失的其他东西。有任何想法吗?

def main():
    a, b, c, d, e, f  = float(input("Enter a, b, c, d, e, f: "))



    x = ((e * d) - (b * f))/ (
        (a * d) - (b * c) )

    y = ((a * f) - (e * c)) / (
        (a * d) - (b * c) )

    print("x is %f and y is %f" % (x,y))

if __name__ == "__main__":
    main()

错误讯息:

>>>Enter a, b, c, d, e, f: 9.0, 4.0, 3.0, -5.0, -6.0, -21.0
ValueError: could not convert string to float: '9.0, 4.0, 3.0, -5.0, -6.0, -21.0'

3 个答案:

答案 0 :(得分:2)

float()函数尝试将整个字符串转换为单个float。从技术上讲,这可行:

a, b, c, d, e, f  = [float(number) for number in input("Enter a, b, c, d, e, f: ").split(', ')]

但请记住,如果不是

,则没有错误处理

答案 1 :(得分:1)

如果确保始终包含小数点

from ast import literal_eval
a, b, c, d, e, f = literal_eval(input("Enter a, b, c, d, e, f: "))

如果缺少小数点,则相应的变量将是int而不是float

答案 2 :(得分:0)

问题是由逗号分隔的一系列浮点值无法转换为单个float

要么单独询问每个浮点数,要么在逗号上拆分输入字符串并循环转换它们。

我建议单独询问每个浮标。编写一个函数input_float(),它接受​​来自用户的输入,尝试转换为float,并告诉用户是否存在问题;它可以有一个循环,一直循环,直到用户成功输入一个浮点值。

您可能希望让input_float()函数接受一个字符串显示为提示,另一个字符串显示错误,以及一个验证输入的函数。因此,如果用户必须输入0到100之间的浮点值,则可以创建执行此检查的验证函数。

一旦编写了灵活的input_float()功能,您就可以在程序中反复使用它。