Display-Nummer mit führenden Nullen
-
02-07-2019 - |
Frage
Gegeben:
a = 1
b = 10
c = 100
Wie zeige ich eine führende Null für alle Zahlen mit weniger als zwei Ziffern?
Das heißt,
01
10
100
Lösung
In Python 2 Sie tun können:
print "%02d" % (1,)
Im Grunde % ist wie printf
oder sprintf
.
Für Python 3. + das gleiche Verhalten kann erreicht werden durch:
print("{:02d}".format(1))
Für Python 3.6+ das gleiche Verhalten kann mit f-Strings erreicht werden:
print(f"{1:02d}")
Andere Tipps
Sie können mit str.zfill
:
print str(1).zfill(2)
print str(10).zfill(2)
print str(100).zfill(2)
druckt:
01
10
100
print('{:02}'.format(1))
print('{:02}'.format(10))
print('{:02}'.format(100))
druckt:
01
10
100
Oder diese:
print '{0:02d}'.format(1)
In Python> = 3.6 , können Sie dies kurz und bündig mit den neuen f-Strings, die durch die Verwendung eingeführt wurden:
f'{val:02}'
, die drucken die Variable mit Namen val
mit einem fill
Wert von 0
und ein width
von 2
.
Für Ihr spezielles Beispiel können Sie dies in einer Schleife gut tun:
a, b, c = 1, 10, 100
for val in [a, b, c]:
print(f'{val:02}')
, welche druckt:
01
10
100
Weitere Informationen über die f-Strings, werfen Sie einen Blick auf PEP 498 wo sie eingeführt wurden.
x = [1, 10, 100]
for i in x:
print '%02d' % i
Ergebnisse in:
01
10
100
Lesen Sie Weitere Informationen zu Zeichenfolge Formatierung% in der Dokumentation verwendet wird.
Der Pythonic Weg, dies zu tun:
str(number).rjust(string_width, fill_char)
Auf diese Weise wird die ursprüngliche Zeichenfolge zurückgegeben, wenn seine Länge größer als string_width ist. Beispiel:
a = [1, 10, 100]
for num in a:
print str(num).rjust(2, '0')
Ergebnisse:
01
10
100
oder eine andere Lösung.
"{:0>2}".format(number)
einen Format-String verwenden - http://docs.python.org/lib/typesseq -strings.html
Zum Beispiel:
python -c 'print "%(num)02d" % {"num":5}'
width = 5
num = 3
formatted = (width - len(str(num))) * "0" + str(num)
print formatted
Dies ist, wie ich es tun:
str(1).zfill(len(str(total)))
Im Grunde nimmt ZFill die Anzahl der führenden Nullen Sie hinzufügen möchten, so ist es einfach, die größte Zahl zu nehmen, schalten Sie ihn in einen String und die Länge zu erhalten, wie folgt:
Python 3.6.5 (default, May 11 2018, 04:00:52) [GCC 8.1.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> total = 100 >>> print(str(1).zfill(len(str(total)))) 001 >>> total = 1000 >>> print(str(1).zfill(len(str(total)))) 0001 >>> total = 10000 >>> print(str(1).zfill(len(str(total)))) 00001 >>>
Verwendung:
'00'[len(str(i)):] + str(i)
oder mit dem math
Modul:
import math
'00'[math.ceil(math.log(i, 10)):] + str(i)
s=1
s="%02d"%s
print(s)
das Ergebnis wird sein, 01
Wenn Umgang mit Zahlen, die entweder eine oder zwei Ziffern sind:
'0'+str(number)[-2:]
oder '0{0}'.format(number)[-2:]
! / Usr / bin / env python3
Urheberrecht 2009-2017 BHG http://bw.org/
x = 5
while (x <= 15):
a = str("{:04}".format(x))
print(a)
x = x + 1;