Мне кажется, что вы можете использовать кэширование, чтобы уменьшить количество обращений к базе данных и не беспокоиться о сохранении состояния.
Используйте пропущенный str.zfill многого ():
str(int(x) + 1).zfill(len(x))
% "%%0%ii" len (x) % (интервал (x) +1)
- MarkusQ
P.S. Для x = "0000034" это разворачивается как так:
"%%0%ii" % len("0000034") % (int("0000034")+1)
"%%0%ii" % 7 % (34+1)
"%07i" % 35
"0000035"
Сохраните свое число как целое число. Когда Вы захотите распечатать его, добавьте начальные нули. Таким образом, можно легко сделать математику без преобразований, и она упрощает мыслительный процесс.
По-видимому, Вы конкретно имеете в виду целое число, представленное как строка с начальными нулями?
Если это так, я сделал бы это таким образом:
>>> a
'00000000000000099'
>>> l = len(a)
>>> b = int(a)+1
>>> b
100
>>> ("%0"+"%dd" % l) % b
'00000000000000100'
int('00000001') + 1
если Вы хотите продвижение, обнуляет назад:
"%08g" % (int('000000001') + 1)
Определите длину, преобразуйте ее в целое число, увеличьте ее, затем преобразуйте ее назад в строку с начальными нулями так, чтобы она имела ту же длину как прежде.