TypeError: L'objet 'int' n'est pas indexable
Je suis en train de créer un programme simple qui vous dit que votre nombre chanceux selon la numérologie. J'obtiens toujours cette erreur:
File "number.py", line 12, in <module>
sumln = (int(sumall[0])+int(sumall[1]))
TypeError: 'int' object is not subscriptable
Mon script est:
birthday = raw_input("When is your birthday(mm/dd/yyyy)? ")
summ = (int(birthday[0])+int(birthday[1]))
sumd = (int(birthday[3])+int(birthday[4]))
sumy= (int(birthday[6])+int(birthday[7])+int(birthday[8])+int(birthday[9]))
sumall = summ + sumd + sumy
print "The sum of your numbers is", sumall
sumln = (int(sumall[0])+int(sumall[1]))
print "Your lucky number is", sumln`
source d'informationauteur Cristal Isabel
Vous devez vous connecter pour publier un commentaire.
Si vous voulez faire la somme des chiffres d'un nombre, une façon de le faire est d'utiliser
sum()
+ un générateur d'expression:J'ai un peu modifié votre code à l'aide de
sum()
peut-être vous voulez prendre un coup d'oeil:L'erreur est exactement ce qu'il dit qu'il est; vous essayez de prendre sumall[0] lorsque sumall est un int et qui n'a aucun sens. Que croyez-vous sumall devrait être?
Votre
sumall
est un entier. Si vous voulez les caractères individuels, le convertir en une chaîne de caractères en premier.Vous ne pouvez pas faire quelque chose comme ça:
(int(sumall[0])+int(sumall[1]))
C'est parce que
sumall
est unint
et pas d'une liste ou d'dict.Donc,
summ + sumd
sera vous avez de la chance nombreEssayez plutôt ceci:
sumall
est un nombre, et vous ne pouvez pas accéder à ses chiffres à l'aide de l'indice de notation (sumall[0]
sumall[1]
). Pour que cela fonctionne, vous aurez besoin de la transformer en une chaîne de caractères.Juste pour être clair, toutes les réponses sont correctes, mais le raisonnement n'est pas très bien expliqué.
La
sumall
variable n'est pas encore une chaîne de caractères. Parentheticals ne sera pas converti en une chaîne (par exemple,summ = (int(birthday[0])+int(birthday[1]))
encore renvoie un entier. Il semble que vous probablement destinée à typestr((int(sumall[0])+int(sumall[1])))
mais il a oublié. La raison pour laquelle lestr()
fonction des corrections de tout est, car il convertit de quoi que ce soit compatible avec une chaîne.