我正在制作一个多字母密码。我的代码正在运行,但是最后没有打印“密文”。我什至尝试测试for循环的各个部分,但都不会显示。
import string
alpha = string.ascii_lowercase
message = input('Message:')
message = message.upper()
secretWord = input('Secret word:')
secretWord = secretWord.upper()
cypherText = ''
count = 0
for letter in message:
if letter in alpha:
shift = alpha.index(secretWord[count])
letterIndex = alpha.index(letter)
cypherLetter = alpha[(letterIndex+shift)%26]
cypherText = cypherText + cypherLetter
count = count+1
print(cypherText)
答案 0 :(得分:1)
您的消息是大写字母,而 alpha 是小写字母,因此您通过 message 迭代得到的字母永远不在 alpha
您还在循环之外增加 count ,这导致恒定的 shift
答案 1 :(得分:1)
您将每个字符都大写,然后检查它是否是小写字符。由于大写字符不是小写字符,因此不会被加密。
答案 2 :(得分:1)
在代码中的任何地方都使用大写或小写:
import string
alpha = string.ascii_lowercase
message = input('Message: ').lower()
secret_word = input('Secret word: ').lower()
cypher_text = ''
for i, letter in enumerate(message):
if letter in alpha:
shift = alpha.index(secret_word[i]) if len(secret_word) > i else alpha.index(secret_word[0])
letter_index = alpha.index(letter)
cypher_letter = alpha[(letter_index + shift) % 26]
cypher_text = cypher_text + cypher_letter
print(cypher_text)
输出:
Message: animal
Secret word: snake
saiwed