message =input("Type message ")
shift = int(input("Enter number to code "))
message = message.lower()
print (message)
for a in message:
if a in "abcdefghijklmnopqrstuvwxyz" :
number = ord(a)
number += shift
if number > ord("z") :
number -= 26
elif number < ord("a") :
number += 26
message = chr(number)
print (message)
上面是我在python上加密普通文本到Caesar密码的代码,但代码的结果在每一行都是一个不同的字母。
我对编码很陌生,所以你认为有用的任何帮助或资源都会受到高度赞赏。
答案 0 :(得分:1)
您需要修复缩进并在每次浏览消息时连接编码信件
您正在阅读此处的消息。如果您使用的是Python 2.7,则应使用“row_input”
message = raw_input("Type message ")
如果您使用的是Python 3
message = input("Type message ")
这里也一样,但是你正在把你读到的内容转换为整数
shift = int(raw_input("Enter number to code "))
您正在将字符串转换为小写
message = message.lower()
您正在打印消息
print (message)
您正在循环显示消息,消息中的每个字符都经过测试
for a in list(message):
if a in "abcdefghijklmnopqrstuvwxyz" :
number = ord(a) number += shift
if number > ord("z") : number -= 26 elif number < ord("a") : number += 26
m += chr(number) print "Coded message:",m
您的功能应如下所示:
message = input("Type message ")
shift = int(input("Enter number to code "))
message = message.lower()
print (message)
m=''
for a in message:
if a in "abcdefghijklmnopqrstuvwxyz" :
number = ord(a)
number += shift
if number > ord("z") :
number -= 26
elif number < ord("a") :
number += 26
m += chr(number)
#message = chr(number)
print("The encoded message:",m)
答案 1 :(得分:0)
您的版本不起作用,因为在message = chr(number)
中,您使用单个“加密”字符覆盖输出。
但即使你解决了这个问题,你的代码也存在一些问题:
if / else + - 例如,使用modulo
运算符%
可以更好地编写。
您也不需要对字母表进行硬编码,它存在于string
模块中。最后:python的字符串有translate
个方法,所以你可能想要使用它们:
import string
message =input("Type message ").lower()
shift = int(input("Enter number to code "))
encrypted = message.translate(str.maketrans(string.ascii_lowercase,
string.ascii_lowercase[shift:]+string.ascii_lowercase[:shift]))
print(encrypted)
答案 2 :(得分:0)
格式正确且工作正常,我为我的CA创建了相同的代码
message =input("Type message ")
shift = int(input("Enter number to code "))
message = message.lower()
print (message)
for a in message:
if a in "abcdefghijklmnopqrstuvwxyz" :
number = ord(a)
number += shift
if number > ord("z") :
number -= 26
elif number < ord("a") :
number += 26
message = chr(number)
print (message)