web-dev-qa-db-fra.com

Vérifier si un caractère d'une chaîne est alphanumérique

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

7
rachitmishra25

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.

5
JohanL

any() attend un itérable. Ce serait suffisant:

isalnum = False
for i in s:
    if i.isalnum():
        isalnum = True
        break
print(isalnum)
1
Stephen Rauch