在多字母密码的for循环末尾无法打印文本

时间:2019-03-20 03:14:53

标签: python python-3.x

我正在制作一个多字母密码。我的代码正在运行,但是最后没有打印“密文”。我什至尝试测试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)

3 个答案:

答案 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