PYTHON- Возврат минимум трех цифр

Я хочу вернуть минимальное количество трех цифр, максимальное - все, что есть, оно должно вернуть.

Я попробовал следующую функцию,

def get_code(model, prefix):
    content = model.objects.filter(code__startswith=prefix).last()
    last = None
    code_prefix = prefix
    if content:
        a_string = content.code
        split_strings = []
        n = len(prefix)
        for index in range(0, len(a_string), n):
            split_strings.append(a_string[index: index + n])
        last = int(split_strings[1])
    if last is not None:
        suggested = last + 1
    else:
        suggested = 1
    return "{}{:03d}".format(code_prefix, suggested)

Приведенный выше код возвращает трехзначное число, только если у меня 4 числа, он также пропускает вычисления. Он также принимает только три цифры для вычисления. Как я могу это исправить???

Если заменить последнюю строку на

while len(""+suggested)<3:
    suggested="0"+suggested
return code_prefix+suggested

Я думаю, что у вас получится форматирование, которое вы хотите. Мы должны конкатенировать в строку, чтобы использовать len и сохранить 0's.

вот мой ответ,

def get_code(model, prefix):
    content = model.objects.filter(code__startswith=prefix).last()

    def text_num_split(item):
        for index, letter in enumerate(item, 0):
            if letter.isdigit():
                return [item[:index], item[index:]]
    last = None
    code_prefix = prefix
    if content:
        a_string = content.code
        pre_code = text_num_split(a_string)
        last = int(pre_code[-1])
    if last is not None:
        suggested = last + 1
    else:
        suggested = 1
    return "{}{:03d}".format(code_prefix, suggested
Вернуться на верх