Python7_凯撒密码

Python7_凯撒密码

Hi!Lusia的Python滞留项目终于在一周后的今天重启,那么我们来一起看看今天的小程序凯撒密码(加密解密)吧!

密码的核心:换位加密
退的格数:秘钥
标点符号和空格,直接保留原样
只能加密英文

给程序打个框架:

mystring=input("请输入要加密的句子:")
encrypted=encrypt_caesar(mystring)
print("加密后:{0}".format(encrypted))
decrypted=decrypt_caesar(encrypted)
print("解密后:{0}".format(decrypted))

要运行空的控制台:run—>python shell 无快捷键
可以测试临时代码,快速了解python的内置函数,不需要print,就可以显示结果
utf-8编码:计算机可以识别汉字
ascii编码:计算机可以识别英文字母
小拓展:ascii的全称是American Standard Code for Information Interchange
65->A 97->a
ord()函数,将字母字符转化为ascii对应的数字。
chr()函数,将数字转化为ascii对应的字母。

位移函数:

def shift_character(in_character):
    return chr(ord(in_character)+3)

容器
列表(list),是一个容器
列表的特点:
1、有顺序
2、按位置提取指定位置元素
字典(dict):
专供搜素的关键词
“Name”:“Lusia”
键值对(Key Value Pair):
键:“Name”
值:“Lusia”
键是唯一的,值可以是相同的
键和值,都可以用不同类型,甚至可以混合类型。
用字典来解决x,y,z的加密问题:

encrypt_dict={
    "x" : "a",
    "y" : "b",
    "z" : "c",
    "X" : "A",
    "Y" : "B",
    "Z" : "C"
    }

加密部分函数完成:

def encrypt_caesar(input_string):
    encrypted=""
    for character in input_string:
        #查看是否是字母
        if character.isalpha():
            if character in encrypt_dict.keys():
                encrypted=encrypted+encrypt_dict[character]
            else:
                encrypted=encrypted+shift_character(character)
        #空格、标点符号,保持不变
        else:
            encrypted=encrypted+character
    return encrypted

整体代码:

encrypt_dict={
    "x" : "a",
    "y" : "b",
    "z" : "c",
    "X" : "A",
    "Y" : "B",
    "Z" : "C"
    }

decrypt_dict={
    "a" : "x",
    "b" : "y",
    "c" : "z",
    "A" : "X",
    "B" : "Y",
    "C" : "Z"
    }

#位移函数
def shift_character(in_character,shift):
    return chr(ord(in_character)+shift)

#加密部分
def encrypt_caesar(input_string):
    encrypted=""
    for character in input_string:
        #查看是否是字母
        if character.isalpha():
            if character in encrypt_dict.keys():
                encrypted=encrypted+encrypt_dict[character]
            else:
                encrypted=encrypted+shift_character(character,3)
        #空格、标点符号,保持不变
        else:
            encrypted=encrypted+character
    return encrypted

def decrypt_caesar(input_string):
    decrypted=""
    for character in input_string:
        if character.isalpha():
            if character in decrypt_dict.keys():
                decrypted=decrypted+decrypt_dict[character]
            else:
                decrypted=decrypted+shift_character(character,-3)
        else:
            decrypted=decrypted+character
    return decrypted
 
mystring=input("请输入要加密的句子:")
encrypted=encrypt_caesar(mystring)
print("加密后:{0}".format(encrypted))
decrypted=decrypt_caesar(encrypted)
print("解密后:{0}".format(decrypted))

本章小结:
-字母,数字互相转换
-ord() chr()
-ascii编码
-空的控制台测试代码
-字典,dict

你可能感兴趣的:(Python7_凯撒密码)