为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森林海 2023-09-05 15:33:55
我有一组说明:创建一个名为 的函数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 * 100return str_as_float然而,当我输入该函数时format_change(0.45%)它返回输出:ValueError:无法将字符串转换为浮点数:'%'我该怎么做才能正确转换它?
查看完整描述

4 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

您正在将字符串分配'%'给变量,但您想要除该字符之外的所有内容。将函数的开头更改为:


def format_change(string):

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

        string = string[:-1]  # added ':'


查看完整回答
反对 回复 2023-09-05
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

尝试这个:


解决方案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_float


print(format_change('-0.45%'))

解决方案2:


def format_change(string):

   if string.endswith('%'):

       return abs(float(string[0:-1]))*100


print(format_change('-0.45%'))

解决方案3:


def format_change(string):

    return abs(float(string.split('%')[0]))*100


print(format_change('-0.45%')

输出:


45.0


查看完整回答
反对 回复 2023-09-05
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

如果您正在寻找单衬,您可以使用这个:


def format_change(string):

    return float(string.replace('%',''))*100 if float(string.replace('%',''))>0 else float(string.replace('%',''))

format_change("-50%")

# -50.0

format_change("50%")

# 5000.0


查看完整回答
反对 回复 2023-09-05
?
浮云间

TA贡献1829条经验 获得超4个赞

尝试这个:


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



print(format_change('0.45%'))


查看完整回答
反对 回复 2023-09-05
  • 4 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信