解压缩压缩字符串

时间:2016-11-18 21:30:52

标签: string python-3.x compression

我的问题是我现在不知道在哪里创建解压缩代码的代码。我得到错误(TypeError:不能将序列乘以'str'类型的非int)并假设它,因为我没有正确地乘以字符串。此外,我不能使用列表,只是字符串操作这个任务

就像一个例子,输出假设看起来像这样 - > cat2dog1qwerty3 - > catcatdogqwertyqwertyqwerty

功能:

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

主:

# Import
from compress import decompress

# Inputs
compressed_in = str(input("Enter a compressed string: "))  # compressed

# Outputs
decompressed_out = decompress(compressed_in)
print(decompressed_out)

1 个答案:

答案 0 :(得分:0)

由于这显然是一项家庭作业,我不会给你代码,但是这里有几个我看到的问题。

  1. 压痕。这可能是复制和粘贴的工件,但def之后的每一行都应缩进。

  2. 不调用函数。当你写char.isalpha时,这可能不是你想要的。 .isalpha()是一个函数,因此您需要使用括号来调用它,例如char.isalpha()

  3. isalnum()可能不是您想要的功能。检查某些东西是字母还是数字,但是你已经检查了字母,所以你可能想要检查某些东西是否为数字的函数。这不是绝对必要的,因为另一个if条件仍将首先触发,但它可以被标记为。

  4. 您永远不会清除char_holder。它看起来像你的意思,因为你有一个布尔new_word,你可以跟踪,但你没有正确使用它。在某些时候,你应该做char_holder = char(即不是+=)。我会让你决定把这个逻辑放在哪里。

  5. 最后,对于你得到的错误。你是正确的,你没有正确地将事物放在一起。考虑乘法语句中的类型,以及变量的值。例如,在第一次传递中,char_holder将等于'cat',而char将等于'3'。尝试在Python解释器中键入'3' * 'cat',看看会发生什么。从这里可以明显看出你需要做些什么来解决这个问题。