【发布时间】:2016-06-14 05:58:24
【问题描述】:
使用多维列表帮助下面的代码我需要在每一行中搜索数组中的字符并找到一个单词并返回第一个字母的位置。这对一个字母非常有效,但是当我尝试一个以数组中的字母开头但不是整个单词的单词时,它不起作用。有人可以在这里帮助我。我可以看到我从 x=word[0] 开始,但是每当我尝试增加 x 的值以包括在内时,我都会搞砸。基本上我需要 'aca' 来返回 [2, 1] 因为这是单词中第一个字符的开始,但输入了我 ara NONE 应该是返回值。
def find_word_horizontal(crosswords,word):
word=str(word)
x=word[0]
char=0
crosslen=len(crosswords)
found=False
for row in crosswords:
r=crosswords.index(row)
wordcount=len(word)
for i in range(0, len(row)):
if wordcount<2:
if row[i]==x:
r=crosswords.index(row)
found=True
print([r, i])
return([r, i])
else:
for i in range(0, len(row)):
for let in word:
if row[i]==let and char<=wordcount:
char+=1
if char==wordcount:
t=0
for c in row:
if c==x:
found=True
r=crosswords.index(row)
print([r, t])
return([r, t])
t+=1
char=0
else:
continue
if found==False:
print(None)
return None
crosswords=[['s', 'd', 'o', 'g'], ['c', 'u', 'c', 'm'], ['a', 'c', 'a', 't'], ['t', 'e', 't', 'k']]
word='aca'
find_word_horizontal(crosswords,word)
【问题讨论】:
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布代码并准确描述问题之前,我们无法有效地帮助您。 “它不起作用”和“我一直在搞砸”不是问题描述。单字母变量名和没有描述性的 cmets 让您的代码成为别人的猜谜游戏。
-
另外,当单词从 [2,0] 开始时,您为什么期望 [2,1]?位置 [2,1] 是“c”。您的代码已经为以“a”开头的任何内容生成 [2,0] - 这是一个开始。
-
您还可以从How to Debug 那里获得一些提示。
标签: python list python-3.x multidimensional-array