Non valide littéral pour int avec la base 10: "
>>> n = ''.join(i for i in x if i.isdigit())
>>> n.isdigit()
True
>>> x.isdigit()
False
>>> previous = 0
>>> next = 100
>>> answer = 0
>>> for i in range(0,100):
... answer += int(n[previous:next])
... previous = next
... next += 100
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError: invalid literal for int() with base 10: ''
Pourquoi j'obtiens cette erreur ? Comme vous pouvez le voir n est chiffres..
OriginalL'auteur Marijus | 2010-12-19
Vous devez vous connecter pour publier un commentaire.
n
pourrait être numérique, mais à un certain stade, vous allez passé la longueur den
tels quen[previous:next]
contient pas de caractères. La chaîne vide''
ne peut pas être converti en int, donc l'erreur qui raconte l'histoire complète:invalid literal for int() with base 10: ''
.Suppression de non-chiffres ne va pas vous empêcher de passer une chaîne vide. Une chaîne vide contient "chiffres", mais n'est toujours pas un nombre entier.
C'est pourquoi j'ai utilisé de la réponse += int(n[précédent:suivant])
Le problème réside dans
int(n[previous:next])
, qui n'est pas liée à la+=
. Considérez la chaînen
être'1234'
et de prendren[10:20]
. Le résultat sera''
.OriginalL'auteur marcog