对于学校作业,我必须编写一个python程序来压缩文本并用压缩文本写一个新文件,保存原文。例如,文本“heeeeeeellllooo”到“he7l4o3”。因此,随后迭代的每个字符必须由字符替换,并且必须直接跟随迭代次数,除非迭代次数当然是1。但是,我不会得到压缩文本“he7l4o3”,而是获得“hee2ll2oo2”。
我做错了什么?
代码:
inp = open("hello.txt", "r")
out = open("compr.txt", "w")
kar=inp.read(1)
prevkar=''
def iterations(a,b):
while a==b:
re=1
re+=1
b = a
a = inp.read(1)
out.write(b + str(re))
return
def no_iteration(a):
out.write(a)
return
while kar:
if kar==prevkar:
iterations(kar, prevkar)
prevkar=kar
kar=inp.read(1)
else:
no_iteration(kar)
prevkar=kar
kar=inp.read(1)
inp.close()
out.close()
答案 0 :(得分:0)
这是一个正确的解决方案:
inp = open("hello.txt", "r")
out = open("compr.txt", "w")
kar=inp.read(1)
prevkar=''
def iterations(a,b):
re = 1
while a==b:
re+=1
b = a
a = inp.read(1)
out.write(str(re))
return a
def no_iteration(a):
out.write(a)
return
while kar:
if kar==prevkar:
prevkar=kar
kar = iterations(kar, prevkar)
else:
no_iteration(kar)
prevkar=kar
kar=inp.read(1)
inp.close()
out.close()
错误数字的问题是因为您每次循环播放字母时都将re
设置为1,同时iterations(a, b)
执行了一次inp.read(1)
但没有对其进行任何操作,因此{{1}每次调用while kar: