不了解如何对条件进行编码



没有错误,但我不明白如何编码条件。如果我将条件更改为if money != string.digits:并运行代码,然后输入一个数字,它将进入一个无限循环,直到我插入任何东西,除了我不想要的数字,但条件是如果它不等于is语句将工作。

你看到的代码就是我的意思。条件是,如果来自用户的输入是一个数字,运行if语句,但是当我运行代码时,它没有做我想要的。我知道这是权宜之计但是我一点也不自信,因为我做不到,就这样。

import string
money=float(input("put you salary (year)"))
while True:
try:
if money == string.digits:
print("please enter a digit")
money = float(input("put you salary (year)"))
else:
break
except:
money = float(input("put you salary (year)"))
price = money*(2.5/100)
print(price)

您可以仅try/except将输入转换为float

while True:
try:
money = float(input("put you salary (year)"))
break
except ValueError:
print("This is not a number. Please enter a valid number")
price = money * (2.5 / 100)
print(price)

Python提到了EAFP(请求原谅比请求许可更容易),因为它通常会产生更快、更干净的代码。这意味着你假定输入是浮点数,当它不是浮点数时就捕获错误。而不是在错误之前验证输入。

另外,在处理浮点运算时,一定要记住这里列出的问题和限制:浮点运算:问题和限制。

我不确定我完全理解这个问题,但这似乎令人困惑的==in,以及其他事情。但问题的核心是:

if money == string.digits:

这可能意味着你想检查money字符串是否只由数字组成,它不会工作,因为你检查的是相等性,而不是money的所有字符都在string.digits中:

if all(char in string.digits for char in money):

编辑:

正如@martineau指出的,上面的测试是str.isidigit()的长版本

if money.isdigit():

最新更新