1. ホーム
  2. python

[解決済み] AttributeError: 'int' オブジェクトには 'isdigit' という属性がありません。

2022-02-07 16:29:23

質問

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' という属性がありません。

私はプログラミングの初心者なので、これが何を伝えようとしているのかよくわからないのです。私は if cpi.isdigit(): を使用して、ユーザーが入力したものが有効な数字であるかどうかをチェックします。

どのように解決するのですか?

numOfYears = 0
# since it's just suppposed to be a number, don't use eval!
# It's a security risk
# Simply cast it to a string
cpi = str(input("Enter the CPI for July 2015: "))

# keep going until you know it's a digit
while not cpi.isdigit():
    print("Bad input")
    cpi = input("Enter the CPI for July 2015: ")

# now that you know it's a digit, make it a float
cpi = float(cpi)
while cpi < (cpi * 2):
    cpi *= 1.025
    numOfYears += 1
# it's also easier to format the string
print("Consumer prices will double in {} years.".format(numOfYears))