Python凯撒加密与程序是怎样跑起来的

####前几天做Python作业时,遇到了一道很有意思的题,关于凯撒加密问题和随机抓狐狸游戏问题。个人在学习过程中觉得凯撒加密的思想以及涉及的字符串的内容较多,是一个比较基础的关于字符串的题,就记录下来。
###Pthon实现凯撒加密解析
关于凯撒加密
在密码里面,凯撒加密:是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

主要方法
字母错位。采用了替换方法对输入的信息(字符串)中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符。字母表对应关系如下:
原字母表:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
加密错位: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

设计思想

  1. 由于输入的是英文字符串,所以用string类编写。在这里一定要提前了解python标准库string。
  2. 字母错位是针对每个字符进行操作,所以如果输入的是字符串,要将输入的字符串转化为字符数组,可以调用string函数类的tocarryAway。
  3. 错位操作只读取一个字符,在原来字母的ASCII码值上+3,再转化为char类型,就实现了错3位的加密操作。
  4. 加密操作中,若加密字母时字母表中的最后三个字母,如x,y,z。就用到循环操作,当读取字符数组中的X,Y,Z时在原来的ASCII码值上-23,再转化为char类型即可。

关于python中的string操作函数

在最开始的时候,python有一个专门的string的module,要使用string的方法要先import,但后来由于众多的python使用者的建议,从python2.0开始,string方法改为用S.method()的形式调用,只要S是一个字符串对象就可以这样使用,而不用import。同时为了保持向后兼容,现在的python中仍然保留了一个string的module,其中定义的方法与S.method()是相同的,这些方法都最后都指向了用S.method()调用的函数。要注意,S.method()能调用的方法比string的module中的多,比如isdigit()、istitle()等就只能用S.method()的方式调用。

5整理一下字符串常用方法
字符串中字符大小写的变换:(常用)

Str.lower() #小写
Str.upper() #大写
Str.swapcase() #大小写互换
Str.capitalize() #首字母大写,其他字母为小写。
Str.capwords(S) #这是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母变成大写,最后用join()合并到一起
Str.title() #只有首字母大写,其余为小写,模块中没有这个方法

字符串在输出时的对齐

Str.ljust(width,[fillchar])
#输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
Str.rjust(width,[fillchar]) #右对齐
Str.center(width, [fillchar]) #中间对齐
Str.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足

字符串中的搜索和替换

Str.find(substr, [start, [end]])
#返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索

Str.index(substr, [start, [end]])
#与find()相同,只是在S中没有substr时,会返回一个运行时错误
Str.rfind(substr, [start, [end]])

#返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号

Str.count(substr, [start, [end]]) #计算substr在S中出现的次数
Str.strip([chars]) #把Str中两端的字符串chars删掉
Str.lstrip([chars]) #删除str左边的空格
Str.rstrip([chars]) #删除str右边的空格

##关于 《程序是如何跑起来的》记录学习进度
首先,用C语言写一个很简单的代码。
Python凯撒加密与程序是怎样跑起来的_第1张图片
程序运行的结果很简单,就是:helloworld!。那么,它是怎样运行出结果的呢?由于计算机并不认识高级语言编写的程序,编好的程序需要进行编译变成计算机能够识别的机器语言程序,这里就需要编译器和汇编器的帮助。其次,机器语言程序需要加载到内存,形成一个运动中的程序,即进程,而这需要操作系统的帮助。进程需要在计算机芯片CPU上执行才算是真正的执行,而将进程调度到CPU上运行也由执行才算是真正的执行,而将进程调度到CPU上运行也由操作系统完成。最后,在CPU上执行的机器语言指令需要变成能够在一个个时钟脉冲里执行的基本操作,这需要指令集结构和计算机硬件的支持,而整个程序的执行过程还需要操作系统提供的服务和程序语言提供的执行环境。就这样,一个从程序到微指令执行的过程就完成了。

 关于内存:
通常说的内存指的是计算机的主存储器,简称主存。主存通过控制芯片等与CPU相连,主要负责存储指令和数据,主存由可读写的元素构成,每个字节都带有一个地址编码。CPU可以通过地址读取主存中的指令和数据,当然也可以写入数据。因为计算机是进行数据处理的设备,而程序表示的就是处理顺序和数据结构。由于处理对象数据是存储在内存和磁盘上的,因此程序必须能自由地使用内存和磁盘。
正在运行的程序就要存储在内存,硬盘等媒介上,保存的程序被复制到内存后才能运行。(关于计算机各部分功能下去查资料了解)

(采用一问一答式)

  • 什么是程序
    -指令序列,指示计算机每一步动作的一组指令

  • 什么是机器语言?
    -CPU可以直接识别和使用的语言,CPU能够直接识别和执行的只有机器语言。

  • 什么是CPU?
    -中央控制单元。是计算机的大脑。它可以大致分为控制单元、运算单元、存储单元和时钟等几个主要部分。
    关于程序运行流程:
    预处理——>编译——>汇编——>链接

    预处理:主要工作是:删除注释,展开宏,也就是栗子中的stdio.h,处理预编译指令等。最终他会生成一个以.i为后缀的文件。
    编译:实际上就是把预处理阶段返回的文件进行词法分析,语法分析,语义分析以及优化,最终生成一个汇编代码的文件。
    汇编:将上述产生的汇编代码转化为机器指令,把这些指令打包成一种叫做object的文件,文件以.o为后缀。称之为目标代码。
    链接:将上面分段编译出的目标代码拼接到一起去,从而生成一个可执行文件,操作系统装载这个可执行文件,就可以看到代码生成的结果了。

你可能感兴趣的:(Python凯撒加密与程序是怎样跑起来的)