dhj12345_ 2022-11-27 15:28 采纳率: 76.9%
浏览 12
已结题

python统计英文傣簇个数

在英语中英文单词组成句子,在键盘上输入一句含有标点英文语句,统计其中最长的单词以及各单词出现的次数。具体要求如下:
(1) 用户输入一个英文语句,英文语句子中要包含标点符号;若个别单词后面带有标点符号,其标点符号不能计算为单词;
(2) 输出英文语句中最长的单词,若有多个单词,则每行输出一个;
(3) 统计各单词出现的次数,按照数量从多到少排列在屏幕上输出;如果出现的数量相同,则按照单词在句子中的顺序进行显示;输出的格式为:单词左对齐,宽度为10。
例如,如果用户在键盘上输入句子:Hi, we play on the Maldive beach on October the second. 则输出如下图所示:

img


怎么才能实现标点符号不计算为单词以及各单词次数从多到少排列呢?

  • 写回答

1条回答 默认 最新

  • chuifengde 2022-11-27 16:22
    关注
    import string
    import re
    
    P = string.punctuation
    d = dict()
    s = 'Hi, we play on the Maldive beach on October the second.'
    patt = f'[{P}]'
    res = re.sub(patt, '', s)
    res = res.split()
    
    for i,v in enumerate(res):
        if v not in d:
            d[v] = [i,len(v), 1]
        else:
            d[v] = [i,len(v), d[v][2] +1] 
    d1 = sorted(d.items(), key =lambda x: [len(x[0]), -x[1][0]], reverse = True)
    d2 = sorted(d.items(), key = lambda x: [x[1][2], -x[1][0]], reverse = True)
    m = d1[0][1][1]
    for k, v in d1:
        if v[1] == m:
            print(f'maxlen:{v[1]:<3}word:{k:<5}')
    for k, v in d2:
        print(f'{k:<10}{v[2]:->5}')
        
    --result
    maxlen:7  word:Maldive
    maxlen:7  word:October
    on        ----2
    the       ----2
    Hi        ----1
    we        ----1
    play      ----1
    Maldive   ----1
    beach     ----1
    October   ----1
    second    ----1
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月5日
  • 已采纳回答 11月27日
  • 创建了问题 11月27日

悬赏问题

  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?