@HexUserHex

Не могу сообразить как проще увеличивать число по 'маске'?

Извиняюсь если не четко я в названии темы я выразил суть своего вопроса :)
Есть число: 12345678000000000 которое требуется увеличивать следующим образом:

от:12345678100000000
12345678200000000
12345678300000000
... 
до:12345678999999999


Но при этом избегать повторов, так как данное число выполняет роль первичного ключа в базе:
12345678100000000 <-- самая первая итерация
12345678100000000 <-- десятая итерация
12345678100000000 <-- сотая итерация

Пример:
#!/usr/bin/env python3

def addNum(i):
 #проверяю что длина нашего 'числа' меньше 9
  if len(str(i)) < 9:
    result = ''

    #Заполняю нулями оставшееся 'место'
    for tmp in range(9-len(str(i))):
      result += str(0)

    result =  str(i) + str(result)
    
    return int(result)

def main():

    for i in range(1,  999999999):
        print(str(12345678) + str(addNum(i)))
 
              
if __name__ == "__main__":
    main()
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
В цикле проверять - если число делится на 10 без остатка, то его пропускаем, и переходим к следующему числу

for i in range(1,  999999999):
    if i % 10 == 0:
        continue
    print("12345678{:<09d}".format(i))

# 12345678100000000
# 12345678200000000
# 12345678300000000
# 12345678400000000
# 12345678500000000
# 12345678600000000
# 12345678700000000
# 12345678800000000
# 12345678900000000
# 12345678110000000
# 12345678120000000
...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
karabanov
@karabanov
Системный администратор
Formatted string literals

print(f"{12345678:<017d}") # дополнить нулями недостающие позиции, всего позиций 17


Демонстрация:
~$ python3
Python 3.8.10 (default, Jun  2 2021, 10:49:15) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print(f"{12345678:<017d}")
12345678000000000
>>>


PS
Про printf
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы