我用错误读取了类似的线程,无法找到解决方案。在大多数其他线程中,似乎人们输入的数据不正确,但正如您所看到的,我正在输入具有正确类型的值。我似乎无法找到我可能遗失的其他东西。有任何想法吗?
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'
答案 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()
功能,您就可以在程序中反复使用它。