有没有办法在一行中制作以下代码
Is there any way to make the below code in one-line
我正在尝试一种密码技术(一次一密),我得到了解决方案,但想把它写成一行。这是一个示例输入和输出 respectively.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)))
直接从上面的函数中使用简单的列表理解来尝试这个 -
text, key = 'ajshwhsuhe','amchaksheo'
cipher = ''.join([chr((ord(text[i])+ord(key[i])) % 26+65) for i in range(len(text))])
print(cipher)
'MHGAIDWNXE'
您可以使用 zip
同时遍历输入和键中的字符
>>> input, key = 'HELLO', 'XMCKL'
>>> ''.join(chr((ord(x)+ord(y)) % 26+65) for x,y in zip(input, key))
'EQNVZ'
我正在尝试一种密码技术(一次一密),我得到了解决方案,但想把它写成一行。这是一个示例输入和输出 respectively.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)))
直接从上面的函数中使用简单的列表理解来尝试这个 -
text, key = 'ajshwhsuhe','amchaksheo'
cipher = ''.join([chr((ord(text[i])+ord(key[i])) % 26+65) for i in range(len(text))])
print(cipher)
'MHGAIDWNXE'
您可以使用 zip
同时遍历输入和键中的字符
>>> input, key = 'HELLO', 'XMCKL'
>>> ''.join(chr((ord(x)+ord(y)) % 26+65) for x,y in zip(input, key))
'EQNVZ'