我试图打印“是”或“否”(为清晰起见,请加引号),这取决于文本字符串中是否存在任何模式排列。你知道吗
from itertools import permutations
i = int(input())
for j in range(i):
m = input()
n = input()
lst = []
for k in permutations(m):
lst.append("".join(k))
for l in lst:
if l in n:
print("YES")
break
else:
print("NO")
break
print(lst)
这是示例输入:
3
hack
indiahacks
code
eddy
coder
iamredoc
这是预期的输出
YES
NO
YES
对于前两个输入,输出正确,第三个输出失败。你知道吗
/home/ajay/.pyenv/versions/3.4.1/bin/python3.4 /home/ajay/PycharmProjects/LearnPython/test.py
1
coder
iamredoc
NO
['coder', 'codre', 'coedr', 'coerd', 'corde', 'cored', 'cdoer', 'cdore', 'cdeor', 'cdero', 'cdroe', 'cdreo', 'ceodr', 'ceord', 'cedor', 'cedro', 'cerod', 'cerdo', 'crode', 'croed', 'crdoe', 'crdeo', 'creod', 'credo', 'ocder', 'ocdre', 'ocedr', 'ocerd', 'ocrde', 'ocred', 'odcer', 'odcre', 'odecr', 'oderc', 'odrce', 'odrec', 'oecdr', 'oecrd', 'oedcr', 'oedrc', 'oercd', 'oerdc', 'orcde', 'orced', 'ordce', 'ordec', 'orecd', 'oredc', 'dcoer', 'dcore', 'dceor', 'dcero', 'dcroe', 'dcreo', 'docer', 'docre', 'doecr', 'doerc', 'dorce', 'dorec', 'decor', 'decro', 'deocr', 'deorc', 'derco', 'deroc', 'drcoe', 'drceo', 'droce', 'droec', 'dreco', 'dreoc', 'ecodr', 'ecord', 'ecdor', 'ecdro', 'ecrod', 'ecrdo', 'eocdr', 'eocrd', 'eodcr', 'eodrc', 'eorcd', 'eordc', 'edcor', 'edcro', 'edocr', 'edorc', 'edrco', 'edroc', 'ercod', 'ercdo', 'erocd', 'erodc', 'erdco', 'erdoc', 'rcode', 'rcoed', 'rcdoe', 'rcdeo', 'rceod', 'rcedo', 'rocde', 'roced', 'rodce', 'rodec', 'roecd', 'roedc', 'rdcoe', 'rdceo', 'rdoce', 'rdoec', 'rdeco', 'rdeoc', 'recod', 'recdo', 'reocd', 'reodc', 'redco', 'redoc']
Process finished with exit code 0
您可以看到redoc
出现在排列列表中,但是为什么python in
关键字不能识别它,从而产生NO
输出。你知道吗
在检查完列表中的第一项后,您就立即跳出了列表中的循环。你知道吗
而不是:
如果必须使用循环结构,可以使用以下方法恢复代码:
雷蒙德·赫廷格认为
else
的这种用法应该叫做nobreak
,我认为这是一种很好的直觉。你知道吗这是一个usage of the ^{} clause on loops, and is documented here 。你知道吗
相关问题 更多 >
编程相关推荐