gpt4 book ai didi

python - 验证用户输入的浮点值

转载 作者:行者123 更新时间:2023-11-30 22:15:25 25 4
gpt4 key购买 nike

该函数将接受一个字符串作为输入。该字符串具有以下属性:

  • 包括字符 0-9
  • 可以包含表示分的句点。 (如果不假设包含 0 美分。)
  • 可以包含 $ 符号。
  • 可以包含逗号数字分隔符。

您的函数会将字符串转换为 float 。您不得使用任何内置命令,例如 int 或 float。您必须通过分析文本字符串中的字符来解决此问题。

如果输入无效,则返回 -1 作为函数结果。

如果我输入以下内容:

100.00
200
98.78
$1,009.78
Goat
exit

输出如下:

Determine Price with Tax.
Enter 'exit' at any time to quit.
Enter Amount ($X,XXX.XX):
Amount: 100.0
Tax: 6.0
Price w/ Tax: 106.0
Enter Amount ($X,XXX.XX):
Amount: 200
Tax: 12.0
Price w/ Tax: 212.0
Enter Amount ($X,XXX.XX):
Amount: 98.78
Tax: 5.93
Price w/ Tax: 104.71
Enter Amount ($X,XXX.XX):
Amount: 1009.78
Tax: 60.59
Price w/ Tax: 1070.37
Enter Amount ($X,XXX.XX):
Amount: -1
Tax: -0.06
Price w/ Tax: -1.06
Enter Amount ($X,XXX.XX):

我的代码是:

def price_to_int(text):
res = 0
valid = "$,.1234567890"
for l in text:
if l in valid:
res = float(text)
else:
return -1
return res

#---------You may not make any changes below this line-----------
print("Determine Price with Tax.")
print("Enter 'exit' at any time to quit.")
word = input("Enter Amount ($X,XXX.XX):\n")
while word.lower() != "exit":
d = price_to_int(word)
tax = 0.06
print("Amount:",round(d,2))
print("Tax:",round(d*tax,2))
print("Price w/ Tax:",round(d+d*tax,2))
word = input("Enter Amount ($X,XXX.XX):\n")

唯一错误的是函数定义。我的代码一直有效,直到我输入“$1009.78”。我被特别要求只重写函数定义而不更改任何其他内容。

最佳答案

您当前的解决方案对我来说似乎不合适。您正在逐个字符地迭代字符串,强制每个参数。您希望立即转换整个字符串(否则,您将如何获得 float ?)。

您想要一个使用 try ... except 进行异常处理的解决方案吗?

def price_to_int(text):
clean_text = text.lstrip('$').replace(',', '')
try:
return int(clean_text)
except:
try:
return float(clean_text)
except ValueError:
return -1

此解决方案会清理您的字符串并尝试转换为 float 。如果无法进行转换,则会引发错误并进行处理,并返回 -1。

详细信息

  • str.lstrip 删除前导 $ 字符
  • str.replace 删除逗号(当第二个参数为空字符串时)
  • try ... except ValueError: ... 将尝试在 try block 内运行代码,同时等待捕获 ValueError 异常。如果引发异常,则执行 except block 内的代码(否则不执行)。

关于python - 验证用户输入的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50311959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com