で演習を行っていますCheckIO
が、なぜこれが機能しないのか疑問に思っています。文字列のセットが与えられた場合、文字列のいずれかがセット内の他の文字列のサフィックスである場合、True を返そうとしています。それ以外の場合は偽。itertools を使用して、最初にタプルで必要な順列を生成しています。次に、各タプル (各 i) について、2 番目のタプルが最初のタプル (オプション 1) の最後にある場合の難しい方法を確認したかったのです。他の方法では .endwith 関数 (オプション 2) を使用していましたが、どちらもうまくいきません。これら 2 つのオプションに欠陥があるのはなぜですか?
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
例:
checkio({"hello", "lo", "he"}) == True
checkio({"hello", "la", "hellow", "cow"}) == False
私はこれが答えとして機能することを知っています。しかし、なぜ私の元の方法がうまくいかないのか疑問に思っています。
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