我遇到了一个家庭作业问题而且完全没有任何想法。我在过去的7个小时内尝试过不同的代码变体无济于事。作业问题如下:
编写一个名为shareALetter的函数,它接受一个参数wordList - 一个单词列表。创建并返回一个字典,其中wordList中的每个单词都是一个键,相应的值是wordList中与该单词至少共享一个字母的所有单词的列表。字典中的任何值都不应有重复的单词。
例如,以下是正确的输出:
print(shareALetter(horton))
{'I': ['I'],
'say': ['say', 'what', 'mean', 'and'],
'what': ['say', 'what', 'mean', 'and'],
'mean': ['say', 'what', 'mean', 'and'],
'and': ['say', 'what', 'mean', 'and']}
下面的代码是最接近解决问题的代码:
def shareALetter(wordList):
shareCount = {}
words=[]
string=''
for word in wordList:
if word not in words:
words.append(word)
if word not in string:
string += word
if word not in shareCount:
shareCount[word] = ''
for key in shareCount:
sharedWords = []
for word in words:
for letter in string:
if letter in word and word not in sharedWords:
sharedWords.append(word)
if word not in shareCount:
shareCount[word]=sharedWords
return(shareCount)
print(shareALetter(test1))
我知道这很糟糕,很草率,而且效率很低,可能有十几个问题,但我无法弄清楚如何解决这里的任何问题。任何帮助将不胜感激。
答案 0 :(得分:0)
当您需要创建这种算法时,想象一下如何用笔和纸来处理这种情况是有帮助的。如果我是你,我实际上会写出几个字并手动完成练习。在执行此操作时,请注意您是如何解决该问题的,并查看是否可以将该系列操作转换为代码。
这里有点推动让你继续前进:
def share_a_letter(word_list):
character_matches = {}
for word_one in word_list:
character_matches[word_one] = set()
for word_two in word_list:
for character in word_two:
# TODO:
# check if the character is in word_one
# if so, do something special
return character_matches
words = ['hello', 'wopper', 'cat', 'pickle']
print(share_a_letter(words))