【发布时间】:2020-08-28 11:06:35
【问题描述】:
我正在尝试一种密码技术(One Time Pad),我得到了解决方案,但想将其设为单行。这里分别是一个示例输入和输出。INPUT(TEXT) = 'HELLO', KEY = 'XMCKL', OUTPUT(CIPHERTEXT) = 'EQNVZ'。
def ciphertextFor(text, key):
cpt = []
for i in range(len(text)):
cpt.append(chr((ord(text[i])+ord(key[i])) % 26+65))
return ''.join(cpt)
# return ''.join(chr((ord(text[j])+ord(key[j])) % 26+65)) for j in range(len(text)))
【问题讨论】:
-
那么你的尝试有什么问题?
-
请提供样本输入和预期输出。阅读minimal reproducible example
-
假设文本和键的长度相同,这个列表理解应该可以工作
[chr((ord(text[i])+ord(key[i])) % 26+65) for i in range(len(text)) -
这样的东西(未经测试)可能会做到这一点。我会让你判断它是否是对原始代码的改进。
ciphertextFor = lambda text, key: ''.join(chr((ord(t) + ord(k)) % 26 + 65) for t, k in zip(text, key)) -
@GiladGreen 它测试了我的解决方案并且出现了错误。我太不耐烦了,我没有检查它。感谢 Akshay Sehgal,我意识到了自己的错误。
标签: python python-3.x encryption methods one-liner