不明白如何对条件进行编码

Don't understand how to code the condition

这里没有错误,但我不明白如何对条件进行编码。如果我将条件更改为 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 将输入转换为浮点数。

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(请求宽恕比请求许可更容易)因为它通常会产生更快、更清晰的代码。这意味着您假设输入将是一个浮点数,并且在不是时捕获错误。而不是在错误之前验证输入。

此外,在处理浮点运算时,请务必牢记此处概述的问题和限制:Floating Point Arithmetic: Issues and Limitations

我不确定我是否完全理解这个问题,但这似乎混淆了 ==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():