Python "ValueError: could not convert string to float: %"

Python "ValueError: could not convert string to float: %"

我有一套说明:

创建一个名为 format_change 的函数,该函数采用 Change 列中的字符串并执行以下操作:

这是我的代码:

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%)

它return输出:

ValueError: could not convert string to float: '%'

如何正确转换它?

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

def format_change(string):
    if string[-1] == "%":
        string = string[:-1]  # added ':'

试试这个:

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%'))

试试这个:

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

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

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