python - print - Отображать номер с ведущими нулями




python string format float (11)

Дано:

a = 1
b = 10
c = 100

Как отобразить начальный ноль для всех чисел с менее чем двумя цифрами?

То есть,

01
10
100

В Python> = 3.6 вы можете сделать это лаконично с новыми f-строками, которые были введены с помощью:

f'{val:02}'

который печатает переменную с именем val с значением fill 0 и width 2 .

Для вашего конкретного примера вы можете сделать это красиво в цикле:

a, b, c = 1, 10, 100
for val in {a, b, c}:
    print(f'{val:02}')

который печатает:

01 
10
100

Для получения дополнительной информации о f-струнах посмотрите на PEP 498, который их представил.


В Python 2.6+ и 3.0+ вы должны использовать метод string format() string:

for i in (1, 10, 100):
    print('{num:02d}'.format(num=i))

или используя встроенный (для одного номера):

print(format(i, '02d'))

См. Документацию PEP-3101 для новых функций форматирования.


Вот ты где:

print "%02d" % (1,)

В основном % похоже на printf или sprintf .


Вы можете использовать str.zfill :

print str(1).zfill(2) 
print str(10).zfill(2) 
print str(100).zfill(2) 

печатает:

01
10
100

Или другое решение.

"{:0>2}".format(number)

Или это:

print '{0:02d}'.format(1)



Основываясь на ваших советах, я позволю своей рабочей функции. Спасибо.

def number2binlist(number, leading = 8):
    #Convert Binary to 0/1 list array with leading zeros, default 8
    bin2dec = int(str(bin(number))[2:])
    theformat = "{:0"+str(leading)+"d}"
    dec2str = list(theformat.format(bin2dec))
    output = [int(z) for z in dec2str]
    output.reverse()
    return output

print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))

печатает:

01
10
100

s=1    
s="%02d"%s    
print(s)

результатом будет 01






string-formatting