Python学习笔记-03

第三章 基本数据类型

学习要点

  • 数字类型:整数类型、浮点数类型和复数类型
  • 数字类型的运算:数值运算操作、数值运算函数
  • 字符串类型及格式化:索引、切片、基本的format()格式化方法
  • 字符串类型的操作:字符串操作处理符、处理函数和处理方法
  • 类型判断和类型间转换

3.1 数字类型

Python语言提供三种数字类型:整数类型、浮点数类型、复数类型,分别对应数学中的整数,实数和复数。例如,1010是一个整数,10.10是一个浮点数类型,10+10j是一个复数类型

3.1.1 整数类型

一般认为整数类型没有取值范围

进制种类 引导符号 描述
十进制 默认情况,例,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

3.1.2 浮点数类型

 浮点数类型表示带有小数的数值。浮点数类型必须带有小数部分,小数部分可以是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只能保留的小数位数。

3.1.3 复数类型

 复数类型表示数学中的复数。复数有一个基本单位元素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

3.2 数字类型的运算

3.2.1 数值运算操作符

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;
 增强赋值操作符能够简化对同一变量赋值操作语句的表达

3.2.2 数值运算函数

 内置的数值运算函数:

函数 描述
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没有限定,可以任意数量

3.3 字符串类型及格式化

 字符串是字符的序列表示,根据字符串的内容多少分为单行字符串和多行字符串。
 单行字符串可以由一对单引号(’)或双引号(" “)作为边界来表示,单引号和双引号作用相同。当使用单引号时,双引号可以作为字符串的一部分;使用双引号时,单引号可以作为字符串的一部分。
 多行字符串可以由一对三引号(’’’)或三双引号(” " ")作为边界来表示,两者作用相同。

>>>print(’’‘这是"多行字符串"的第一行
这是"多行字符串"的第二行
‘’’)
这是"多行字符串"的第一行
这是"多行字符串"的第二行

 反斜杠字符()是一个特殊字符,在python字符串中表示“转义”,即该字符与后面相邻的一个字符共同组成了新的含义。例如,\n表示换行,\表示反斜杠,'表示单引号,"表示双引号,\t表示制表符(Tab)等。
如果在字符串中既需要单引号又需要双引号,则需要使用转义字符
Python学习笔记-03_第1张图片
 反斜杠字符还有一个额外作用:续行

>>>if(a>10 and a<100) or
(a<-10 and a>-100);
print(“BINGO”)

3.3.1 字符串的索引

对字符串中某个字符的检索称为索引:
  <字符串或字符串变量>[序号]
字符串以Unicode编码存储,字符串的英文字符和中文字符都计作一个字符,例如:

>>>“青青子衿,悠悠我心。”[-5] #注意:标点符号也是字符
‘悠’

3.3.2 字符串的切片

  对字符串中某个字串或区间的检索称为切片
  <字符串或字符串变量>[N:M]
  切片获取字符串从N到M(不包含M)的子字符串,其中,N和M为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。切片要求N和M都在字符串的索引区间,如果N大于等于M,则返回空字符串。如果N缺失,则默认将N设为0;如果M缺失,则默认表示到字符串结尾。

>>>“青青子衿,悠悠我心。”[:4]
‘青青子衿’
>>>print(“青青子衿,悠悠我心。”[5:])
悠悠我心。
print 函数打印的字符串没有’ '表示,输出文本字符形式。

3.3.3 format()方法的基本使用

字符串格式化用于解决字符串和变量同时输出时的格式安排问题。.format()格式化方法:
  <模板字符串>.format(<逗号分隔的参数>)
如果模板字符串有多个槽,且槽内没有指定序号,则按照槽出现的顺序分别对应.format()方法中的不同参数。例如

>>>"{}曰:学而时习之,不亦{}。".format(“孔子”,“悦乎”)
‘孔子曰:学而时习之,不亦说乎。’

  可以通过format()参数的序号在模板字符串槽中指定参数的使用,参数从0开始编号,例如:

>>>"{1}曰:学而时习之,不亦{0}。”.format(“说乎”,“孔子”)
‘孔子曰:学而时习之,不亦说乎。’

如果字符串中出现槽的数量和.format()方法中出现的变量数量不一致,即程序不能够通过简单的顺序对应确定变量使用,则必须在槽中使用序号指定参数使用,否则会产生IndexError的错误。

>>>"《论语》是{0}弟子所著。{0}曰:学而时习之,不亦说乎。".format(“孔子”)
‘《论语》是孔子弟子所著。孔子曰:学而时习之,不亦说乎。’

  如果希望在模板字符串中直接输出大括号,使用{ {表示{,} }表示}。

3.4 字符串类型的操作

3.4.1 字符串操作符

python语言提供了5个基本操作符

操作符 描述
x+y 连接两个字符串x和y
xn或nx 复制n次字符串x
x in s 如果x 是 s 的子串,返回True否则返回False

3.4.2 字符串处理函数

函数 描述
len(x) 返回字符串x的长度,也可以返回其他组合数据类型的元素个数
str(x) 返回任意类型x所对应的字符串形式
chr(x) 返回Unicode编码x对应的单字符
ord(x) 返回单字符x表示的Unicode编码
hex(x) 返回整数x对应十六进制数的小写形式字符串
oct(x) 返回整数x对应八进制数的小写形式字符串

3.4.3 字符串处理方法

“方法”是程序设计中的一个专有名词,属于面向对象程序设计领域。在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字符串

3.5 类型判断和类型间转换

Python语言提供type(x)函数对变量x进行类型判断,适用于任何数据类型。
提示:type()的输出
  type(‘10.10’)的输出不是字符串“”而是一种内部类型表示,不能采用字符串比较方式进行类型判断
类型间转换函数

函数 描述
int(x) 将x转换为整数,x可以是浮点数或字符串
float(x) 将x转换为浮点数,x可以是整数或字符串
str(x) 将x转换为字符串,x可以是整数或浮点数

3.6 实例解析——凯撒密码

题目说明:
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬
原文: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()获得输入。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬

实例3.1 凯撒密码的加密
# 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='')
实例3.2 凯撒密码的解密
# 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='')

你可能感兴趣的:(Python学习笔记)