我這里有這個 python 函式。但是,在運行時出現錯誤“無法將字串轉換為浮點數:'$50.50'”。我需要將輸入添加為包含“$”符號的字串,然后在后端將其轉換為浮點數。該功能似乎只添加“50.50”作為輸入。
def main():
dollars = dollars_to_float(input("How much was the meal? "))
percent = percent_to_float(input("What percentage would you like to tip? "))
tip = dollars * percent/100
print(f"Leave $" , str(tip) )
def dollars_to_float(d):
str.lstrip(d)
return float(d)
def percent_to_float(p):
str.rstrip(p)
return float(p)
main()
錯誤:
File "/Users/nelsonlamounier/indoor/indoor.py", line 13, in <module>
main()
File "/Users/nelsonlamounier/indoor/indoor.py", line 9, in dollars_to_float
return float(d)
File "/Users/nelsonlamounier/indoor/indoor.py", line 9, in dollars_to_float
return float(d)
ValueError: could not convert string to float: '$50.50'
uj5u.com熱心網友回復:
對于更一般的情況,dollars_to_float請使用以下內容進行更新:
def dollars_to_float(d):
d = ''.join([ch for ch in d if ch.isnumeric() or ch == '.'])
return float(d)
uj5u.com熱心網友回復:
只需在數字之前洗掉 $,例如:
def dollars_to_float(d):
str.lstrip(d)
return float(d.replace("$",""))
uj5u.com熱心網友回復:
您的代碼容易出錯,因為單個空格字符已經能夠破壞它。可以在此處找到更強大的貨幣到浮動轉換的版本使用價格通用解決方案從字串中洗掉貨幣符號和文字
您可以使用 locale 查看小數點字符(或 .)是什么,使用正則運算式洗掉除數字和小數點以外的所有字符。
import re
import locale
def dollars_to_float(price_string: str) -> float:
decimal_point_char = locale.localeconv()['decimal_point']
clean = re.sub(r'[^0-9' decimal_point_char r'] ', '', str(price_string))
return float(clean)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/514022.html
