Wenn ich eine Zeichenfolge mit der Länge L = 77 habe, die ich auf eine Länge auffüllen möchte, die ein Vielfaches von N = 10 ist. Ich bin daran interessiert, nur die erforderliche Polsterung zu berechnen. Dies kann leicht mit N - (L % N)
durchgeführt werden, außer in Fällen, in denen L % N
Null ist.
Ich habe vorerst Folgendes verwendet:
pad = (N - (L % N)) % N
Dies scheint nicht besonders lesbar zu sein, deshalb benutze ich es manchmal
pad = N - (L % N)
if pad == N:
pad = 0
Es scheint übertrieben, drei Codezeilen für etwas so Einfaches zu verwenden.
Alternativ kann ich das k
finden, für das k * N >= L
, aber die Verwendung von math.ceil
scheint auch ein Overkill zu sein.
Gibt es eine bessere Alternative, die mir fehlt? Vielleicht irgendwo eine einfache Funktion?
5 Antworten
Der Modul des negativen L wird es tun.
pad = -L % N
Mit math.ceil
:
from math import ceil
def pad(l, n):
return n*ceil(l/n) - l
assert pad(59, 10) == 1
assert pad(60, 10) == 0
assert pad(61, 10) == 9
Ist das nicht genug?
pad = (N - L) % N
Ich meine, kannst du das nicht einfach tun?
pad = N-L if N-L > 0 else 0
Verwenden Sie den Tenary Conditional Operator:
0 if (L % N) == 0 else N - (L % N)
Verwandte Fragen
Verknüpfte Fragen
Neue Fragen
python
Python ist eine dynamisch typisierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es wurde entwickelt, um schnell zu lernen, zu verstehen, zu verwenden und eine saubere und einheitliche Syntax durchzusetzen. Bitte beachten Sie, dass Python 2 ab dem 01.01.2020 offiziell nicht mehr unterstützt wird. Fügen Sie für versionenspezifische Python-Fragen das Tag [python-2.7] oder [python-3.x] hinzu. Wenn Sie eine Python-Variante (z. B. Jython, PyPy) oder eine Bibliothek (z. B. Pandas und NumPy) verwenden, fügen Sie diese bitte in die Tags ein.