def getMode():
while True:
mode = input('Do you wish to encrypt(e) or decrypt(d) a message: ').lower()
if mode in 'encrypt e decrypt d'.split():
return mode
else:
print('Enter either "encrypt" or "e" or "decrypt" or "d".')
def getMessage():
message = input('Enter your message: ')
return message
def getKey():
key = 0
while True:
key = 5
return key
def getTranslatedMessage(mode, message, key):
if mode[0] == 'd':
key = -key
translated = ''
for symbol in message:
if symbol.isalpha():
num = ord(symbol)
num += key
if symbol.isupper():
if num > ord('Z'):
num -= 26
elif num < ord('A'):
num += 26
elif symbol.islower():
if num > ord('z'):
num -= 26
elif num < ord('a'):
num += 26
translated += chr(num)
else:
translated += symbol
return translated
mode = getMode()
message = getMessage()
key = getKey()
print('Your translated text is: ', getTranslatedMessage(mode, message, key))
如果只想允许alpha字符:
def getMessage():
while True:
message = input('Enter your message: ')
if message.isalpha():
return message
print("Invalid input, text must contain alphabetic characters only.")
允许空格和字母:
if all(ch.isalpha() or ch.isspace() for ch in message):
return message
一个dict和使用模将是一个更简洁的方法:
def get_mode():
while True:
mode = input('Do you wish to encrypt(e) or decrypt(d) a message: ').lower()
if mode.lower() in {"e","d"}:
return mode
print('Enter either "encrypt" or "e" or "decrypt" or "d".')
def get_message():
while True:
message = input('Enter your message: ')
if all(ch.isalpha() or ch.isspace() for ch in message):
return message
print("Invalid input, text must contain alphabetic characters only.")
def get_key():
return 5
from string import ascii_letters
d = {k: i for i, k in enumerate(ascii_letters)}
enc = ascii_letters
def get_translated_message(mode, message, key):
if mode == "e":
return "".join([enc[(d[ch] + key) % 52] if not ch.isspace() else ch for ch in message])
return "".join([enc[(d[ch] - key) % 52] if not ch.isspace() else ch for ch in message])
mode = get_mode()
message = get_message()
key = get_key()
print('Your translated text is: ', get_translated_message(mode, message, key))
我需要编写一个python、hacker和wow这些单词的加密文本,并且使用不包括使用RAW_INPUT的python中的凯撒密码,距离为3。这是我到目前为止,但我不断得到一个错误消息,我不知道如何修复它。
问题内容: 我通过java进行了凯撒密码,它可以运行,但是在用户输入密钥后不对任何内容进行加密! 这是我的代码 跑: 问题答案: 使用效率不是很高…您可以对值进行整数运算以获得其索引。 我在代码中添加了注释以解释更多信息,但这就是我想出的。 输出应该是这样的
示例:返回。如果给定的整数值小于0或大于26,则应返回空字符串。 我的问题是,作为回报,它只给我真或假。如何解决这个问题:该方法应该返回一个字符串,其中每个字符都是根据指定的整数值移动的。
我在做凯撒密码,这是我的密码 我尝试使用%来解决这个问题(我也不是100%确定如何使用模运算符),但我没有成功。 文本文件的内容是:
基本上,我必须创建一个凯撒密码,它只是用一个int'k'以外的字母替换给出的每个字母。这需要2个命令行参数:“./caesar”和“k”,它们由用户提供。它工作得很好;但有一个问题: 它将“Barfoo”加密为“Eduirr”,使用3作为正确的密钥;将“Barfoo”加密为“Fevjss”,使用4作为正确的密钥 但是它不是用65作为密钥将“barfoo”加密为“onesbb”,而是将其加密为“oo
因此,目前我的凯撒密码程序运行良好,每当我使用小写字母。但是,当我用大写输入一个单词或短语时,我想让它工作。这是我现在有的代码。希望你们能帮我完成这件事。 def encrypt(消息,距离):“”将获取消息并将其旋转到距离,以创建加密消息“” def decrypt(消息,距离):“”“将解密上面的消息”“” def binaryConversion(消息):“”“将把单词转换成二进制代码”“