Python“ValueError:无法将字符串转换为浮点数:%”

我有一组说明:

创建一个名为 的函数format_change,该函数接受“更改”列中的字符串并执行以下操作:

  • 如果最后一个字符是%符号,则将其删除

  • 将字符串转换为浮点数

  • 如果该浮点数为正,则将其乘以 100

  • 返回结果浮点数

这是我的代码:

def format_change(string):

    if string[-1] == "%":

        string = string[-1]


    str_as_float = float(string)


    if str_as_float > 0:

        str_as_float = str_as_float * 100


return str_as_float

然而,当我输入该函数时


format_change(0.45%)

它返回输出:


ValueError:无法将字符串转换为浮点数:'%'


我该怎么做才能正确转换它?


森林海
浏览 142回答 4
4回答

萧十郎

您正在将字符串分配'%'给变量,但您想要除该字符之外的所有内容。将函数的开头更改为:def format_change(string):    if string[-1] == "%":        string = string[:-1]  # added ':'

缥缈止盈

尝试这个:解决方案1:def format_change(string):    if string.endswith("%"):        string = string[0:-1]    str_as_float = float(string)    if str_as_float > 0:        str_as_float = str_as_float * 100    return str_as_floatprint(format_change('-0.45%'))解决方案2:def format_change(string):   if string.endswith('%'):       return abs(float(string[0:-1]))*100print(format_change('-0.45%'))解决方案3:def format_change(string):    return abs(float(string.split('%')[0]))*100print(format_change('-0.45%')输出:45.0

梵蒂冈之花

如果您正在寻找单衬,您可以使用这个:def format_change(string):    return float(string.replace('%',''))*100 if float(string.replace('%',''))>0 else float(string.replace('%',''))format_change("-50%")# -50.0format_change("50%")# 5000.0

浮云间

尝试这个:def format_change(string):    if string[-1] == "%":        string = string[:-1]        str_as_float = float(string)    if str_as_float > 0:        str_as_float = str_as_float * 100    return str_as_floatprint(format_change('0.45%'))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python