字符串压缩
s = input("请输入待压缩字符串:")ch = s
result = ''
count = 0
for each in s:
if each == ch:
count += 1
else:
if count > 2:
result += ch + str(count)
if count == 2:
result += ch + ch
if count == 1:
result += ch
ch = each
count = 1
if count == 1:
result += ch
else:
result += ch + str(count)
print(f"压缩后的字符串:{result}")
print(f"压缩率为:{len(result)/len(s)*100:.2f}%")
想请问,倒数第六行这里的
if count == 1:
result += ch
else:
result += ch + str(count),
为什么还要写这一句,上面的不能直接得出结果嘛 本帖最后由 lxping 于 2022-12-6 19:08 编辑
你是在for循环的最后将 ch = each 的,循环里面的ch代表的是上一次提前到的each值 , 所以最后一次的each并没有加进去最后的 result 里面,你可以自己试一下将最后的删掉看一下运行结果,当最后的字符重复时,整个重复的字符都会漏掉
s = input("请输入待压缩字符串:")
ch = s
result = ''
count = 0
for each in s:
if each == ch:
count += 1
else:
if count > 2:
result += ch + str(count)
if count == 2:
result += ch + ch
if count == 1:
result += ch
ch = each
count = 1
print(f"压缩后的字符串:{result}")
print(f"压缩率为:{len(result)/len(s)*100:.2f}%")
= RESTART: C:/Users/Administrator/Desktop/python/homework/once a week/yszfc.py =
请输入待压缩字符串:aaaabbbbbcccccccfg
压缩后的字符串:a4b5c7f # g 漏掉了
压缩率为:38.89%
= RESTART: C:/Users/Administrator/Desktop/python/homework/once a week/yszfc.py =
请输入待压缩字符串:aaaabbbbbddcccccccee
压缩后的字符串:a4b5ddc7 # ee 漏掉了或者说 e2 漏掉了
压缩率为:40.00% lxping 发表于 2022-12-6 19:02
你是在for循环的最后将 ch = each 的,循环里面的ch代表的是上一次提前到的each值 , 所以最后一次的each并 ...
我明白了,大佬,thankyou{:5_105:}{:5_105:}
页:
[1]