String 解压缩压缩字符串
我的问题是,我不知道现在该去哪里使用代码,我必须创建一个解压缩代码。我得到错误(TypeError:不能将序列与'str'类型的非int相乘),并假设它是,因为我没有正确地将字符串相乘。另外,我不能使用列表,只能对这个赋值进行字符串操作 作为一个例子,假设输出如下->cat2dog1qwerty3->CATDOGQWERTYQWERTYQWERTY 功能:String 解压缩压缩字符串,string,python-3.x,compression,String,Python 3.x,Compression,我的问题是,我不知道现在该去哪里使用代码,我必须创建一个解压缩代码。我得到错误(TypeError:不能将序列与'str'类型的非int相乘),并假设它是,因为我没有正确地将字符串相乘。另外,我不能使用列表,只能对这个赋值进行字符串操作 作为一个例子,假设输出如下->cat2dog1qwerty3->CATDOGQWERTYQWERTYQWERTY 功能: def decompress(compressed_in): new_word = True char_holder = "" decomp
def decompress(compressed_in):
new_word = True
char_holder = ""
decompressed_out = ""
for char in compressed_in:
if char.isalpha and new_word:
char_holder += char
new_word = False
elif char.isalnum:
decompressed_out += char * char_holder
new_word = True
return decompressed_out
主要内容:
因为这显然是一个家庭作业,我不会给你代码,但这里有几个问题,我看到你的介绍
def
后面的每一行都应该缩进char.isalpha
时,这可能不是您想要的.isalpha()
是一个函数,所以需要用括号调用它,比如char.isalpha()
isalnum()
可能不是您想要的函数。它检查某个东西是字母还是数字,但您已经检查了字母,因此您可能需要检查某个东西是否是数字的函数。这并不是绝对必要的,因为另一个if
条件仍然会首先触发,但这是您可能会被扣分的char\u holder
。看起来你是有意的,因为你有一个布尔新词
,你一直在跟踪,但你没有正确地使用它。在某些时候,你应该做的是char\u holder=char
(即不是+=
)。我会让你决定把逻辑放在哪里char\u holder
将等于'cat'
,而char
将等于'3'
。尝试在Python解释器中键入'3'*'cat'
,看看会发生什么。从这里可以明显看出,您需要做什么来修复此问题嗯,我修正了一些问题,得到了一个空白的答案,这比一个错误要好。我也完全删除了这个新单词,因为我觉得我不需要它。我只想告诉你,你还没有真正调用
isalpha()
。通过在它后面不包含括号,您基本上只是询问Python它是否存在,这总是正确的。因此,您的elif
分支永远不会发生。另外,语句int(char)
本身没有任何作用。你必须把结果分配给某个变量。对了,我修复了这两个错误并使代码正常工作。谢谢你的帮助。我只是想知道,我该如何编辑代码,使其与2位数字或更像CAT22DOG14的数字一起工作就像您有一个名为char\u holder
的临时变量一样,您可以创建一个名为num\u holder
的类似变量,或者临时保存您的数字,每次遇到后续数字时,用它展开num\u holder
。这就需要更多的逻辑来知道你什么时候看完了数字(即,当你再次看到字母时),也可能需要一些逻辑来处理字符串末尾出现的数字(后面没有任何字母)。好吧,我试着这么做是为了好玩,我真的不知道如何在char停止的第一个_循环中开始第二个循环。我试过使用len,但可能也做得不对。我用红漆在代码中添加了这些东西,现在使用num_holder
# Import
from compress import decompress
# Inputs
compressed_in = str(input("Enter a compressed string: ")) # compressed
# Outputs
decompressed_out = decompress(compressed_in)
print(decompressed_out)