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
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 à
Ce code va boucler indéfiniment, à moins que
int(input(...))
qui va le transformer en string en intPouvez-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 à
eval
ing 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
Vous devez vous connecter pour publier un commentaire.
OriginalL'auteur Ben
Comme documenté ici
isdigit()
est une méthode de chaîne. Vous ne pouvez pas appeler cette méthode pour les entiers.Cette ligne,
evaluates
la saisie de l'utilisateur en entier.Mais si vous supprimez
eval
méthode (il est préférable de le faire),tout ira bien.
par la façon dont l'utilisation d'eval sans sanitizin la saisie de l'utilisateur peut entraîner des problèmes
en tenir compte.
cpi *= 1.025
etcpi
eststr
...il va cracher TypeError, puis il va modifier la question, et posera la question: "j'ai une autre question" 🙂
OriginalL'auteur marmeladze
Utiliser ceci:
isdigit()
fonctionne uniquement pour les chaînes.OriginalL'auteur usr_11
eval()
est très dangereux! Etint()
construit en fonction convertit une chaîne de chiffres.Si vous voulez attraper l'erreur si l'utilisateur n'a pas entré un nombre, il suffit d'utiliser
try...except
comme ceci:OriginalL'auteur Kevin Guan