我的问题是我现在不知道在哪里创建解压缩代码的代码。我得到错误(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)
答案 0 :(得分:0)
由于这显然是一项家庭作业,我不会给你代码,但是这里有几个我看到的问题。
压痕。这可能是复制和粘贴的工件,但def
之后的每一行都应缩进。
不调用函数。当你写char.isalpha
时,这可能不是你想要的。 .isalpha()
是一个函数,因此您需要使用括号来调用它,例如char.isalpha()
。
isalnum()
可能不是您想要的功能。检查某些东西是字母还是数字,但是你已经检查了字母,所以你可能想要检查某些东西是否为数字的函数。这不是绝对必要的,因为另一个if
条件仍将首先触发,但它可以被标记为。
您永远不会清除char_holder
。它看起来像你的意思,因为你有一个布尔new_word
,你可以跟踪,但你没有正确使用它。在某些时候,你应该做char_holder = char
(即不是+=
)。我会让你决定把这个逻辑放在哪里。
最后,对于你得到的错误。你是正确的,你没有正确地将事物放在一起。考虑乘法语句中的类型,以及变量的值。例如,在第一次传递中,char_holder
将等于'cat'
,而char
将等于'3'
。尝试在Python解释器中键入'3' * 'cat'
,看看会发生什么。从这里可以明显看出你需要做些什么来解决这个问题。