int objet n'est pas itératif?
inp = int(input("Enter a number:"))
for i in inp:
n = n + i;
print (n)
... renvoie une erreur: 'int' object is not iterable
Je voulais savoir le total par l'ajout de chaque chiffre, par exemple, 110. 1 + 1 + 0 = 2. Comment dois-je faire?
Grâce
Si vous êtes de mettre les chiffres ensemble, alors il serait de 110. Je ne suis pas sûr de l'endroit où 11 est venu.
en.wikipedia.org/wiki/Unary_numeral_system
stackoverflow.com/questions/14939953/...
en.wikipedia.org/wiki/Unary_numeral_system
stackoverflow.com/questions/14939953/...
OriginalL'auteur 3zzy | 2009-12-21
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, de perdre cet appel à
int
- vous êtes à la conversion d'une chaîne de caractères en un nombre entier, ce qui n'est pas ce que vous voulez (vous voulez traiter chaque caractère comme son propre numéro). Modification::
Maintenant que
inp
est une chaîne de chiffres, vous pouvez faire une boucle sur elle, chiffre par chiffre.Prochaine, affecter une valeur initiale à
n
-- comme vous le code se trouve à droite maintenant, vous obtiendrez unNameError
puisque vous n'avez jamais l'initialiser. Je suppose que vous voulezn = 0
avant lafor
boucle.Ensuite, prenez en compte la différence entre un personnage et un entier à nouveau. Vous avez maintenant:
qui, en plus de l'inutile point-virgule (Python est une entaille de base de la syntaxe), est en train d'essayer de faire la somme des caractère je le entier n -- qui ne fonctionne pas! Donc, ce devient
à son tour le caractère
'7'
en entier7
, et ainsi de suite.OriginalL'auteur Alex Martelli
essayer:
Qui va se répéter sur les caractères dans la chaîne de la représentation. Une fois que vous avez chaque caractère que vous pouvez l'utiliser comme un numéro distinct.
reconvertir vers un int lors de l'ajout?
Eh bien, quand vous allez à ajouter à un nombre entier, il est maintenant une chaîne de caractères. Donc, dans ce cas, vous pourriez dire que int(i) + n ou quoi que ce soit.
OriginalL'auteur Gavin H
peut-être que vous essayez de
J'ai juste eu cette erreur, car je n'étais pas à l'aide de gamme()
OriginalL'auteur johnjullies
Eh bien, vous voulez processus de la chaîne de caractères représentant le numéro de l'itération sur les chiffres, pas le nombre lui-même (qui est une entité abstraite qui peut être écrite différemment, comme le "CX" en chiffres Romains ou "0x6e" hexadécimal (110) ou quoi que ce soit).
Donc:
Noter que le
n = 0
est nécessaire (quelque part avant l'entrée dans la boucle). Vous ne pouvez pas prendre la valeur d'une variable qui n'existe pas (et le côté droit den = n + int(digit)
prend la valeur den
). Et sin
n'existe pas à ce point, il peut détenir de quelque chose de complètement étranger à vos besoins présents, conduisant à des comportements inattendus; vous devez vous prémunir contre cela.Cette solution ne fait aucune tentative pour s'assurer que l'entrée fournie par l'utilisateur est en fait un certain nombre. Je vais laisser cette question pour vous de penser à (un indice: tout ce que vous avez besoin est là, dans le tutoriel Python).
OriginalL'auteur Michał Marczyk
Côté remarque: si vous voulez obtenir la somme de tous les chiffres, vous pouvez simplement faire
OriginalL'auteur Eric O Lebigot
for .. in
états attendons de vous que vous utilisez un type qui a un itérateur défini. Un simple type int n'a pas un itérateur.OriginalL'auteur Brian R. Bondy
Comme ghills avait déjà mentionné
Lorsque vous êtes en boucle par le biais de quelque chose, le mot clé est "IN", il suffit de toujours penser à cela comme une liste de quelque chose. Vous ne pouvez pas faire une boucle par un simple entier. Par conséquent, il n'est pas itératif.
OriginalL'auteur CppLearner
Prendre votre entrée et assurez-vous que c'est une chaîne de sorte qu'il est itératif.
Puis effectuer une compréhension de liste et de modifier chaque valeur de retour pour un certain nombre.
Maintenant, vous pouvez faire la somme de tous les numéros si vous le souhaitez:
Ou, si vous voulez vraiment voir la sortie alors que c'est l'exécution:
OriginalL'auteur Brian
Vous pouvez essayer de modifier
for i in inp:
en
for i in range(1,inp):
Itération ne fonctionne pas avec un seul int. Au lieu de cela, vous devez fournir une gamme pour l'exécuter.
OriginalL'auteur Yaakov Freedman
Ne pas en faire un
int()
, mais en faire unerange()
permettra de résoudre ce problème.OriginalL'auteur 戴東華
Une réponse possible à l'OP-s à la question ("je voulais savoir le total par l'ajout de chaque chiffre, par exemple, 110. 1 + 1 + 0 = 2. Comment dois-je faire?") est d'utiliser la fonction intégrée dans divmod()
OriginalL'auteur Aivar Paalberg