【发布时间】:2016-02-05 08:45:16
【问题描述】:
问题:
定义
print_most_common()函数,它传递两个参数,一个包含单词及其对应频率的字典,例如,{"and":15, "talon":7, "frog":1, "cat":15, "tests":1, "dog":2, "bat":14, "rat":15}和一个整数,字符数。
该函数获取所需字符数的所有单词的列表,这些单词是字典的键并且对于该长度的单词具有最高频率。
该函数首先打印由单词长度(第二个参数)组成的字符串,后跟“字母单词:”,然后打印字典中所有具有最高频率的所需长度单词的列表由频率值。例如以下代码:
word_frequencies = {"and":15, "talon":7, "frog":1, "cat":15, "tests":1, "dog":2, "bat":14, "rat":15} print_most_common(word_frequencies, 3) print_most_common(word_frequencies, 4) print_most_common(word_frequencies, 5) print_most_common(word_frequencies, 6)打印以下三行:
3 letter words: ['and', 'cat', 'rat'] 15 4 letter words: ['frog'] 1 5 letter words: ['talon'] 7 6 letter words: [] 0
我尝试了这个问题,并提出了以下代码(我意识到这不是最好的方法,但我们还没有详细学习 python 编程):
def print_most_common(words_dict, word_len):
words_list = list(words_dict.keys())
frequency = 0
max_word_list = []
for word in words_list:
if word_len == len(word) and frequency <= words_dict[word]:
frequency = words_dict[word]
for word, value in words_dict.items():
if value == frequency:
max_word_list += [word]
print (word_len, "letter words:", max_word_list, frequency)
我遇到的问题是代码在频率 3、5、6、0 下工作正常。但是,对于频率 4,它也打印出一个 5 个字母的单词:
预期结果:
3 letter words: ['and', 'cat', 'rat'] 15
4 letter words: ['frog'] 1
5 letter words: ['talon'] 7
6 letter words: [] 0
实际结果:
3 letter words: ['and', 'rat', 'cat'] 15
4 letter words: ['tests', 'frog'] 1
5 letter words: ['talon'] 7
6 letter words: [] 0
预期结果:
3 letter words: ['and', 'cat', 'pig', 'rat'] 15
4 letter words: ['bird', 'frog'] 7
5 letter words: ['front', 'tests'] 1
实际结果:
3 letter words: ['and', 'pig', 'rat', 'cat'] 15
4 letter words: ['talons', 'frog', 'bird'] 7
5 letter words: ['tests', 'front'] 1
我不知道我的代码哪里出错了。
【问题讨论】:
-
请忽略。我意识到我错过了:'and word_len == len(word):' from the second for statement
标签: python