只是一个快速说明:标题可能不是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]
还是你的意思是别的?
汉努