【发布时间】:2018-06-26 22:23:49
【问题描述】:
我也是编码和 Python 的初学者。现在我正在处理Vigenère cipher。
我已经够用密钥加密消息了。我在代码的每一部分都添加了 cmets 以供参考。这是我的代码。我的问题在代码下方。
# Ask user for message
print('type a message.')
message = input()
# print a white line for neatness
print()
# ask user for a key
print('give your key')
key = input()
# create a range with the length of the message
ran = range(len(message))
# Iterate though the range and therefor show all the letters
for i in ran:
# get current letters for this iteration
currentLetter = message[i]
currentKeyLetter = key[i % len(key)]
# Get corresponding numbers
numberLetter = ord(currentLetter)
numberKeyLetter = ord(currentKeyLetter)
# Add two letters
sumTwoLetters = numberLetter + numberKeyLetter
# Get the number of the encrypted letter
newNumberLetter = sumTwoLetters % 128
# Get the encrypted number based on number
newLetter = chr(newNumberLetter)
# print out the result
printText = currentLetter + "(" + str(numberLetter) + ") + "
printText += currentKeyLetter + "(" + str(numberKeyLetter) + ") = "
printText += newLetter + "(" + str(newNumberLetter) + ")"
print(printText)
代码要求用户输入消息和密钥。 ran 变量创建一个包含消息长度的范围。
之后,for 循环使用 ord 和 chr 使用密钥加密消息
加密后的字母存储在变量newLetter中
用户可以看到程序对printText做了什么
但是,我的问题是:如何使加密文本出现在单个字符串上。我试图循环进行。我失败得很惨(以至于我不想表现出来)
有人对如何使加密消息显示在单行文本中有任何建议吗?
【问题讨论】:
标签: python encryption python-3.6 vigenere