【发布时间】:2018-11-11 12:42:54
【问题描述】:
我有一个任务,我们必须在单词搜索中找到单词(减去对角线)。
M L G Y J U G D T W W I S F P
G Y O H I K O P V F J B J J H
N B I M T M Y W R D J E C A I
I Y M X C U E U Z G U I J Y C
K D P S L R W J I N C N S W T
O P S D I D A B Z I D G D A B
M X D H K E B H U G T S I L G
S G D U Y R V D G N D M L K M
S P X K T W E F P I G E J I T
B U L B C M K I F S I L F N W
Z Q L X H G C J N D I L B G C
M T B W Z L A D A A X Y O K X
A E C Z K F Y V F B U V G A W
Y G O Z E A W J R N S Q J E A
L O I T E R I N G H F I P G R
这是我们以文本文件形式提供的15x15 单词搜索。我们必须从列表中识别出搜索中的犯罪词:
["JAYWALKING", "BURGLARY", "LAUNDERING", "BADSINGING", "REDRUM", "SMOKING", "BEINGSMELLY","CONNING", "SCAMS", "LOITERING"]
我已经通过单词搜索并确定需要找到的单词是:redrum、badsinging、beingsmelly、jaywalking 和 loiting。
但是,在我的代码中,我只能从每个方向得到一个结果:闲逛和乱穿马路。我希望有人能给我一些建议,告诉我如何让它完全发挥作用。
def crossword():
empty_list = []
crimes = ["JAYWALKING", "BURGLARY", "LAUNDERING", "BADSINGING", "REDRUM", "SMOKING", "BEINGSMELLY",
"CONNING", "SCAMS", "LOITERING"]
confession = open("confession.txt", "r")
for line in confession:
line = line.strip("\n")
new_list = line.split(' ')
empty_list.append(new_list)
#horizontal
words = []
for i in range(len(empty_list)):
string_1 = ""
string_2 = ""
m = len(empty_list[i])
for j in range(len(empty_list[i])):
string_1 = string_1 + empty_list[i][j]
string_2 = string_2 + empty_list[i][m-1-j]
for k in range(len(crimes)):
if crimes[k] in string_1 or crimes[k] in string_2:
words.append(crimes[k])
#vertical
for i in range(len(empty_list)):
string_1 = ""
string_2 = ""
m = len(empty_list[i])
for j in range(len(empty_list[i])):
string_1 = string_1 + empty_list[j][i]
string_2 = string_2 + empty_list[j][m-1-i]
for k in range(len(crimes)):
if crimes[k] in string_1 or crimes[k] in string_2:
words.append(crimes[k])
return words
print("Gentleman GoGo is guilty of:")
print(crossword())
【问题讨论】:
-
首先你在循环内部返回,就在倒数第二个打印之前。这意味着它将进入循环,追加并返回单词列表。哪个有单项是:/
-
也停止使用“open”——改为使用“with open”结构来避免像当前代码中出现的错误——你永远不会关闭那个文件
标签: python python-3.x list file loops