如何确保输入为16的倍数,并在不是的情况下为i添加填充

2024-10-01 17:25:33 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我想要一个输入的信息,如果不是16的valkue值,则添加随机字母,使其成为16的倍数

这是我当前的代码:

import math

s = "IYGGRTOCTOERGTDKHUTAOHEIIATTOICNNRIHDSRGKENEACA!"
i = 16
rows = [s[x:x+i] for x in range(0, len(s), i)]
    #print('\n'.join(rows))
columns = list(zip(*rows))
print i, columns

这并没有什么特别之处,它只是每16个字符分割输入,从每个coulmn中提取第一个字母,然后输出它等等,这是一个非常基本的转置密码

所以我要做的是找出s是否是16的倍数,如果不加一些随机字母到s,直到它是 那么,如何在python中实现这一点呢?在

谢谢各位


Tags: columns代码inimport信息forlen字母
2条回答

首先,计算您有多少“额外”字符:

extra = len(s) % 16

然后,有两种可能:

额外(>;0

计算填充16个字符块所需的填充量:

^{2}$

最后,添加padsize填充字符(也许空格) at the end:

^{pr 3}$

extra == 0

s就可以了。在

把所有的东西放在一起

并且不使用padsize

extra = len(s) % 16
if extra > 0:
    s = s + (' ' * (16 - extra))

随机填充

当然,' '并不是唯一可能的填充。您可以使用^{}从某个列表中选择一个字符并将其用作填充。在

有一些很好的预定义字符列表,您可以使用^{}等:

padding = random.choice(string.letters)

或者使用您自己的可能填充列表:

padding = random.choice("x|#_ ")

所以,把所有的东西重新组合起来:

import string
import random

padding = random.choice(string.letters)
extra = len(s) % 16
if extra > 0:
    s = s + (padding * (16 - extra))
import math
import string
import random

s = "IYGGRTOCTOERGTDKHUTAOHEIIATTOICNNRIHDSRGKE"

while len(s) % 16 !=0:
    s = s + random.choice(string.letters)

# s is now a multiple of 16 random characters
# continue processing

相关问题 更多 >

    热门问题