现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。 注1:单词之间以空格(1个或多个空格)为间隔。 注2:忽略空行或者空格行。 基本版: 统计时,区分字母大小写,且不删除指定标点符号。 进阶版: 统计前,需要从文字中删除指定标点符号!.,:*?。 注意:所谓的删除,就是用1个空格替换掉相应字符。 统计单词时需要忽略单词的大小写。 输入说明 若干行英文,最后以!!!!!为结束。 输出说明 单词数量 出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数
时间: 2023-05-27 13:05:39 浏览: 142
基本版解法:
words_dict = {}
while True:
line = input().strip()
if line == '!!!!!':
break
elif line == '' or line.isspace():
continue
else:
words = line.split()
for word in words:
if word not in words_dict:
words_dict[word] = 1
else:
words_dict[word] += 1
print(len(words_dict))
sorted_words = sorted(words_dict.items(), key=lambda x: (-x[1], x[0]))
for i in range(min(10, len(sorted_words))):
print(sorted_words[i][0], sorted_words[i][1])
进阶版解法:
import re
words_dict = {}
while True:
line = input().strip()
if line == '!!!!!':
break
elif line == '' or line.isspace():
continue
else:
line = re.sub('[!.,:*?]', ' ', line)
words = line.split()
for word in words:
word = word.lower()
if word not in words_dict:
words_dict[word] = 1
else:
words_dict[word] += 1
print(len(words_dict))
sorted_words = sorted(words_dict.items(), key=lambda x: (-x[1], x[0]))
for i in range(min(10, len(sorted_words))):
print(sorted_words[i][0], sorted_words[i][1])