版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章基本数据类型本章知识导读2.1数字类型及操作2.2字符串类型及操作CATALOGUE目录01数字类型及操作2.1.1整数类型与数学中整数的概念一致可正可负,没有取值范围限制(实际受限于计算机内存)共有4种进制表示方法:十进制、二进制、八进制和十六进制进制种类引导符号描述十进制无默认情况,例如101,-18二进制0b或0B由字符0和1组成,例如0b101,
-0B101八进制0o或0O由字符0到7组成,例如0o117,-0O117十六进制0x或0X由字符0到9、a到f、A到F组成,例如0x1f2.1.2浮点数类型与数学中的实数概念一致:带有小数点及小数的数字浮点数取值范围和小数精度都存在限制,但常规计算可忽略运算存在不确定尾数
round()2.1.2浮点数类型运算存在不确定尾数
round()>>>
0.1
+
0.30.4>>>
0.1
+
0.20.30000000000000004不确定尾数0.153位二进制表示小数部分,约10-16
0.00011001100110011001100110011001100110011001100110011010
(二进制表示)
0.1000000000000000055511151231257827021181583404541015625
(十进制表示)
二进制表示小数,可以无限接近,但不完全相同0.1
+
0.2
结果无限接近0.3,但可能存在尾数>>>
0.1
+
0.2
==
0.3False>>>
round(0.1+0.2,
1)
==
0.3Trueround(x,
d):对x四舍五入,d是小数截取位数浮点数间运算与比较用round()函数辅助2.1.2浮点数类型与数学中的实数概念一致:带有小数点及小数的数字浮点数取值范围和小数精度都存在限制,但常规计算可忽略运算存在不确定尾数
round()可以采用科学计数法表示
<a>e<b>表示
a*10b
例如:4.3e-3
值为0.00439.6E5
值为960000.02.1.3复数类型
复数可以看作是二元有序实数对(a,b),表示为a+bj,其中a为实数部分(简称实部),b为虚数部分(简称虚部)。
注意:复数的虚数部分通过后缀“J”或“j”来表示,虚数部分必须为整数。对于复数z,可以用z.real和z.imag分别获得它的实数部分和虚数部分,例如:>>>(-1.2e-2-3.8e+35j).real-0.012>>>(-1.2e-2-3.8e+35j).imag-3.8e+352.1.4数字类型的操作1.内置的数值运算操作符操作符描述实例结果描述+加法1+23两数之和-减法1.2-3.4-2.2两数之差*乘法5*6.030.0两数之积/浮点数除法5/22.5两数之商,结果为浮点数//整数除法5//22采用向下取整方式,结果为整数%取余5%21操作数可以为浮点数**幂运算2**24x**y表示x的y次幂,即xy2.1.4数字类型的操作类型间可进行混合运算,生成结果为"最宽"类型三种类型存在一种逐渐"扩展"或"变宽"的关系:整数
->
浮点数
->
复数例如:123
+
4.0
=
127.0(整数+浮点数
=
浮点数)注意:在乘法运算中,“*”不可以省略,在书写表达式的时候要和数学中的写法相区别。例如语句:m=4ab,必须写成:m=4*a*b。Python中的除法有两种,一种是单斜杠(/)表示实数除法,另一种是双斜杠(//),表示整除,它会对除后的结果进行取整操作。思考:找零问题:现在只有50元,5元和1元的人民币若干张。输入一个整数金额值,给出找零的方案,假设人民币足够多,且优先使用面额大的钱币。money=eval(input("输入金额:"))m50=money//50#计算需要的50元面额的纸币数量money=money%50#使用50元面额钱币后剩下的金额m5=money//5money=money%5m1=moneyprint("50元面额需要的张数:",m50)print("5元面额需要的张数:",m5)print("1元面额需要的张数:",m1)2.1.4数字类型的操作
所有二元运算符(+、-、*、/、//、%、**)都可以跟赋值运算符结合在一起,形成复合赋值运算符(+=、-=、*=、/=、//=、%=、**=),复合赋值运算符中间不可有空格。
若a和b为操作数,则a+=b,等价于a=a+b;a*=b,等价于a=a*b。2.1.4数字类型的操作2.内置的数值运算函数函数描述abs(x)x的绝对值divmod(x,y)(x//y,x%y),输出为二元组形式(也称为元组类型)pow(x,y[,z])输出(x**y)%z,[]表示可选参数,省略z时等价于x**yround(x[,ndigits]对x四舍五入,保留ndigits位小数。省略ndigtis时返回x四舍五入后的整数值max(x1,x2,…,xn)返回x1,x2,…,xn中的最大值min(x1,x2,…,xn)返回x1,x2,…,xn中的最小值2.1.4数字类型的操作3.内置的数字类型转换函数函数描述int(x)将x转换为整数,x可以是浮点数或整数形式的字符串float(x)将整数或数字形式的字符串x转换为浮点数complex(re[,im])生成一个复数,实部为re,虚部为im。re可以是整数、浮点数或数字形式的字符串,im可以是整数或浮点数但不能为字符串,且当re为字符串时,函数只能有这一个参数2.1.5math库math库是Python提供的内置数值计算标准函数库,由于复数类型常用于科学计算,一般计算并不常用,因此math库不支持复数类型,仅支持整数和浮点数。math库提供4个数学常数和44个函数,函数分为4类,包括16个数值表示函数、8个幂对数函数、16个三角对数函数和4个高等特殊函数。math库中的常数和函数不能直接使用,需要用关键字import引用后才可使用。1.使用math库引用math库有两种方式:方式1:importmath方式2:frommathimport<函数名>
使用math库中的pi常数,方式1中在pi常数前写上库名,即“math.”;方式2中,用import直接引用math中的常数pi,使用pi时前面不需要再加上库名;方式2还可以写作frommathimport*,采用这样的方式引入math库,库中所有常数和函数都可以直接使用,前面不需要加上“math.”。2.math库的数学常数常数数学形式描述math.pi
圆周率,值为3.141592653589793math.ee自然对数,值为2.718281828459045math.inf
正无穷大,负无穷大为-infmath.nan
非浮点数标记,NaN(NotaNumber)3.math库的部分数值函数函数数学形式描述math.fabs(x)
|x|返回x的绝对值math.fmod(x,y)x%y返回x与y的模math.fsum([x,y,…])x+y+…浮点数精确求和math.ceil(x)x向上取整,返回不小于x的最小整数math.floor(x)x向下取整,返回不大于x的最大整数math.factorial(x)x
返回x的阶乘,如果x是小数或负数,返回ValueErrormath.gcd(a,b)返回a与b的最大公约数3.math库的部分数值函数4.math库的部分幂对数与三角函数1函数数学形式描述pow(x,y)xy返回x的y次幂exp(x)ex返回e的x次幂,e为自然对数sqrt(x)返回x的平方根log(x[,base])log2(x)返回x的2对数值log10(x)返回x的10对数值degrees(x)
x为弧度制,返回x对应的角度值radians(x)
x为角度制,返回x对应的弧度值hypot(x,y)返回(x,y)坐标到原点(0,0)的距离4.math库的部分幂对数与三角函数2函数数学形式描述sin(x)返回x的正弦函数值,x为弧度值cos(x)返回x的余弦函数值,x为弧度值tan(x)返回x的正切函数值,x为弧度值asin(x)返回x的反正弦函数值,x为弧度值acos(x)返回x的反余弦函数值,x为弧度值atan(x)返回x的反正切弦函数值,x为弧度值4.math库的部分幂对数与三角函数02字符串类型及操作2.2.1字符串类型
使用单引号或双引号括起来的内容,称为字符串类型数据(str),可以使用以下4种方式定义。单引号(’’),其中可以包含双引号。双引号(””),其中可以包含单引号。三单引号(’’’’’’),其中可以包含单引号和双引号,可以跨行。4)三双引号(””””””
),其中可以包含单引号和双引号,可以跨行。思考:字符串为何要提供4种表示方法?(1)如果希望在字符串中包含双引号或单引号呢?'这里有个双引号(")'
或者
"这里有个单引号(')"(2)如果希望在字符串中既包括单引号又包括双引号呢?'''
这里既有单引号(')又有双引号
(")
'''强制类型转化强制类型转化是将表达式强制转换为所需的数据类型。强制类型转化强制类型转化是将表达式强制转换为所需的数据类型。在input输入中可以使用int或者float来代替eval2.2.2基本的字符串操作符——基本操作符Python提供了3个字符串的基本操作符,如下表所示。基本操作符描述+连接两个字符串,例如:x+y*复制字符串指定次数,例如:x*n或n*x,其中x为字符串,n为次数in判断是否为子串,例如:xins,若x为s的子串,返回True,否则返回False>>>string="Python"+"语言程序设计">>>string'Python语言程序设计'>>>'ComeOn!'*3'ComeOn!ComeOn!ComeOn!'>>>"Python"instringTrue2.2.2基本的字符串操作符——基本操作符
反斜杠(\)是一个特殊字符,表示转义。Python语言支持转义字符,特殊的格式化控制字符可以使用反斜杠开头,转义字符描述\n换行符,光标移动到下一行行首\r换行符,光标移动到本行行首\t水平制表符,即“Tab”键,一般相当于4个空格\v垂直制表符\\反斜杠,在字符串中要表示斜杠(\)本身\’单引号,在字符串中要表示单引号(‘)本身\"双引号,在字符串中要表示双引号(")本身\a发出系统响铃声\b退格符,将光标前移,覆盖删除前一个字符\f换页\0表示空字符(NULL),什么都不做\xyy以”\x”开头,yy表示2位十六进制字符,例如:\x0a表示换行\000000表示至多三位八进制字符,例如:\12表示换行1、转义符表达特定字符的本意。"这里有个双引号(\")"
结果为这里有个双引号(")2、转义符形成一些组合,表达一些不可打印的含义。"\b"回退
"\n"换行(光标移动到下行首)
"\r"
回车(光标移动到本行首)2.2.2基本的字符串操作符——索引和切片Python语言中可以通过索引和切片操作来访问字符串中的一个或多个字符。如图所示,Python语言中字符串包含两种序号体系:正向递增序号和反向递减序号。2.2.2基本的字符串操作符——索引和切片(1)索引:返回字符串中单个字符>>>s="欢迎来到Python的编程世界!">>>s[0]#输出字符串首字符'欢'>>>s[-1]#输出字符串最后一个字符'!'>>>s[4]#输出字符串从左到右第5个字符'P'>>>s[-11]#输出字符串从右到左第11个字符'y'2.2.2基本的字符串操作符——索引和切片(2)切片:返回字符串中一段字符子串>>>s="欢迎来到Python的编程世界!">>>s[4:10]#输出'Python'>>>s[11:-1]#输出'编程世界'>>>s[:2]#缺省头索引,表示从字符串的首字符开始取子串,输出'欢迎'>>>s[10:]#缺省尾索引,表示取到字符串最后一个字符,输出'编程世界!'>>>s[:]#若头尾索引均缺省,则取整个字符串,输出'欢迎来到Python的编程世界!'2.2.2基本的字符串操作符——索引和切片>>>s="欢迎来到Python的编程世界!"
>>>s[4:10:1]#从左向右正向取,输出'Python'>>>s[4:10:3]#从左向右正向间隔两个字符取,输出'Ph'>>>s[4:10:-1]#从右向左反向取,但头索引比尾索引小,无法反向,输出''>>>s[10:4:-1]#从右向左反向取,输出'的nohty',无法取到索引号为4的'P'>>>s[4::-1]#尾索引缺省,从右向左反向取,输出'P到来迎欢'>>>s[::-1]#头尾索引均缺省,从右向左反向取,相当于取字符串的逆序串#输出'!界世程编的nohtyP到来迎欢'思考:试编程:输入一个1-12的整数,输出对应的月份名称缩写。months=“JanFebMarAprMayJunJulAugSepOctNovDec”可以通过切出适当的子字符串来对应特定月份,关键是在哪里切片呢?
由于每个月的名称缩写都由三个字母组成,如果知道一个给定月份在字符串中开始的位置,就可以很容易地提取月份名称缩写。monthAbbrev=months[pos:pos+3]
这将获得从pos指示位置开始的长度为3的子串。那么如何计算这个pos呢?思考:
由于月份名称缩写与切片起始位置相关,从表中数据可以看出切片的起始位置pos=(m-1)*3,接下来就可以开始编码了。输入的整数m月份名称缩写切片的起始位置pos1Jan02Feb33Mar6m=int(input("输入0-12的整数:"))months="JanFebMarAprMayJunJulAugSepOctNovDec"pos=(m-1)*3print(months[pos:pos+3])2.2.3内置的字符串处理函数Python解释器提供了一些内置函数,常见的与字符串处理相关的函数如下表所示。函数描述len(x)返回字符串x的长度str(x)将任意类型x转换为字符串类型chr(x)返回Unicode编码为x的字符ord(x)返回字符x的Unicode编码hex(x)返回对应十六进制数的小写形式字符串oct(x)返回对应八进制数的小写形式字符串2.2.3内置的字符串处理函数Python中字符使用的是Unicode编码标准,函数chr()和ord()可以实现编码与字符之间的转换。2.2.3内置的字符串处理函数
观察输出结果:(1)大写字母、小写字母和数字字符的Unicode编码是顺序排列的,可以通过'a'的编码97,推导出'e'的编码为101。(2)Unicode编码值的整体大小顺序为:数字字符<大写字母<小写字母。要记住一些特殊字符的Unicode编码,例如:‘0’,‘a’,’A’。2.2.4内置的字符串处理方法
在Python解释器内部,所有数据类型都采用面向对象的方式实现。作为类,字符串具有类似<a>.<b>()形式的字符串处理函数,在面向对象中这类函数被称为“方法”。Python语言为字符串对象提供了44个内置方法用于字符串的检测、替换和排版操作。需要注意的是,字符串对象是不可变的,所以字符串对象提供的涉及字符串“修改”的方法都是返回修改之后的新字符串,并不对原字符串做任何修改。2.2.4内置的字符串处理方法Python解释器内置的字符串处理常用方法如下表所示。类型方法大小写字符转换lower()、upper()、capitalize()、title()、swapcase()字符串查找find()、rfind()、index()、rindex()、count()字符串分隔split()、rsplit()字符串连接join()字符串替换replace()删除空白或指定字符strip()、rstrip()、lstrip()判断字符串类型isupper()、islower()、isdigit()、isalnum()、isalpha()判断字符串是否以指定字符开始或结束startwith()、endwith()字符串排版center()、ljust()、rjust()、zfill()格式化方法format()、format_map()2.2.4内置的字符串处理方法1.大小写字符转换方法:lower()、upper()、capitalize()、title()、swapcase()2.2.4内置的字符串处理方法2.字符串查找类方法:find()、rfind()、index()、rindex()、count()find()和rfind()方法分别用来查找一个字符串在另一个字符串指定范围(默认是整个字符串)中首次和最后一次出现的位置,如果不存在则返回-1。index()和rindex()方法分别用来查找一个字符串在另一个字符串指定范围(默认是整个字符串)中首次和最后一次出现的位置,如果不存在则抛出异常。count()方法用来返回一个字符串在另一个字符串中出现的次数,如果不存在则返回0。2.2.4内置的字符串处理方法2.字符串查找类方法:find()、rfind()、index()、rindex()、count()2.2.4内置的字符串处理方法3.字符串分隔类方法:split()、rsplit()、partition()、rpartition()split()和rsplit()方法分别用来以指定字符为分隔符,从原字符串左端和右端开始将其分隔成多个字符串,并返回包含分隔结果的列表(列表将在后续章节中介绍)。默认按空白符号分隔字符串,如空格,换行符,制表符等.2.2.4内置的字符串处理方法4.字符串连接方法:join()字符串的join()方法用来将列表中多个字符串进行连接,并在相邻两个字符串之间插入指定字符,返回新字符串。2.2.4内置的字符串处理方法5.字符串替换方法:replace()replace()方法用来替换字符串中指定字符或子字符串,每次只能替换一个字符或子串,类似于Word,记事本等文本编辑器的查找和替换功能。该方法不修改原字符串,而是返回一个新字符串。2.2.4内置的字符串处理方法删除字符串两端,右端或左端连续空白字符和指定字符方法:strip()、rstrip()、lstrip()2.2.4内置的字符串处理方法判断字符串是否以指定字符开始或结束方法:startswith()、endswith()2.2.4内置的字符串处理方法判断字符串类型方法:isupper()、islower()2.2.4内置的字符串处理方法字符串排版方法:center()、ljust()、rjust()、zfill()2.2.5字符串类型的格式化字符串格式化用于解决字符串和变量同时输出时的格式问题。Python语言同时支持两种字符串格式化方法:1.格式化字符串字面值(通常称为f-string)f-string是在Python3.6中引入的,它提供了一种简洁且易于阅读的方式来格式化字符串;2.采用专门的str.format()格式化方法。2.2.5字符串类型的格式化1.f-string()方法的基本用法f-string()方法是一种在字符串中嵌入表达式的方法,它允许在字符串中直接插入变量或表达式的值。>>>name="Tom">>>age=30>>>greeting=f"Hello,{name}!
Youare{age}yearsold.">>>print(greeting)Hello,Tom!Youare30yearsold.>>>a=5>>>b=10>>>result=f"Theresultof{a}+{b}is{a+b}.">>>print(result)Theresultof5+10is15.>>>price=19.99999>>>formatted_price=f"Thepriceis${price:.2f}">>>print(formatted_price)Thepriceis$20.002.2.5字符串类型的格式化2.format()方法的基本格式
(1)format()方法中槽和参数的顺序(2)format()方法中槽与参数的对应关系2.2.5字符串类型的格式化2.format()方法的基本格式format()方法可以非常方便地连接不同类型的变量或内容,如果需要输出大括号本身,可采用如下的表示方式:>>>"Python语言中的{0}()方法用一对大括号表示槽'{{}}',槽可以嵌套{{{1}、{2}}}".format("format","参数1","参数2")"Python语言中的format()方法用一对大括号表示槽'{}',槽可以嵌套{参数1、参数2}"2.2.5字符串类型的格式化3.format()方法的格式控制format()方法模板字符串的槽中除了包括参数序号,还可以包含格式控制信息,形式如:{<参数序号>:<格式控制标记>},其中格式控制标记用来控制参数显示时的格式。格式控制标记描述<填充>在宽度内除了参数外用于填充的单个字符,默认采用空格<对齐>指参数在宽度内输出时的对齐方式:<左对齐、>右对齐、^居中对齐<宽度>当前槽设定的输出字符宽度。如果小于参数长度,使用参数实际长度;如果大于参数长度,默认补充空格字符或通过设定<填充>更换字符<,>数字的千位分隔符,适用于整数和浮点数<.精度>浮点数:小数部分输出的有效位数;字符串:输出的最大长度<类型>整数类型:b(二进制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 年精神科护生心理照护带教实施对策
- 商场(超市)安全生产标准化检查清单
- 药物过敏性休克题库含答案
- 小学语文六年级小升初试卷(附答案解析)
- 微观经济学1考试试题及答案
- 企业安全生产标准化评审人员考试试卷及答案
- 结构化国企面试题及答案解析(2026年版)
- 2026年基因测序设备维护:AI预测故障与保养建议
- 2026年西藏阿里初级统计师资格考试(统计学和统计法基础知识)题库及答案
- 2026年企业培训学习项目参与度提升培训考试试题及答案
- 濉溪融媒体中心建设方案
- 2026年百度校招笔试重点题库
- 2026年中国广核集团笔试试题及答案解析
- 2026年中国应急管理与应急服务行业市场研究报告-
- 2026新疆水利水电勘测设计研究院有限责任公司及所属子公司社会招聘21人农业笔试备考题库及答案解析
- 创伤救治多学科协作(MDT)模式构建与运行
- 对经销商违规行为的处理通知函3篇
- 金融网点安全防范指南(标准版)
- 油基泥浆技术
- KISS复盘法培训课件
- 2025年全国设备监理师设备工程质量管理与检验新版真题附答案
评论
0/150
提交评论