Python 如何将列表中元素的位置更改为实际元素(关键字密码)?

Python 如何将列表中元素的位置更改为实际元素(关键字密码)?,python,list,encryption,keyword,Python,List,Encryption,Keyword,该密码使用一个关键字并将其重复到输入消息的长度,然后两者都转换为数字(关键字和消息的每个字母在字母表列表中的位置),然后将它们相加,然后再转换回字母表列表中的字母 alpha = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"] keyword = input("Please enter a keyword: ") s

该密码使用一个关键字并将其重复到输入消息的长度,然后两者都转换为数字(关键字和消息的每个字母在字母表列表中的位置),然后将它们相加,然后再转换回字母表列表中的字母

alpha =         ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
keyword = input("Please enter a keyword: ")

sentence = input("Enter message: ")

new_keyword = []
while len(keyword) < len(sentence):
    keyword = keyword + keyword
keyword = (keyword.lower())


for letters in keyword:
    pos1 = alpha.index(letters) + 1
    new_keyword.append(pos1)
print (new_keyword)

new_sentence = []   

for letters in sentence:
    pos2 = alpha.index(letters) + 1
    new_sentence.append(pos2)
print (new_sentence)

joined = [x + y for x, y in zip(new_keyword, new_sentence)]
print (joined)
alpha=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”]
关键字=输入(“请输入关键字:”)
句子=输入(“输入消息:”)
新建_关键字=[]
而len(关键字)
这是我的密码

我需要找到一种方法将加入的列表再次转换为字母,即加密消息


请帮助

到目前为止,您已将字母移位了适当的量,但仍存储了序数(或数字)值

问题1是处理以26结尾的字母(例如z(26)+a(1)=27)

问题2是使用alpha数组将值转换回数字

我把打印的语句留在里面,这样你就可以看到发生了什么

# Original code - unedited
alpha = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
keyword = input("Please enter a keyword: ")

sentence = input("Enter message: ")

new_keyword = []
while len(keyword) < len(sentence):
    keyword = keyword + keyword
keyword = (keyword.lower())


for letters in keyword:
    pos1 = alpha.index(letters) + 1
    new_keyword.append(pos1)
print (new_keyword)

new_sentence = []   

for letters in sentence:
    pos2 = alpha.index(letters) + 1
    new_sentence.append(pos2)
print (new_sentence)

joined = [x + y for x, y in zip(new_keyword, new_sentence)]
print (joined)

# Take any value over 26 and wrap it back round (so z + 1 = a)

for i in range(len(joined)):
    if joined[i] > 26:
        joined[i] -= 26

print (joined)

# Convert each numeric value back into its character, using the alpha list

ciphertext = []

for letters in joined:
    char = alpha[letters - 1]
    ciphertext.append(char)

print(ciphertext)
#原始代码-未编辑
α=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”]
关键字=输入(“请输入关键字:”)
句子=输入(“输入消息:”)
新建_关键字=[]
而len(关键字)26:
加入[i]=26
打印(已加入)
#使用字母列表将每个数值转换回其字符
密文=[]
加入的信件:
字符=字母[字母-1]
密文追加(字符)
打印(密文)

更简单的方法是使用ord()和chr()函数。这些将字符分别转换为ASCII值和返回值。

“”。连接(已连接)?可能重复否我正在尝试将已连接列表的元素更改回alpha列表中的字母请您的问题解释您在输入中的内容以及您的期望。虽然不清楚,但我已经在问题中解释过了