faire un exercice sur CheckIO
et je me demande pourquoi cela ne fonctionnera pas. Étant donné un ensemble de chaînes, j'essaie de renvoyer True si l'une des chaînes est un suffixe d'une autre chaîne de l'ensemble. Faux sinon. En utilisant itertools, je génère d'abord les permutations nécessaires dans les tuples. Ensuite, pour chaque tuple (chaque i), je voulais voir à la dure si le deuxième tuple était à la fin du premier tuple (option 1). L'autre façon utilisait la fonction .endwith (option2), mais ni l'un ni l'autre ne fonctionnera pour moi. Pourquoi ces deux options sont-elles erronées?Python identifiant Suffixe dans l'ensemble des chaînes
import itertools
def checkio(words_set):
for i in itertools.permutations(words_set, 2):
#option1 ---- if i[1] in i[0][-len(i[1]):]:
#option2 ---- if i[0].endswith(i[1]):
return True
else:
return False
exemples:
checkio({"hello", "lo", "he"}) == True
checkio({"hello", "la", "hellow", "cow"}) == False
Je sais que cela fonctionne comme une réponse. Mais je me demandais juste pourquoi mes méthodes d'origine ne prendraient pas.
def checkio(words_set):
for w1 in words_set:
for w2 in words_set:
if w1.endswith(w2) and w1 != w2:
return True
return False
C'est un exercice, donc je voudrais juste suggérer penser à trier. –