橙子是只喵 2021-10-25 18:48 采纳率: 100%
浏览 52
已结题

Python扩展速记符 要求用for循环,if语句

【问题描述】下面的描述字符串的方法称为速记符:
1."a-d" : 代表ASCII码在a和b之间的所有字符构成的连续字符串。其中必有a<b。
2."a-b-c" : 代表ASCII码在a和b, 再到c之间的所有字符构成的连续字符串。其中必有a<b<c。
例如:"a-c"代表字符串"abc","a-z"代表字符串"abcdefghhijklmnopqrstuvwxyz","a-c-g"代表字符串"abcdefg",等等。
在字符串开始和结尾处的'-'不做处理。 编写函数expand(s1),将字符串s1中的速记符号加以扩展形成等价的完整串.允许处理大小写字母和数字,并可以处理诸如a-b-c与a-z0-9与-a-z等情况.
编写程序,使用函数expand,将输入的字符串s1,进行处理,将结果输出.正确安排好前导和尾随的-.
【输入形式】控制台输入一行,即为s1的内容.可以含有空格,制表符,换行符.
【输出形式】控制台输出变换后的s1.
【样例输入】toooold-f0-8 A-F
【样例输出】tooooldef012345678 ABCDEF
【样例说明】输出对输入中的d-f,0-8,A-F进行了扩展.

  • 写回答

2条回答 默认 最新

  • 辉煌仪奇 2021-10-25 18:51
    关注
    # s = 'toooold-f0-8 A-F'
    s=input()
    import re
    res = re.findall('\w{1}-\w{1}', s)
    for m in res:
        st = m.split('-')[0]
        ed = m.split('-')[1]
        if st.isdigit() and ed.isdigit():
            v = ''.join(list(map(str, range(int(st), int(ed) + 1))))
        else:
            v = ''.join([chr(x) for x in range(ord(st), ord(ed) + 1)])
        s = s.replace(m, v)
    print(s)
    

    有帮助请点击右上角采纳,有问题继续交流,你的采纳是对我回答的最大的肯定和动力

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月8日
  • 已采纳回答 10月31日
  • 创建了问题 10月25日

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂