Is there a format function in python that turn for example 4 to 04 but 10 not in 010.
The idea is that all numbers under 10 are represented by 0and then the number.
Already thanks a lot.
The regular formatting with % supports leading zeros with %0xd where x is the total number of digits:
>>> print("%02d" % 4)
04
>>> print("%02d" % 10)
10
 
    
    You would have to use a string as Python does not allow you to have integers with leading 0s. As if we define one, we get an error:
>>> a = 09
  File "<stdin>", line 1
    a = 09
         ^
SyntaxError: invalid token
So the way we can achieve this is to first convert to a string and then use .zfill:
def pad(n, l):
    return str(n).zfill(l)
and some tests:
>>> pad(4, 2)
'04'
>>> pad(10, 2)
'10'
>>> pad(67, 20)
'00000000000000000067'
On the other hand, if you only want to pad one-digit integers to two-digit string, then you could use a ternary expression:
def pad2(n):
    s = str(n)
    return "0" + s if len(s) < 2 else s
and some tests again:
>>> pad2(4)
'04'
>>> pad2(10)
'10'
