我有一个函数,用户可以输入某个可以编码或解码的字符串。这必须遵循游程长度。我在解码方面有麻烦。如果我要输入“ a7bc3”,则该功能可以正常工作,但是如果要使用“ b2hm11”之类的两位数字,则该功能将不起作用。输出应该是“ bbhmmmmmmmmmmm”(如果您算出有11 m的话)。
如何使此功能识别两位数字或将数字设置为一定范围?我通过设置条件语句在下面的代码中尝试了注释。没用我想在此函数中维护我的递归逻辑。
代码如下:
def decode(user_input):
if len(user_input) < 2:
return user_input
char = user_input[0]
num = user_input[1]
# if user_input in range(0, 9):
# num = user_input[1]
# else:
# break
if num.isdigit():
return char * int(num) + decode(user_input[2:])
else:
return char + decode(user_input[1:])
print(decode("b2hm11"))
print(decode("abu6"))
最佳答案
这是我想出的,但被警告说我是在深夜才这样做的,因此它可能不是最好的。
def decode(user_input):
if len(user_input) < 2:
return user_input
char = user_input[0]
if user_input[1].isdigit():
endNumber = False
index = 1
while not endNumber:
if not user_input[index].isdigit():
endNumber = True
else:
if index == len(user_input) - 1:
index += 1
endNumber = True
else:
index += 1
return char * int(user_input[1:index]) + decode(user_input[index:])
else:
return char + decode(user_input[1:])
print(decode("b2hm11")) #outputs bbhmmmmmmmmmmm
print(decode("abu6")) #outputs abuuuuuu
关于python - Python:字符串无法识别到一定数量的两位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54837845/