numOfYears = 0
cpi = eval(input("Enter the CPI for July 2015: "))
if cpi.isdigit():
while cpi < (cpi * 2):
cpi *= 1.025
numOfYears += 1
print("Consumer prices will double in " + str(numOfYears) + " years.")
while not cpi.isdigit():
print("Bad input")
cpi = input("Enter the CPI for July 2015: ")
我收到以下错误 .
AttributeError:'int'对象没有属性'isdigit'
因为我真的知道它是什么's trying to tell me. I'使用 if cpi.isdigit():
来检查用户输入的是否是有效数字 .
4 回答
据记载here
isdigit()
是一个字符串方法 . 您不能为整数调用此方法 .这条线,
evaluates
用户输入为整数 .但是如果你删除
eval
方法(你最好这样做),一切都会好起来的 .
顺便使用eval而不用sanitizin用户输入可能会导致问题
考虑一下 .
用这个:
isdigit()
仅适用于字符串 .eval() is very dangerous!和
int()
内置函数可以将字符串转换为数字 .如果您想在用户未输入数字时捕获错误,请使用
try...except
,如下所示: