muyang_zzF6 发表于 2022-2-10 21:22:57

关于压缩和解压缩相关问题

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

ch = s
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啊???

cflying 发表于 2022-2-10 21:52:47

你把99当成两个9处理,莫非你还指望他能给你算成9+9=99

洋洋痒 发表于 2022-2-10 21:54:18

cflying 发表于 2022-2-10 21:52
你把99当成两个9处理,莫非你还指望他能给你算成9+9=99

听君一席话,胜读十年书

wp231957 发表于 2022-2-11 08:54:38

>>> import re
>>> s="a99"
>>> re.findall("+|\d+",s)
['a', '99']
>>> t=re.findall("+|\d+",s)
>>> t*int(t)
'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
>>>

Twilight6 发表于 2022-2-11 09:38:16


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

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

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

然后 第三次循环 再加入 9-1 个 a,加上最开始的一个 a 一共有 17 个 a

muyang_zzF6 发表于 2022-2-11 10:55:36

wp231957 发表于 2022-2-11 08:54
>>> import re
>>> s="a99"
>>> re.findall("+|\d+",s)


谢谢啦,不过还没学到re函数{:5_109:}
页: [1]
查看完整版本: 关于压缩和解压缩相关问题