有没有办法将下面的代码写成一行

我正在尝试一种密码技术(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)))


慕慕森
浏览 152回答 2
2回答

Helenr

直接从上面的函数中尝试使用简单的列表理解 -text, key = 'ajshwhsuhe','amchaksheo'cipher = ''.join([chr((ord(text[i])+ord(key[i])) % 26+65) for i in range(len(text))])print(cipher)'MHGAIDWNXE'

HUH函数

您可以使用zip同时迭代输入和键中的字符>>> input, key = 'HELLO', 'XMCKL' >>> ''.join(chr((ord(x)+ord(y)) % 26+65) for x,y in zip(input, key))'EQNVZ'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python