Je veux vérifier si un caractère d'une chaîne est alphanumérique. J'ai écrit le code suivant pour cela et cela fonctionne bien:
s = input()
temp = any(i.isalnum() for i in s)
print(temp)
La question que j'ai est le code ci-dessous, en quoi est-il différent du code ci-dessus:
for i in s:
if any(i.isalnum()):
print(True)
L'itération for-loop se produit toujours dans le premier code, alors pourquoi ne génère-t-il pas une erreur? Le deuxième code lance:
Traceback (dernier appel le plus récent): Fichier "", ligne 18, dans TypeError: l'objet 'bool' n'est pas itérable
Dans votre deuxième fonction, vous appliquez any
à un seul élément et non à la liste entière. Ainsi, vous obtenez un seul élément booléen si le caractère i
est alphanumérique.
Dans le second cas, vous ne pouvez pas vraiment utiliser any
car vous travaillez avec des éléments uniques. Au lieu de cela, vous pourriez écrire:
for i in s:
if i.isalnum():
print(True)
break
Ce qui sera plus similaire à votre premier cas.
any()
attend un itérable. Ce serait suffisant:
isalnum = False
for i in s:
if i.isalnum():
isalnum = True
break
print(isalnum)