AttributeError: 'int' object n'a pas d'attribut "appel isdigit'

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: ")

J'obtiens l'erreur suivante.

AttributeError: 'int' object n'a pas d'attribut "appel isdigit'

Depuis que je suis nouveau en programmation, je ne sais pas vraiment ce qu'elle essaie de me dire. Je suis à l'aide de la if cpi.isdigit(): de vérifier pour voir si l'utilisateur a entré un numéro de série valide.

Pourquoi ne pas utiliser int(input(...)) qui va le transformer en string en int
Pouvez-vous fournir plus d'informations, comme Ce qui est la valeur que vous êtes de passage? Quelle est votre version de python? Qu'est-ce que la stacktrace?
Je suis saisie d'un nombre entier "239", mais quand quelqu'un d'autre s'exécute le programme, ils devraient être capable de saisir un int ou un float.
Supplémentaire, ce code a une énorme l'exécution Arbitraire de code vulnérabilité due à evaling saisie de l'utilisateur, qui peut contenir du code python.
Ce code va boucler indéfiniment, à moins que cpi est négatif, car un nombre non négatif est inférieur à lui-même deux fois par les règles de base des mathématiques.

OriginalL'auteur Kristofer Ard | 2015-10-10