基本上我想要一个输入的消息,如果它不是一个16的valkue添加随机字母,使其成为16的mulitple
这是我目前的代码:
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
Run Code Online (Sandbox Code Playgroud)
这没什么好看的,只需每16个字符分割一次输入,然后从每个coulmn中取出第一个字母,然后输出它等,这是一个非常基本的转换密码
所以我想要做的是弄清楚s是16的倍数,如果没有添加一些随机字母s,直到它是如此,我怎么能在python中实现这一点?
多谢你们
首先计算你有多少"额外"字符:
extra = len(s) % 16
Run Code Online (Sandbox Code Playgroud)
然后,有两种可能性:
您可以计算填充16个字符块所需的填充量:
padsize = 16 - extra
Run Code Online (Sandbox Code Playgroud)
最后,在末尾添加padsize填充字符(可能是空格) at the end:
s = s + (' ' * padsize)
Run Code Online (Sandbox Code Playgroud)
s 它的确如此.
而不是使用padsize:
extra = len(s) % 16
if extra > 0:
s = s + (' ' * (16 - extra))
Run Code Online (Sandbox Code Playgroud)
当然,' '不是唯一可能的填充.您可以使用random.choice从特定列表中选择一个字符并将其用作填充.
有一些很好的预定义字符列表,你可以使用string.letters等:
padding = random.choice(string.letters)
Run Code Online (Sandbox Code Playgroud)
或使用您自己的填充列表:
padding = random.choice("x|#_ ")
Run Code Online (Sandbox Code Playgroud)
所以,把所有东西放在一起:
import string
import random
padding = random.choice(string.letters)
extra = len(s) % 16
if extra > 0:
s = s + (padding * (16 - extra))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2464 次 |
| 最近记录: |