gpt4 book ai didi

python - while循环python中的while循环

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:18 28 4
gpt4 key购买 nike

我正在尝试在一个 while 循环中编写一个 while 循环,但由于某种原因它没有正常工作。我知道我可能在这里遗漏了一些非常微不足道的东西,但我只是不明白它为什么不起作用!

循环的目的是比较两个字符串,看看它们是否包含任何 3 个连续的单词相同。我首先将这两个字符串分成它们各自的 3 个单词字符串组合的列表,我将它们存储在列表 strings 和 stringscompare 中。然后我循环遍历 stringscompare 中的每个 3 字串以获取 strings 中的每个 3 字串。

对于某些人来说,这似乎是一个很长的路要走,但我只是一个新手程序员,任何改进都将不胜感激。

所以目前,第二个 while 循环一直运行,但是第一个 while 只循环一次,对于 strings 中的第一个字符串。如果字符串匹配,我希望它从两个循环中中断,但是这些循环也在一个更大的 for 循环中,我不希望它中断。

例如

'这是一个字符串'
'这是另一个字符串' -- 不匹配
'this is a list a strings' -- 匹配 'this is a'
'the list is a string' -- 应该匹配 'is a string' 但目前不匹配

strings = <list of 3 word strings> [...,...,...]
stringscompare = <list of 3 word strings to compare>
v=0, x=0
while v < len(strings) and stop == False:
while x < len(stringscompare) and stop == False:
if re.search(strings[v], stringscompare[x]):
same.append(dict)
stop = True
x += 1
v +=1

最佳答案

您永远不会在外循环中重置 x。因此,在外循环的第一次迭代之后,它将始终等于或大于 len(stringscompare)

在外循环中将其设置为 0:

v = 0
while v < len(strings) and stop == False:
x = 0
while x < len(stringscompare) and stop == False:

其他观察:

不要使用 stop == Falsenot stop 就可以。

您可以只使用 for 循环,然后跳出两次:

for s in strings:
for sc in stringscompare:
if re.search(s, sc):
same.append(dict)
break
else:
continue
# only reached if the inner loop broke out
break

或使用 any() 和生成器表达式来查找第一个匹配项:

 if any(re.search(s, sc) for s in strings for sc in stringscompare):
same.append(dict)

关于python - while循环python中的while循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25740839/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com