基于 modulo/remainder 计算填充的简单方法

Simple way to calculate padding based on modulo/remainder

如果我有一个长度为 L=77 的字符串,我想将其填充为 N=10 的倍数。我有兴趣只计算所需的填充量。这可以使用 N - (L % N) 轻松完成,但 L % N 为零的情况除外。

我目前使用的是:

pad = (N - (L % N)) % N

这看起来不是特别清晰,所以有时我使用

pad = N - (L % N)
if pad == N:
    pad = 0

这么简单的事情用三行代码似乎有些过分了。

或者,我可以找到 k * N >= L 对应的 k,但使用 math.ceil 似乎也有点矫枉过正。

有没有更好的选择,我错过了?也许某处有一个简单的函数?

我的意思是你不能简单地做

pad = N-L if N-L > 0 else 0

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

负L的模数就可以了

pad = -L % N

这个还不够吗?

pad = (N - L) % N

使用tenary conditional operator:

0 if (L % N) == 0 else N - (L % N)