「已注销」 2024-11-15 12:19 采纳率: 0%
浏览 6

关于#python#的问题:输出格式:第一行输出不同英文字母的个数,然后各行输出出现频率占前50%的字母及出现次数(相关搜索:输入一个字符串)

输入一个句子,统计其中各英文字母出现的次数。统计时不区分大小写。

输入格式:
在一行中输入一个字符串。

输出格式:
第一行输出不同英文字母的个数,然后各行输出出现频率占前50%的字母及出现次数。若有并列,则按字典顺序输出。

  • 写回答

1条回答 默认 最新

  • XMYX-0 优质创作者: 运维技术领域 2024-11-15 16:47
    关注

    代码实现

    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
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月15日