gpt4 book ai didi

python - 如何在 python 中使用 for 循环时更新列表

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:03 27 4
gpt4 key购买 nike

我正在制作一个程序,旨在使用函数解决单词搜索问题。我从函数 find_horizo​​ntal 得到的输出是:

['********RRIRAI'、'FUNCTIONRRIRAI'、'RAIOONFRCCPWON'、'PTCSNOBEUITOLO'、'BNCACIANTOSLIH'、'RBYOLILYNREFBT'、'HYYNOGESTIBRIY'、'AATTSIONCMCENP'、'UORTENRRCBFVAU' 、 'CEBEECVWIERORI'、'*********TOPYF'、'PROCESSORTOPYF'、'OH********HSOS'、'OHCOMPUTERHSOS'、'YCYPRESREOSMRW'、'OATHBRMVTHHCTR'、'PGORWOOUIPSCHP' ]

问题在于,它将该行添加到列表 Outpuz 中一次,并划掉了找到的单词,然后又在被划掉之前添加了第二行。我想要的输出是:

['********RRIRAI'、'RAIOONFRCCPWON'、'PTCSNOBEUITOLO'、'BNCACIANTOSLIH'、'RBYOLILYNREFBT'、'HYYNOGESTIBRIY'、'AATTSIONCMCENP'、'UORTENRRCBFVAU'、'CEBEECVWIERORI' , '*********TOPYF', 'OH********HSOS', 'YCYPRESREOSMRW', 'OATHBRMVTHHCTR', 'PGORWOOUIPSCHP']

这是我的完整代码:

if __name__ == '__main__':
Puzzle = ["FUNCTIONRRIRAI",
"RAIOONFRCCPWON",
"PTCSNOBEUITOLO",
"BNCACIANTOSLIH",
"RBYOLILYNREFBT",
"HYYNOGESTIBRIY",
"AATTSIONCMCENP",
"UORTENRRCBFVAU",
"CEBEECVWIERORI",
"PROCESSORTOPYF",
"OHCOMPUTERHSOS",
"YCYPRESREOSMRW",
"OATHBRMVTHHCTR",
"PGORWOOUIPSCHP"]


def load_words_to_find(file_name):
word_list = []
file = open(file_name, "r")
for line in file.readlines():
word_list.append(line)
word_list = list(map(lambda s: s.strip(), word_list))
return word_list


def find_horizontal(Puzzle, Words, ReplaceWith, Found):
# Parameters :- List:Puzzle, List:Words, Character:ReplaceWith, List:Found
# Return :- List:Outpuz, List:Found
# Find all words which are horizontally in place (left to right and right to left), return the puzzle and list of found words
add = True
Outpuz = []
for line in Puzzle:
for word in Words:
if word in line:
Found.append(word)
print("Found: ", word)
Outpuz.append(line.replace(word,ReplaceWith*len(word)))
add = False
if not add:
pass
elif add:
Outpuz.append(line)


Outpuz.append(line)
print(Outpuz)

return Outpuz, Found


find_horizontal(Puzzle, load_words_to_find("words.txt"), "*", [])

最佳答案

大约一年前我做了一些非常类似的事情。

https://github.com/BenMcLean981/Python-Wordsearch

我认为问题是 Outpuz.append(line) 只是将拼图中的每一行添加到输出。

你的文件名是什么?发现了什么,Outpuz 应该是什么?我猜发现是它在拼图中找到的单词列表。那么 outpuz 是什么?

我将其更改为:

if word in line:
Found.append(word)
print("Found: ", word)
Outpuz.append(line.replace(word,ReplaceWith*len(word)))
add = False
if not add:
pass
elif add:
Outpuz.append(line)
Outpuz.append(line


Outpuz.append(line)

对此:

if word in line:
Found.append(word)
print("Found: ", word)
Outpuz.append(line.replace(word,ReplaceWith*len(word)))
#Adds the line if it has the change
else:
Outpuz.append(line) #Adds the line if it doesnt have the change.

关于python - 如何在 python 中使用 for 循环时更新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60366235/

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