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