如何将数字列表与 while 循环给出的多个输出相结合



只是一个快速说明:标题可能不是100%准确的,因为我真的不知道如何解释我的问题。

我创建了一个凯撒密码,它将重复所有 26 种不同的变体,这里的问题是除了输出的文本之外,我想对每个变体进行编号,但它不起作用。

message = """SAHH"""  # Add Code
message = message.upper()
keyShift = 1
encryptedMsg = ""
Waste = '  '

#running the program
while keyShift <= 26:
    for character in message:
        if character.isalpha() == True:
            x = ord(character) - 65
            x += keyShift
            x = x % 26
            encryptedMsg += chr(x + 65)
        else:
            encryptedMsg += character
    for a in enumerate(encryptedMsg, 1):
        print('{}'.format(a),encryptedMsg,"n")
        encryptedMsg = Waste
        keyShift +=1 

如果你运行这个,输出将是第一个变体的每个字母都有自己的编号。

for a in enumerate(encryptedMsg, 1):
     print('{}'.format(a),encryptedMsg,"n")

正如我上面所说,凯撒密码的每个变体都应该有一个数字,并且该代码为第一个变体的每个字母提供一个数字。

如果我正确理解您的问题,则需要创建一个结果字典,而不是枚举您的消息。不过,我不太明白您想通过后来的 for 循环实现什么。

您是否只想使用不同的键移创建凯撒的所有变体并打印它们? 如果是这样,这将(可能)做到这一点,假设你的代码是正确的:

message = """SAHH"""  # Add Code
message = message.upper()
keyShift = 1
encryptedMsg = ""
Waste = '  '
results = {}

#running the program
while keyShift <= 26:
    encryptedMsg = ""
    for character in message:
        if character.isalpha() is True:
            x = ord(character) - 65
            x += keyShift
            x %= 26
            encryptedMsg += chr(x + 65)
        else:
            encryptedMsg += character
    results[keyShift] = encryptedMsg
    keyShift =+ 1

for r in results.keys():
    print r, results[r]

还是你的意思是别的?

汉努

最新更新