3.1 数字类型(课件)-《程序设计基础(Python)》同步教学(人民邮电版)

2024-08-19
| 23页
| 72人阅读
| 6人下载
普通

内容正文:

单元3 基本数据类型 任务3-1:测试数字的类型和取值范围 【任务目标】 在Python交互环境中测试整数、浮点数等数字的类型和取值范围,示例代码如下。 >>> type(20) <class 'int'> >>> type(0b110) <class 'int'> >>> type(0o110) <class 'int'> 【任务实施】 演示过程…… >>> type(0x110) <class 'int'> >>> type(True) <class 'bool'> >>> type(2.5) <class 'float'> >>> type(2+3j) <class 'complex'> 3.1 数字类型 本节主要内容: 整数类型 浮点数类型 复数类型 小数类型 分数类型 3.1.1 整数类型 整数类型可细分为整型(int)数和布尔型(bool)数。 整型数(简称“整数”)是不带小数点的数。例如,123、-12、0、9999999999999999等。在Python中,整数可表示任意大小的数字(受计算机内存限制)。 例如,下面在交互模式下分别输出2和9的100次方。 >>> 2**100 1267650600228229401496703205376 >>> 9**100 265613988875874769338781322035779626829233452653394495974574961739092490901302182994384699044001 整数通常表示为十进制。Python还允许将整数表示为二进制、八进制和十六进制。 二进制:以“0b”或“0B”开头,数码包括0和1。例如0b101、0B11。 八进制:以“0o”或“0O”开头,数码包括0~7。例如0o15、0O123。 十六进制:以“0x”或“0X”开头,数码包括0~9、A~F或a~f。例如0x12AB、0x12ab。 不同进制只是整数的不同书写形式,Python程序运行时会将整数处理为十进制数。 布尔型数(也称布尔值或逻辑值)只有True和False两种取值。 True和False类似于数字1和0。例外的情况是将布尔值转换为字符串时,True转换为“True”,False转换为“False”。 在Python中,因为布尔型是整数类型的子类型,所以逻辑运算和比较运算均可归入数字运算的范畴。 可以使用type()函数查看数据类型,示例代码如下。 >>> type(123) <class 'int'> >>> type(123.0) <class 'float'> 可以使用int()函数将一个字符串按指定进制转换为整数。int()函数的基本语法格式如下。 int('整数字符串',n) int()函数按指定进制将整数字符串转换为对应的整数,示例代码如下。 >>> int('111') #默认按十进制转换 111 >>> int('111',2) #按二进制转换 7 >>> int('111',8) #按八进制转换 73 >>> int('111',10) #按十进制转换 111 >>> int('111',16) #按十六进制转换 273 >>> int('111',5) #按五进制转换 31 int()函数的第一个参数只能是整数字符串,即字符串中应该是一个有效的整数(包括正负号),不能包含小数点或其他字符(字符串开头的空格可以忽略),否则会出错,示例代码如下。 >>> int('+12') 12 >>> int('-12') -12 >>> int(' 123') 123 >>> int('12.3') #字符串中包含小数点,出错 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '12.3' >>> int('123abc') #字符串中包含字母,出错 Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '123abc' 3.1.2 浮点数类型 浮点数类型的名称为float。 12.5、2.、.5、3.0、1.23e+10、1.23E-10等都是合法的浮点数常量。 浮点数取值范围为-10308~10308。 超出取值范围会产生溢出错误(OverflowError)。 示例代码如下。 >>> 2. #小数点后的0可以省略 2.0 >>> .5 #小数点前的0可以省略 0.5 >>> 10.0**308 1e+308 >>> 10.0**309 #超出浮点数的取值范围 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Result too large') >>> -10.0**308 -1e+308 >>> -10.0**309 #超出浮点数的取值范围 Traceback (most recent call last): File "<stdin>", line 1, in <module> OverflowError: (34, 'Result too large') float()函数可将整数和字符串转换为浮点数,示例代码如下。 >>> float(12) 12.0 >>> float('12') 12.0 >>> float('+12') 12.0 >>> float('-12') -12.0 3.1.3 复数类型 复数类型的名称为complex。 复数常量表示为“实部+虚部”形式,虚部以j或J结尾。例如,2+3j、2-3J、2j。 可用complex()函数来创建复数,其基本格式如下。 complex(实部,虚部) 示例代码如下。 >>> complex(2,3) (2+3j) 3.1.4 小数类型 因为计算机硬件特点,浮点数不能执行精确运算 示例代码如下。 >>> 0.3+0.3+0.3+0.1 #计算结果并不是1.0 0.9999999999999999 >>> 0.3-0.1-0.1-0.1 #计算结果并不是0 -2.7755575615628914e-17 Python 2.4开始引入了一种新的数字类型:小数类型。 小数可以看作是固定精度的浮点数,它有固定的位数和小数点,可以满足要求精度的计算。 1.创建和使用小数对象 小数对象使用decimal模块中的Decimal()函数创建 示例代码如下。 >>> from decimal import Decimal #从模块导入函数 >>> Decimal('0.3')+Decimal('0.3')+Decimal('0.3')+Decimal('0.1') Decimal('1.0') >>> Decimal('0.3')-Decimal('0.1')-Decimal('0.1')-Decimal('0.1') Decimal('0.0') >>> type(Decimal('1.0')) <class 'decimal.Decimal'> 2.小数的全局精度 全局精度指作用于当前程序的小数的有效位数设置,默认全局精度为28位有效数字。 可使用decimal模块中的上下文对象来设置小数的全局精度。 首先,调用decimal模块的getcontext()函数获得当前的上下文对象 再通过上下文对象的prec属性设置全局精度 示例代码如下 >>> from decimal import * #导入模块 >>> Decimal('1')/Decimal('3') #用默认精度计算小数 Decimal('0.3333333333333333333333333333') >>> context=getcontext() #获得上下文对象 >>> context.prec=5 #设置全局小数精度为5位有效数字 >>> Decimal('1')/Decimal('3') Decimal('0.33333') >>> Decimal('10')/Decimal('3') Decimal('3.3333') 3.小数的临时精度 临时精度在with模块中使用。 首先,调用decimal模块的localcontext ()函数返回本地上下文对象 再通过本地上下文对象的prec属性设置临时精度 示例代码如下。 >>> with localcontext() as local: ... local.prec=3 ... Decimal('1')/Decimal('3') ... Decimal('10')/Decimal('3') ... Decimal('0.333') Decimal('3.33') 3.1.5 分数类型 分数是Python 2.6和3.0版本引入的新类型。 分数对象明确地拥有一个分子和分母,分子和分母保持最简。 使用分数可以避免浮点数的不精确性。 分数使用fractions模块中的Fraction()函数来创建,其基本语法格式如下。 x = Fraction(a,b) 其中,a为分子,b为分母,python自动计算为最简分数 示例代码 >>> from fractions import Fraction #从模块导入函数 >>> x=Fraction(2,8) #创建分数 >>> x Fraction(1, 4) >>> x+2 #计算1/4+2 Fraction(9, 4) >>> x-2 #计算1/4-2 Fraction(-7, 4) >>> x*2 #计算1/4*2 Fraction(1, 2) >>> x/2 #计算1/4除以2 Fraction(1, 8) 分数的打印格式和其在交互模式下直接显示的样式有所不同,示例代码如下。 >>> x=Fraction(2,8) >>> x #交互模式直接显示分数 Fraction(1, 4) >>> print(x) #打印分数 1/4 可以使用Fraction.from_float()函数将浮点数转换为分数,示例代码如下。 >>> Fraction.from_float(1.25) Fraction(5, 4) $$

资源预览图

3.1 数字类型(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
1
3.1 数字类型(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
2
3.1 数字类型(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
3
3.1 数字类型(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
4
3.1 数字类型(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
5
3.1 数字类型(课件)-《程序设计基础(Python)》同步教学(人民邮电版)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。