第三章 基本数据类型

学习要点

  • 数字类型:整数类型、浮点数类型和复数类型
  • 数字类型的运算:数值运算操作、数值运算函数
  • 字符串类型及格式化:索引、切片、基本的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)等。
 如果在字符串中既需要单引号又需要双引号,则需要使用转义字符

 反斜杠字符还有一个额外作用:续行。

>>>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’)的输出不是字符串“<class’str’>”而是一种内部类型表示,不能采用字符串比较方式进行类型判断
类型间转换函数

函数 描述
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学习笔记-03相关推荐

  1. python学习笔记 -- 03 实现切割九图

    废话 朋友问我能不能搞个九图切割的小软件,我就着手搞了 不过这次注释我会用英文写 九图切割 一.需求 选择图片路径 裁剪图片成九张 保存裁剪的九张图片 二.步骤分析 选择图片 打开图片 裁剪图片 保存 ...

  2. python学习笔记02

    python学习笔记02 面向对象Object Oriented 概述 类和对象 封装 继承 多态 类与类的关系 设计原则 总结 python学习笔记03 面向对象Object Oriented 概述 ...

  3. Python 基础学习笔记 03

    Python基础系列 Python 基础学习笔记 01 Python 基础学习笔记 02 Python 基础学习笔记 03 Python 基础学习笔记 04 Python 基础学习笔记 05 文章目录 ...

  4. python半径为3圆形区域边界曲线_OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓...

    本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...

  5. python 学习笔记 12 -- 写一个脚本获取城市天气信息

    近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...

  6. Python学习笔记:第三方模块2

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:常用内建模块7XML

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. ES6学习笔记03:变量的解构赋值

    ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...

  9. openCVPracticalExercise学习笔记03

    原创:openCVPracticalExercise学习笔记03 20使用OpenCV实现基于增强相关系数最大化的图像对齐(略) 21使用OpenCV的Eigenface 如何计算如何计算EigenF ...

最新文章

  1. 数据通信技术(十一:无中继的DHCP配置(ZTE))
  2. abaqus二次开发python 建立集合,ABAQUS二次开发-Python脚本运行方式
  3. ioremap 与 mmap【转】
  4. Java黑皮书课后题第2章:*2.20(金融应用:计算利息)编写程序,读取余额和年利率百分比,打印下个月的利息
  5. 机器学习基本算法的sklearn接口
  6. 一个指针变量到底占几个字节
  7. 2019北京理工大学计算机专硕经验分享
  8. Getting Started with Processing 第五章的easing问题(2)
  9. windows 10 markdown pad awesomium crashed
  10. 二调建设用地地类代码_二调地类代码表[1]
  11. QQ影音播放器 for Mac
  12. 网络对战五子棋(附带源码,可以直接下载使用)
  13. YDOOK:ESP8266 flash 工具 flash_download_tool_v3.8.5 下载安装教程
  14. 如何运行计算机学报的LaTeX模板?
  15. alter index
  16. 中国氨基酸表面活性剂市场前景展望与发展建议分析报告2022-2028年
  17. unity广告投放技巧_是否需要快速投放动画广告系列? 只要在Unity中做到
  18. craig gentry_为Craig投票!
  19. IOB, BIO, BIOES
  20. 树莓派强制更改root密码

热门文章

  1. 如何用 EM 算法对王者荣耀数据进行聚类
  2. 片袖原型制图_合体连身袖原型造型原理和制图步骤
  3. PHP 的ES搜索操作
  4. CAD梦想画图中的“重画、绘图模式”
  5. 计算机毕业设计Java“原创音乐爱好者”交流网站(源码+系统+mysql数据库+lw文档)
  6. 远程链接时需要输入账号密码
  7. 大型情感类电视连续剧--Android高德之旅(2)地图类型
  8. linux在线模拟器
  9. java基础知识总结:基础知识、面向对象、集合框架、多线程、jdk1.5新特性、IO流、网络编程
  10. Centos7搭建本地Web服务器