Python如何将输入在input()的分数变为浮点数
结论
使用eval()函数将字符串转换为有效的运算表达式
背景介绍
Python中使用input()让用户输入分数计算时,会发生报错:ValueError: could not convert string to float: '77/24'

问题分析
我的要求是让分数变为浮点数,报错中却提到字符串无法转为浮点数。我输入的是分数,为什么变成了字符串?
分数的表达式在计算机中就是就除法的格式,
而在Python中,使用除法运算式是可以直接得到浮点数,
例如:
var = 77/24
print(var)
print(type(var))
结果
3.2083333333333335
<class 'float'>
但因为input()函数,用户在输入数据后直接就转换为字符串格式。
问题关键:分数中的运算符“/”被input()默认输出为字符串,从而无法完成运算变为浮点数,也无法被float转换数据类型,导致报错。
问题解决方案
问题的难点:
如何将字符串变为有效的运算表达式?
使用eval()函数将字符串转换为有效的运算表达式。
eval()可以将字符串str当成有效的表达式来求值并返回计算结果。
例如:
var = float(eval(input("输入分数:")))
print(var)
print(type(var))
结果:
输入分数:77/24
3.2083333333333335
<class 'float'>
浙公网安备 33010602011771号