不明白如何对条件进行编码
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():
这里没有错误,但我不明白如何对条件进行编码。如果我将条件更改为 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():