我有一个函数,用户可以输入某个可以编码或解码的字符串。这必须遵循游程长度。我在解码方面有麻烦。如果我要输入“ 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/

10-10 11:38