y学习吧! 发表于 2022-6-26 23:12:47

如何使它在循环中仅遍历一次同样的字符

a=input("请输入待压缩字符串")
q=[]
for i in a:
    if a.count(i)>=3:
      q.append(a)
      q.append(a.count(i))
    else:q.append(i)
print("压缩后的字符串",q)
print("压缩率为:","{:.2f}".format(len(q)/len(a)))

ba21 发表于 2022-6-26 23:36:24

>>> 'a' in ['a']
True
>>> 'a' in ['b','c']
False

白two 发表于 2022-6-27 00:04:30

你这思路不对呀,
count 不是数连在一起的两个字符, 你这样即使 abcadefa, 也会被压缩为 a3

月下孤井 发表于 2022-6-27 04:24:45

a = input("请输入待压缩字符串:")
q = []
for i in a:
    if a.count(i) >= 3:
      if i not in for j in q]:
            q.append(i+str(a.count(i)))
    else:
      q.append(i)
q = ''.join(q)
print("压缩后的字符串", q)
print("压缩率为:", "{:.2f}%".format(len(q) / len(a) * 100))

wyy2496014281 发表于 2022-6-27 11:09:21

还有压缩考虑,abc压缩完之后是a1b1c1,比原来的都还长的就没压缩的必要了
而且只有连续的才考虑压缩bbbcb压缩完是b3c1b1,不然b4c1怎么还原
页: [1]
查看完整版本: 如何使它在循环中仅遍历一次同样的字符