Imprimer le message qu'une seule fois à partir de la boucle for
Je veux savoir si une chaîne est contenue à l'intérieur les éléments d'une liste. Si la chaîne est trouvée, je veux imprimer "Chaîne", sinon "la Chaîne n'est pas trouvée".
Mais, le code, je suis venu avec, fait plusieurs tirages de la "Chaîne n'est pas trouvée". Je sais pourquoi, mais je ne sais pas comment le corriger et imprimer seulement l'un des messages une seule fois.
animals=["dog.mouse.cow","horse.tiger.monkey",
"badger.lion.chimp","trok.cat. bee"]
for i in animals :
if "cat" in i:
print("String found")
else:
print("String not found")
~
Vous souhaiterez peut-être modifier votre si:
Bien repéré. Cependant, ce n'est pas un problème dans mon cas.
if "cat" in i.split("."):
(en supposant que toutes les chaînes dans les animaux sont séparés par un ".") sinon, pour par exemple "caterpillar.dog"
serait de retourner la valeur True. Je ne sais pas si cela le comportement que vous voulez.Bien repéré. Cependant, ce n'est pas un problème dans mon cas.
OriginalL'auteur multigoodverse | 2013-09-12
Vous devez vous connecter pour publier un commentaire.
Ajouter un
break
instruction dans leif
bloc quand la chaîne est trouvée, et déplacer leelse
à laelse
de la boucle for. Si c'est le cas si la chaîne est trouvée, la boucle se rompre et le reste ne sera jamais atteint, et si la boucle n'a pas de frein, le reste sera atteint et'String not found'
sera imprimé.désolé de mon erreur, il fixe.
OriginalL'auteur Viktor Kerkez
Il y a une façon plus simple de faire cela en une seule ligne. 🙂
Cela repose sur le fait que la somme sera de retour 0 si chaque élément de la liste est Fausse, et sera de retour nombre positif (Vrai) sinon.
any
est probablement préférable par rapport àsum
, bien que le résultat est le même.Relève la tête ... bien sûr!! Édité la solution à inclure l'amélioration de votre
OriginalL'auteur Maria Zverina
any
retourneTrue
sibool(x)
estTrue
pour toutx
dans l'itérable est passé. Dans ce cas, le générateur d'expression"cat" in a for a in animals
. Qui vérifie si"cat"
est contenue dans l'un quelconque des éléments à l'intérieur de la listeanimals
. Cette méthode a l'avantage de ne pas avoir à parcourir toute la liste dans tous cas.OriginalL'auteur HennyH
Vous pouvez également utiliser next():
DÉMO:
OriginalL'auteur alecxe