I created a number generator to create numbers from 0001 to 9999 but ended up creating 1 without the zeros:
1
2
3
etc.
code I am using:
def my_gen(start, end, step):
while start < end:
start = step
yield start
for x in my_gen(1, 1000, 2):
print x
CodePudding user response:
Zeros on the left side of the int objects are not permitted, Python gives you SyntaxError. In math there is no difference between 0001 and 1.
Instead you can have str. "0001" is now different from "1".
with zfill - compatible with Python 2.7:
for x in range(1, 100, 2):
print(str(x).zfill(4))
or
with f-string - Python 3.6 :
for x in range(1, 100, 2):
print(f"{x:04}")
With format() compatible with Python 2.7:
for x in range(1, 100, 2):
print(format(x, '04'))
CodePudding user response:
If you need strings, note that you could use itertools.product for this purpose:
from itertools import product
my_gen = map(''.join, (product('0123456789', repeat=4)))
list(my_gen)
# ['0000', '0001', ... '9999']
