鱼C论坛

 找回密码
 立即注册
查看: 45|回复: 2

[技术交流] 关于第32讲字符串(VI)动动手作业1的实现

[复制链接]
发表于 昨天 20:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#流程说明:循环取出字符串src中的首字母,判断是否为非数字,如果是非数字,就添加到目标字符串res中,
#然后从src中去除这个字符
#如果是数字,就把连续的数字字符串存入numStr中,然后根据numStr拼接res,同时从src中去除numStr
src = input("请输入待解压字符串:").strip()
res = ""
#定义变量,存储某个字母后面的数字
numStr=""
while src != "":
    c = src[0]
    if c.isdigit() != True:#当前字符不是数字,就加入res,然后src去除当前字符
       res += c
       src = src.lstrip(c)
    else:#如果当前字符是数字,就继续判断下一个字符也是数字,如果是,就拼接numStr
        for each in src:
            if each.isdigit() == True:
                numStr += each
            else:
                break      
        res += "".join(res[len(res)-1]*(int(numStr)-1))#这里要注意:res中已经存在一个要拼接的目标字符
        src = src.lstrip(numStr)#src去除numStr字符串
        numStr = ""#重置numStr
            
print(res)
        
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 20:59 | 显示全部楼层
本帖最后由 jackz007 于 2025-10-6 22:21 编辑
  1. def compress(src) :
  2.     r , i = '' , 1
  3.     while i < len(src) :
  4.         k = i - 1
  5.         while i < len(src) and src[i] == src[k] :
  6.             i += 1
  7.         r = r + src[k] + str(i - k) if i - k > 2 else r + src[k] * (i - k)
  8.         i += 1
  9.     return r   

  10. def expand(src) :
  11.     r , i = '' , 1
  12.     while i < len(src) :
  13.         k = i - 1
  14.         while i < len(src) and src[i] . isdigit() :
  15.             i += 1
  16.         r = r + src[k] * int(src[k + 1 : i]) if i > k + 1 else r + src[k]
  17.         i += 1
  18.     return r

  19. s = input('字符串:')
  20. if s . strip() :
  21.     x = compress(s . strip())
  22.     z = expand(x)
  23.     print('压缩前:' + s . strip())
  24.     print('压缩后:' + x)
  25.     print('解压后:' + z)
  26.     print('压缩率:%.2f%%' % (100.0 * len(x) / len(z)))
复制代码

        【运行实况】:
  1. D:\[00.Exercise]\[Python]\[2025]\compress.string>python x.py
  2. 字符串:FFiiiisshCCCCCC
  3. 压缩前:FFiiiisshCCCCCC
  4. 压缩后:FFi4sshC6
  5. 解压后:FFiiiisshCCCCCC
  6. 压缩率:60.00%

  7. D:\[00.Exercise]\[Python]\[2025]\compress.string>python x.py
  8. 字符串:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBcccccccccccccccccccccccccccccccccccccccccc
  9. 压缩前:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBcccccccccccccccccccccccccccccccccccccccccc
  10. 压缩后:A53B5c42
  11. 解压后:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBcccccccccccccccccccccccccccccccccccccccccc
  12. 压缩率:8.00%

  13. D:\[00.Exercise]\[Python]\[2025]\compress.string>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 23:51 | 显示全部楼层
看不懂你每段开头待代码,我刚学到第34讲。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-7 04:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表