只是一个快速说明:标题可能不是100%准确,因为我真的不知道如何解释我的问题。
我创建了一个Caesar密码,它将重复所有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")
目标如上所述,凯撒密码的每个变体都应该有一个数字,这段代码给第一个变体的每个字母一个数字。
答案 0 :(得分:1)
如果我正确理解您的问题,您需要创建结果字典而不是枚举您的消息。不过,我不太明白你想用后来的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]
或者你的意思是其他什么?
哈努哈利