输入一个句子,统计其中各英文字母出现的次数。统计时不区分大小写。
输入格式:
在一行中输入一个字符串。
输出格式:
第一行输出不同英文字母的个数,然后各行输出出现频率占前50%的字母及出现次数。若有并列,则按字典顺序输出。
输入一个句子,统计其中各英文字母出现的次数。统计时不区分大小写。
输入格式:
在一行中输入一个字符串。
输出格式:
第一行输出不同英文字母的个数,然后各行输出出现频率占前50%的字母及出现次数。若有并列,则按字典顺序输出。
关注from collections import Counter
# 输入一个句子,去掉非字母部分并转换为小写
sentence = input("请输入一个句子:").lower()
letters = [ch for ch in sentence if ch.isalpha()]
# 统计字母出现的次数
letter_count = Counter(letters)
# 计算不同字母的个数
unique_letter_count = len(letter_count)
# 排序字母,按频率从高到低排序,频率相同则按字母顺序
sorted_letters = sorted(letter_count.items(), key=lambda x: (-x[1], x[0]))
# 计算前 50% 的频率
total_count = sum(letter_count.values())
threshold = total_count / 2
# 获取出现频率占前 50% 的字母
top_letters = []
current_sum = 0
for letter, count in sorted_letters:
if current_sum >= threshold:
break
top_letters.append((letter, count))
current_sum += count
# 输出结果
print(unique_letter_count)
for letter, count in top_letters:
print(f"{letter} {count}")
Hello World! Programming in Python is fun.
12
o 5
n 4
i 4
l 3
p 3
r 3