如何解决Python“ ValueError:无法将字符串转换为float:%”
我有一套说明:
创建一个名为format_change
的函数,该函数需要一个字符串(如“更改”列中的字符串)并执行以下操作:
- 如果最后一个字符是
%
符号,请将其删除 - 将字符串转换为 float
- 如果该浮点为正,则将其乘以100
- 返回生成的 float
这是我的代码:
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:无法将字符串转换为浮点数:'%'
如何正确转换?
解决方法
您正在将字符串'%'
分配给变量,但是您需要除该字符以外的所有字符。将函数的开头更改为:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。