1370607278 发表于 2022-3-2 13:08:59

python的join问题

任务:编写一个程序,实现基本的字符串压缩功能。比如,字符串 FFiiiisshCCCCCC 压缩后变成 F2i4s2h1C6(15字符 -> 10字符,66% 压缩率)。
这种朴素的压缩算法并不总是理想的,比如 FFishCC 压缩后反而变长了 F2i1s1h1C2,这可就不是我们想要的了,所以对于重复次数小于 3 的字符,我们的程序应该选择不对其进行压缩。

press = input("请输入待压缩的字符串:")
length = len(press)
result = []
for each in press:
    count = press.count(each)
    if count > 2:
      if result.count(each) == 0:
            result.append(each)
            result.append(count)
      else:
            continue
    else:
      result.append(each)
      continue
length_1 = len(result)
percent = length_1 / length
print(result)
print("压缩后的字符串:","".join(result))
print("压缩率为:" , "{:%}".format(percent))



1.想问下各位大佬,这里逻辑应该没问题,为什么最后输出的时候join这个函数有问题 ,该怎么修改 谢谢

1370607278 发表于 2022-3-2 13:17:41

大佬们我明白了 应该把count的那个转化为字符串就行 里面是整形

大马强 发表于 2022-3-2 13:22:16

press = input("请输入待压缩的字符串:")
length = len(press)
result = []
for each in press:
    count = press.count(each)
    if count > 2:
      if result.count(each) == 0:
            result.append(each)
            result.append(str(count))# 改成字符
      else:
            continue
    else:
      result.append(each)
      continue
length_1 = len(result)
percent = length_1 / length
print(result)
print("压缩后的字符串:", "".join(result))
print("压缩率为:", "{:%}".format(percent))

footprint 发表于 2022-3-2 15:14:56

字符串.join(列表),列表中元素应均为字符串类型,不然会报错

阿奇_o 发表于 2022-3-2 19:01:49

要考虑字符出现的顺序吧,不然这样的压缩,显然会失真呀。。'FFishCCFFF' 你压缩后,是'F5ishCC'? ——这样你怎么解压还原回去?

1370607278 发表于 2022-3-3 09:39:46

阿奇_o 发表于 2022-3-2 19:01
要考虑字符出现的顺序吧,不然这样的压缩,显然会失真呀。。'FFishCCFFF' 你压缩后,是'F5ishCC'? ——这样 ...

有道理艾
页: [1]
查看完整版本: python的join问题