鱼C论坛

 找回密码
 立即注册
查看: 908|回复: 5

[已解决]关于压缩和解压缩相关问题

[复制链接]
发表于 2022-2-10 21:22:57 | 显示全部楼层 |阅读模式

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

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

x
题目如图
代码如下:
s = input("请输入待解压字符串:")

ch = s[0]
result = ''

for each in s:
    if each.isdecimal():
        for i in range(int(each)-1):
            result += ch
    else:
        result += each
        ch = each

print(f"解压后的字符串:{result}")


为啥输入:a99之后出现的不是99个a啊???
最佳答案
2022-2-11 09:38:16

为啥输入:a99之后出现的不是99个a啊???


因为你 for 循环一次只读取一个字符,而单个字符最大整数即为 9

所以你这里输入 a99 时,第一次循环,执行 else 加入第一个 a ,第二次循环执行 if 导致再加入 9-1 个 a

然后 第三次循环 再加入 9-1 个 a,加上最开始的一个 a 一共有 17 个 a
Snipaste_2022-02-10_21-21-38.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-10 21:52:47 | 显示全部楼层
你把99当成两个9处理,莫非你还指望他能给你算成9+9=99
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-2-10 21:54:18 | 显示全部楼层
cflying 发表于 2022-2-10 21:52
你把99当成两个9处理,莫非你还指望他能给你算成9+9=99

听君一席话,胜读十年书
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-11 08:54:38 | 显示全部楼层
>>> import re
>>> s="a99"
>>> re.findall("[a-zA-Z]+|\d+",s)
['a', '99']
>>> t=re.findall("[a-zA-Z]+|\d+",s)
>>> t[0]*int(t[1])
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-11 09:38:16 | 显示全部楼层    本楼为最佳答案   

为啥输入:a99之后出现的不是99个a啊???


因为你 for 循环一次只读取一个字符,而单个字符最大整数即为 9

所以你这里输入 a99 时,第一次循环,执行 else 加入第一个 a ,第二次循环执行 if 导致再加入 9-1 个 a

然后 第三次循环 再加入 9-1 个 a,加上最开始的一个 a 一共有 17 个 a
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-2-11 10:55:36 | 显示全部楼层
wp231957 发表于 2022-2-11 08:54
>>> import re
>>> s="a99"
>>> re.findall("[a-zA-Z]+|\d+",s)

谢谢啦,不过还没学到re函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 06:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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