Python如何将输入在input()的分数变为浮点数

结论

使用eval()函数将字符串转换为有效的运算表达式


背景介绍

Python中使用input()让用户输入分数计算时,会发生报错:ValueError: could not convert string to float: '77/24'

image


问题分析

我的要求是让分数变为浮点数,报错中却提到字符串无法转为浮点数。我输入的是分数,为什么变成了字符串?

分数的表达式在计算机中就是就除法的格式
而在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'>
posted on 2023-09-19 00:49  心花毒  阅读(342)  评论(0)    收藏  举报