学习要点
Python语言提供三种数字类型:整数类型、浮点数类型、复数类型,分别对应数学中的整数,实数和复数。例如,1010是一个整数,10.10是一个浮点数类型,10+10j是一个复数类型
一般认为整数类型没有取值范围
进制种类 | 引导符号 | 描述 |
---|---|---|
十进制 | 无 | 默认情况,例,1010,-1010 |
二进制 | 0b或0B | 由字符0和1组成,例,0b1010,0B1010 |
八进制 | 0o或0O | 由字符0到7组成,例,0o1010,0O1010 |
十六进制 | 0x或0X | 由字符0到9、a到f或A到F组成,例:0x1010,0X1010 |
不同进制的整数之间可以运算或比较。
>>>(0x3F2+1010)/0o1762
2.0
>>>0x1010>0o1010
True
浮点数类型表示带有小数的数值。浮点数类型必须带有小数部分,小数部分可以是0.例如:1010.0
浮点数有2种表示方法:十进制形式的一般表示和科学计数法表示。除十进制外,浮点数没有其他进制表示形式
科学计数法使用字母e或者E作为幂的符号,以10为基数:
< a > e < b >=a x10b
1.01e3值为1010.0;-1.01E-3值为-0.00101。
一般来说浮点数类型的数值范围和小数精度受不同计算机系统的限制,一般浮点数的取值范围在-10308 到10308之间。
提示: 整数和浮点数进行幂运算的结果可能不同,整数的运算精度比浮点数高
python语言的浮点数运算存在一个”不确定尾数“问题
>>>0.1+0.2
0.0000000000000004
将浮点数运算去掉不确定尾数,可以用round()函数
round(x,d)是一个四舍五入函数,能够对x进行四舍五入操作,其中参数d只能保留的小数位数。
复数类型表示数学中的复数。复数有一个基本单位元素j,它被定义为j= − 1 \sqrt{-1} −1,叫做虚数单位。
11.3+4j;1.23e-4+5.67e+89j;
复数可以看作二元有序实数对(a,b),表示a+bj,其中a是实数部分,简称实部,b是虚数部分,简称虚部。需要注意,当b为1时,1不能省略,即1j表示复数,而j表示python程序中的一个变量。
复数类型中实部和虚部都是浮点类型,对于复数z,可以用z.real和z.imag分别获得它的实部和虚部。
>>>(1.23e4+5.67e4j).real
12300.0
Python提供了9个基本的运算操作符
操作符及运算 | 描述 |
---|---|
x+y | x与y之和 |
x-y | x与y之差 |
x*y | x与y之积 |
x/y | x与y之商,产生结果为浮点数 |
x//y | x与y之整数商,即:不大于x与y之商的最大整数 |
x%y | x与y之商的余数,也称为模运算 |
-x | x的负值,即:x*(-1) |
+x | x本身 |
x**y | x的y次幂 |
数值运算可能改变结果的数据类型,类型的改变与运算符有关,有如下基本规则:
所有二元运算操作符(+,-,,/,//,%,*)都可以与赋值符号(=)相连,形成增强赋值操作符(+=,-=,*=,/=,//=,%=,**=)。用op表示这些二元操作符,增强赋值操作符的用法如下:
x op = y等价于x=x op y;
增强赋值操作符能够简化对同一变量赋值操作语句的表达
内置的数值运算函数:
函数 | 描述 |
---|---|
abs(x) | x的绝对值 |
divmod(X,Y) | (X//Y,X%Y)输出为二元组形式(也称为元组类型) |
pow(x,y)或pow(x,y,z) | x ** y或(x**y)%z,幂运算 |
round(x)或round(x,d) | 对x四舍五入,保留d位小数,无参数d则返回四舍五入的整数值 |
max(x1,x2…xn) | x1~xn的最大值,n没有限定,可以任意数量 |
min(x1,x2…xn) | x1~xn的最小值,n没有限定,可以任意数量 |
字符串是字符的序列表示,根据字符串的内容多少分为单行字符串和多行字符串。
单行字符串可以由一对单引号(’)或双引号(" “)作为边界来表示,单引号和双引号作用相同。当使用单引号时,双引号可以作为字符串的一部分;使用双引号时,单引号可以作为字符串的一部分。
多行字符串可以由一对三引号(’’’)或三双引号(” " ")作为边界来表示,两者作用相同。
>>>print(’’‘这是"多行字符串"的第一行
这是"多行字符串"的第二行
‘’’)
这是"多行字符串"的第一行
这是"多行字符串"的第二行
反斜杠字符()是一个特殊字符,在python字符串中表示“转义”,即该字符与后面相邻的一个字符共同组成了新的含义。例如,\n表示换行,\表示反斜杠,'表示单引号,"表示双引号,\t表示制表符(Tab)等。
如果在字符串中既需要单引号又需要双引号,则需要使用转义字符
反斜杠字符还有一个额外作用:续行。
>>>if(a>10 and a<100) or
(a<-10 and a>-100);
print(“BINGO”)
对字符串中某个字符的检索称为索引:
<字符串或字符串变量>[序号]
字符串以Unicode编码存储,字符串的英文字符和中文字符都计作一个字符,例如:
>>>“青青子衿,悠悠我心。”[-5] #注意:标点符号也是字符
‘悠’
对字符串中某个字串或区间的检索称为切片。
<字符串或字符串变量>[N:M]
切片获取字符串从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。切片要求N和M都在字符串的索引区间,如果N大于等于M,则返回空字符串。如果N缺失,则默认将N设为0;如果M缺失,则默认表示到字符串结尾。
>>>“青青子衿,悠悠我心。”[:4]
‘青青子衿’
>>>print(“青青子衿,悠悠我心。”[5:])
悠悠我心。
print 函数打印的字符串没有’ '表示,输出文本字符形式。
字符串格式化用于解决字符串和变量同时输出时的格式安排问题。.format()格式化方法:
<模板字符串>.format(<逗号分隔的参数>)
如果模板字符串有多个槽,且槽内没有指定序号,则按照槽出现的顺序分别对应.format()方法中的不同参数。例如
>>>"{}曰:学而时习之,不亦{}。".format(“孔子”,“悦乎”)
‘孔子曰:学而时习之,不亦说乎。’
可以通过format()参数的序号在模板字符串槽中指定参数的使用,参数从0开始编号,例如:
>>>"{1}曰:学而时习之,不亦{0}。”.format(“说乎”,“孔子”)
‘孔子曰:学而时习之,不亦说乎。’
如果字符串中出现槽的数量和.format()方法中出现的变量数量不一致,即程序不能够通过简单的顺序对应确定变量使用,则必须在槽中使用序号指定参数使用,否则会产生IndexError的错误。
>>>"《论语》是{0}弟子所著。{0}曰:学而时习之,不亦说乎。".format(“孔子”)
‘《论语》是孔子弟子所著。孔子曰:学而时习之,不亦说乎。’
如果希望在模板字符串中直接输出大括号,使用{ {表示{,} }表示}。
python语言提供了5个基本操作符
操作符 | 描述 |
---|---|
x+y | 连接两个字符串x和y |
xn或nx | 复制n次字符串x |
x in s | 如果x 是 s 的子串,返回True否则返回False |
函数 | 描述 |
---|---|
len(x) | 返回字符串x的长度,也可以返回其他组合数据类型的元素个数 |
str(x) | 返回任意类型x所对应的字符串形式 |
chr(x) | 返回Unicode编码x对应的单字符 |
ord(x) | 返回单字符x表示的Unicode编码 |
hex(x) | 返回整数x对应十六进制数的小写形式字符串 |
oct(x) | 返回整数x对应八进制数的小写形式字符串 |
“方法”是程序设计中的一个专有名词,属于面向对象程序设计领域。在python解释期内部,所有数据类型都采用面向对象的方法实现。
方法也是一种函数。函数采用func(x)方式调用,而方法则采用< a >.func(x)的方式调用即A.B()形式。
方法以前导对象 < a >为输入
常用的字符串处理方法:
方法 | 描述 |
---|---|
str.lower() | 返回字符串str的副本,全部字符小写 |
str.upper() | 返回字符串str的副本,全部字符大写 |
str.split(sep=None) | 返回一个列表,由str根据sep被分割的部分构成,省略sep默认以空格分隔 |
str.count(sub) | 返回sub字串出现的次数 |
str.replace(old,new) | 返回字符串str的副本,所有old子串被替换为new |
str.center(width,fillchar) | 字符串居中函数,fillchar参数可选 |
str.strip(chars) | 从字符串str中去掉在其左侧和右侧chars中列出的字符 |
str.join(iter) | 将iter变量的每一个元素后增加一个str字符串 |
Python语言提供type(x)函数对变量x进行类型判断,适用于任何数据类型。
提示:type()的输出
type(‘10.10’)的输出不是字符串“
类型间转换函数
函数 | 描述 |
---|---|
int(x) | 将x转换为整数,x可以是浮点数或字符串 |
float(x) | 将x转换为浮点数,x可以是整数或字符串 |
str(x) | 将x转换为字符串,x可以是整数或浮点数 |
题目说明:
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文: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
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入包含大小写字母azAZ、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
# CaesarEncode.py
ptext = input("请输入明文文本:")
for p in ptext:
if"a"<= p <= "z":
print(chr(ord("a")+(ord(p)-ord("a")+3)%26).end='')
elif"A"<= p <="Z":
print(chr(ord("A")+(ord(p)-ord("A")+3)%26).end='')
else:
print(p,end='')
# CaesarDecode.py
ptext = input("请输入加密后文本:")
for p in ptext:
if"a"<= p <= "z":
print(chr(ord("a")+(ord(p)-ord("a")-3)%26).end='')
elif"A"<= p <="Z":
print(chr(ord("A")+(ord(p)-ord("A")-3)%26).end='')
else:
print(p,end='')