Débutant ici! J'écris un code simple pour compter le nombre de fois qu'un élément apparaît dans une liste (par exemple, count([1, 3, 1, 4, 1, 5], 1)
renverrait 3).
C'est ce que j'avais à l'origine:
def count(sequence, item):
s = 0
for i in sequence:
if int(i) == int(item):
s += 1
return s
Chaque fois que j'ai soumis ce code, je me suis
"Littéral invalide pour int () avec base 10:"
Depuis, j'ai compris que le code correct est:
def count(sequence, item):
s = 0
for i in sequence:
if **i == item**:
s += 1
return s
Cependant, je suis simplement curieux de savoir ce que cette déclaration d'erreur signifie. Pourquoi ne puis-je pas simplement laisser dans int()
?
L'erreur est "Littéral invalide pour int () avec base 10:". Cela signifie simplement que l'argument que vous avez passé à int
ne ressemble pas à un nombre. En d'autres termes, il est vide ou comporte un caractère autre qu'un chiffre.
Ceci peut être reproduit dans un shell en python.
>>> int("x")
ValueError: invalid literal for int() with base 10: 'x'
Vous pouvez essayer quelque chose comme ceci si des lettres, par exemple, apparaissent dans votre séquence:
from __future__ import print_function
def count_(sequence, item):
s = 0
for i in sequence:
try:
if int(i) == int(item):
s = s + 1
except ValueError:
print ('Found: ',i, ', i can\'t count that, only numbers', sep='')
return s
print (count_([1,2,3,'S',4, 4, 1, 1, 'A'], 1))