版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章常用运算数值运算3.1逻辑值检测3.2布尔运算3.3比较运算3.4成员运算3.5成员运算3.6本章小结3.7本章实训3.8本章导读33.1数值运算5可参与数值运算的数值类型主要有三种:3.1.1数值类型6整数不包含小数点的数字包括:十进制的0、正整数和负整数以及其他进制的整数3.1.1数值类型表3.1常见的
4
种进制整数表示进制种类引导符号描述与示例十进制无由字符0到9组成,遇10进1,如:99,156,-45二进制0b
或0B由字符0和1组成,遇2进1,如:0b1010,0B1111八进制0o
或0O由字符0到7组成,遇8进1,如:0o107,0O777十六进制0x
或0X由字符0到9及a、b、c、d、e、f或A、B、C、D、E、F组成,遇16进1,如0xFF,0xff,0X10A7整数特点可以存储计算机内存能够容纳的无限大整数,几乎没有大小限制可精确表示超大数3.1.1数值类型importmath#导入math库#计算100的阶乘,158位整数print(math.factorial(100))933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000008整数子类—布尔值布尔值是两个常量对象False
和True,表示逻辑上的“假值”或“真值”在数值类型的上下文中,分别以整数“0”和“1”为值参与运算。3.1.1数值类型print(5+True)print(True+False)print(True*5+False*2)print(True*2+3)#5+1,输出值为6#1+0,输出值为1#1*5+0*2,输出值为5#输出59浮点数3.1.1数值类型由整数部分、小数点与小数部分组成。小数部分可以没有数字,但小数点必须要有,此时相当于小数部分为0。123.45、23.0、0.78、12.
(12.0)、.15(0.15)十进制表示<a>e<n>,等价于数学中的a×10n
。0.48e-5、2e3、2.53e3(2.53e3=2.53×103=2530.0)科学记数法10浮点数无法保证完全精确3.1.1数值类型十进制0.3二进制0.01001100110011十进制0.299987792968750.3×2=0.6→00.6×2=1.2→10.2×2=0.4→00.4×2=0.8→00.8×2=1.6→10.6×2=1.2→10.2×2=0.4→00.4×2=0.8→00.8×2=1.6→10.6×2=1.2→10.2×2=0.4→00.4×2=0.8→00.8×2=1.6→10.6×2=1.2→11×2-2+1×2-5+1×2-6+1×2-9+1×2-10+1×2-13+1×2-14=0.2999877929687511浮点数范围占8个字节(64位)存储空间能表示的最大数字为1.7976931348623157×10308超过范围时会触发溢出异常(OverflowError)3.1.1数值类型print(pow(809.0,106))#结果约为1.748007496839708e+308,超过浮点数范围print(pow(810.0,106))#触发异常OverflowError:(34,'Resulttoolarge')12浮点数精度默认提供大约17位数字的精度,其余的截断丢弃3.1.1数值类型a=3.1415926535897932384626433832795#超出精度的数据存储时会被丢弃b=31415926535897.932384626433832795c=31415926535897932384626433832795#整数可以无限大小,精确存储print(a)#输出3.141592653589793print(b)#输出31415926535897.934print(c)#输出31415926535897932384626433832795实例说明:地球半径为6371公里,圆周率值取3.141592653589793,计算地球体积。3.1.1数值类型思路:将地球近似看作一个规则球体,利用球体积计算公式近似计算地球体积。注意浮点数超过17位有效数字后面的数字没有精确意义,有浮点数参与计算时,若计算结果超过17位时,不同的计算顺序结果可能略有不同。13实例3.1计算地球体积14实例代码:实例3.1计算地球体积pi=3.141592653589793#圆周率值,17位数字radius=6371000#地球赤道半径,单位为米volume=4/3*pi*radius**3#球体积计算公式print(f'地球体积约为{int(volume)}立方米')#地球体积约1083206916845753597952立方米volume=4*pi*radius**3/3#球体积计算公式,计算顺序不同,结果不同print(f'地球体积约为{int(volume)}立方米')#地球体积约为1083206916845753729024立方米15复数由实数部分和虚数部分构成用a
+
bj,或者complex(a,b)
表示实部a和虚部b都是浮点数用real
和imag
方法分别获取复数的实部和虚部用abs(a+bj)获得复数的模3.1.1数值类型n=3.5+4jprint(n.real)print(n.imag)print(abs(n))#输出实部3.5#输出虚部4.0,注意复数的实部和虚部都是浮点数#输出复数的模5.31507290636732516数值类型转换
数据类型作为函数名,要转换的数字作为函数的参数。int()函数float()函数complex()函数eval()函数3.1.2数值类型转换17int()函数将浮点数x或整数类型字符串转换为一个整数。当x是一个浮点数且没有参数base时,int()函数可以将这个浮点数转换成十进制整数,无参数时返回整数0。3.1.2数值类型转换int([x])#将浮点数x转换成十进制整数
int(x,base=10)#将base指定进制的整型字符print(int())print(int(3.14))print(int(3.99))#浮点数转整数,只保留整数部分,输出:0#浮点数转整数,只保留整数部分,输出:3#浮点数转整数,只保留整数部分,输出:318int()函数给定参数basex必须是一个整型的字符串base为整数的进制,范围0、2-36中的整数,常取2、8、10、16,缺省情况下base=10base
取值为0
时,系统根据字符串前的进制引导符确定该数的进制参数x为浮点数字符串时,系统会返回ValueError异常3.1.2数值类型转换3.1.2数值类型转换19#base为2,将二进制构成的字符串转成十进制整数,输出255print(int('11111111',base=2))#二进制11111111转成十进制整数是255print(int('11111111',2))#base可省,二进制11111111转成十进制print(int('0o107',base=8))#'0o'表示这是八进制的整数,输出71print(int('0x107',base=16))#'0x'表示这是十六进制的整数,输出263print(int('0b1001',base=0))#'0b'表示这是二进制的整数,输出9print(int('0xff',base=0))#'0x'表示这是十六进制的整数,输出255int()函数给定参数base实例说明:每一个接入互联网的设备都有一个IP地址,IPv4标准的IP地址是32位二进制数,每8位可以转为一个十进制数,现在IP地址为:10111101101011001111001110000011,请将其中每8位转为一个十进制整数,再用点连接起来输出。3.1.2数值类型转换20实例3.2IP地址转换21实例代码:实例3.2IP地址转换ip_bin1='10111101'#每8位二进制数切分开ip_bin2='10101100'ip_bin3='11110011'ip_bin4='10000011'#将二进制字符串转换为十进制整数ip_oct1=int(ip_bin1,2)ip_oct2=int(ip_bin2,2)ip_oct3=int(ip_bin3,2)ip_oct4=int(ip_bin4,2)#输出点分十进制IP:189.172.243.131print(f'{ip_oct1}.{ip_oct2}.{ip_oct3}.{ip_oct4}')22float()函数将整数x或浮点数类型字符串x转换为一个浮点数没有参数x时返回0.03.1.2数值类型转换float([x])3.1.2数值类型转换23print(float())#无参数时返回浮点数0.0,输出:0.0print(float(3))#整数转浮点数,增加小数位,输出:3.0print(float('+1.23'))#将字符串'3.14'转为浮点数1.23print(float('-12345\n'))#将字符串开头结尾的空白字符过滤掉,-12345.0print(float(1e-003))#科学计数法转十进制浮点数0.001print(float('+1E6'))#1000000.0float()函数24complex()函数real
和imag
是数字表达式。没有imag参数时,复数虚数部分为0。real和imag参数都没有时,返回0j。只有real参数时,real可以是能转为复数的字符串,但其中的“+”“-”前后不能存在空白字符。3.1.2数值类型转换complex([real[,imag]])25complex()函数3.1.2数值类型转换print(complex())#无参数,输出:0jprint(complex(3))#只有一个数值参数,虚部为0,输出:(3+0j)print(complex(3,4.5))#两个数值参数,输出:(3+4.5j)print(complex('+3'))#字符串转复数,输出:(3+0j)print(complex('1+2j'))#字符串转复数,输出:(1+2j)26eval()函数将数值型的字符串对象expression转换为其对应的数值,也可以将表达式字符串转为可计算的表达式。3.1.2数值类型转换eval(expression)27eval()函数3.1.2数值类型转换a=eval('100')#字符串'100'被转换为数值100print(a*3)#100*3=300;a=eval('100.0')#字符串'100.0'被转换为数值100.0print(a*3)#100.0*3=300.0print(eval('3+4'))#返回表达式求值结果,7print(eval('3,4'))#返回元素为数值的元组,(3,4)28eval()函数实现同步赋值
eval()函数可以把用逗号分隔的多个数值型数据的字符串转换为一个元素为数值类型的元组。3.1.2数值类型转换width,height=eval(input())#输入用逗号分隔的长和宽,两个数值分别赋值实例说明:矩形的面积等于其长与宽的乘积,用户输入长和宽的值,按输入要求编程计算矩形的面积。3.1.2数值类型转换29思路:根据用户输入数据的形式和要求结果的数据类型,可以分为4种情况:输入两个正整数,输出结果为整数。输入两个浮点数,输出结果为浮点数。输出的数据类型与输入的数据类型保持一致。在一行内输入用逗号分隔的两个数,分别表示长与宽,计算矩形面积。实例3.3计算矩形面积30实例代码:输入两个正整数,输出结果为整数。实例3.3计算矩形面积#输入整数表示的矩形的长和宽,计算并输出矩形的面积width=int(input())#用int()函数将输入转成整数,例如输入:3height=int(input())#用int()函数将输入转成整数,例如输入:4area=width*height#利用面积公式计算面积print(f'面积为{area}')#输出:面积为1231实例代码:输入两个浮点数,输出结果为浮点数。实例3.3计算矩形面积#输入浮点数表示的矩形的长和宽,计算并输出矩形的面积width=float(input())#用float()函数将输入转成浮点数,例如输入:'3.6'转为3.6height=float(input())#用float()函数将输入转成浮点数,例如输入:'4.8'转为4.8area=width*height#利用面积公式计算面积print(f'面积为{area}')#输出:面积为17.2832实例代码:输出的数据类型与输入的数据类型保持一致。实例3.3计算矩形面积#输入矩形的长和宽,计算并输出矩形的面积,结果与输入的类型一致width=eval(input())#用eval()函数将输入转成数值类型,例如输入:3.6height=eval(input())#用eval()函数将输入转成数值类型,例如输入:4.8area=width*height#利用面积公式计算面积print(f'面积为{area}')#输出:面积为17.28#若输入是'3'和'4'则会转为整数3和4,输出:面积为1233实例代码:在一行内输入用逗号分隔的两个数,分别表示长与宽,计算矩形面积。实例3.3计算矩形面积#在一行内输入矩形的长和宽,计算并输出矩形的周长和面积#输入:3,4#边长为3和4的矩形的周长为14,面积为12width,height=eval(input())#输入用逗号分隔的长和宽perimeter=2*(width+height)#计算周长area=width*height#计算面积print(f'边长为{width}和{height}的矩形的周长为{perimeter},面积为{area}')34
数学运算是用运算符将对象连接起来构成表达式来实现。3.1.3数学运算表3.2数值运算操作符(表中a=8
b=5)优先级运算函数运算符符号运算实例解释低加add(a,b)+a+bprint(a+b)两个数加和,13减sub(a,b)-a-bprint(a-b)两个数相减,3中乘mul(a,b)*a*bprint(a*b)两个数相乘,40除truediv(a,b)/a/bprint(a/b)两个数相除,1.6整除floordiv(a,b)//a//bprint(a//b)两个数整除,返回整数商1取模mod(a,b)%a%bprint(a%b)模运算,返回整除的余数3高幂pow(a,b)**a**bprint(a**b)幂运算,3276835精确除法(/):结果为浮点数3.1.3数学运算print(12/4)print(-10/4)整除(//):结果为整数,向下取整算法print(10//4)print(10.0//4)print(-10//4)#精确除的结果永远为浮点数,3.0#-2.5#取负无穷大方向最接近2.5的那个整数2#2.0,结果为浮点类型的整数#取负无穷大方向最接近-2.5的那个整数-336模运算(%):两个数整除的余数
模运算数学定义如下:操作数a和b可以是整数,也可以是浮点数。模非零时,其符号与操作数b相同。3.1.3数学运算print(-11%4)print(-11%-4)print(11%4)print(11%-4)print(3.5%-2)print(4%-2)r=a-
(a//b)
*b#输出:1#输出:-3#输出:3#输出:-1#输出:-0.5#输出:037幂运算(**):两个星号表示幂运算a**b幂运算优先级比乘、除、模运算和取反高适当加括号,提高程序的可读性和可维护性
3.1.3数学运算print(-(3**2))print((-3)**2)#先进行幂运算,再取反,结果为-9#3先取反,再进行幂运算,结果为9实例说明:一元二次方程可以用求根公式进行求解。现有一元二次方程:ax2+bx+c=0,当a,b,c的值分别为5,8,3时,编程求其实根。3.1.3数学运算38思路:判别式b2-4ac=8*8-4*5*3=4>0,方程有两个不相等的实数解。根据正负号将求根公式
拆分为两个程序中的表达式: (-b+(b*b-4*a*c)**(1/2))/(2*a) (-b-(b*b-4*a*c)**(1/2))/(2*a)实例3.4一元二次方程求解39实例代码:实例3.4一元二次方程求解a,b,c=5,8,3#同步赋值,5,8,3分别赋值给a,b,cx1=(-b+(b*b-4*a*c)**(1/2))/(2*a)#分母的括号不能省略x2=(-b-(b**2-4*a*c)**0.5)/2/a#用0.5代替1/2,用两个除法代替分母中的乘法print(x1,x2)#在一行内输出-0.6-1.0,输出结果用空格分隔实例说明:斐波那契数列的通项公式为,利用这个公式可以计算数列中特定的项,输入一个整数n,计算数列第n项的值并取整就是该项的值。3.1.3数学运算40实例3.5斐波那契数列41实例代码:实例3.5斐波那契数列n=int(input())#将输入的整数字符串转为整数fibonacci=1/5**0.5*(((1+5**0.5)/2)**n-((1-5**0.5)/2)**n)print(int(fibonacci))#输入12时输出144,输入48时输出4807526976优化代码:n=int(input())#将输入的整数字符串转为整数sqrt_5=5**0.5phi=(1+sqrt_5)/2psi=(1-sqrt_5)/2fibonacci=int((phi**n-psi**n)/sqrt_5)print(fibonacci)42Python内置了数学运算相关的函数可以直接使用。3.1.4常用数学运算函数表3.3数学运算相关函数①序号函数描述1int(x=0)int(x,base=10)返回一个基于数字或字符串x构造的整数对象,无参数时返回0,对于浮点数,返回整数部分2float(x=0.0)返回从数字或字符串x生成的浮点数3complex(real=0,imag=0)complex(string)返回值为real+imag*1j
的复数,或将字符串或数字转换为复数。如果两个实参都省略,则返回0j。4abs(x)返回参数x的绝对值,如果参数是一个复数,则返回它的模。3.1.4常用数学运算函数43表3.3数学运算相关函数②序号函数描述5pow(base,exp,mod=None)返回base的exp
次幂;如果mod
存在,则返回base的exp次幂对mod取余(比pow(base,exp)%mod更高效)6divmod(a,b)以两个(非复数)数字为参数作整数除法,以元组形式返回商和余数7sum(iterable,/,start=0)自左向右对iterable的项求和再与start加和,返回总和,’/’表示后面的start可以是位置参数也可以是关键字参数8round(number,ndigits=None)返回number舍入到小数点后ndigits位精度的值。ndigits省略或为None时,返回最接近输入值的整数3.1.4常用数学运算函数44表3.3数学运算相关函数③序号函数描述9max(iterable,*,key=None)max(iterable,*,default,key=None)max(arg1,arg2,*args,key=None)返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。key可用于指定比较大小的依据。
10min(iterable,*,
key=None)min(iterable,*,default,key=None)min(arg1,arg2,*args,key=None)返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。key可用于指定比较大小的依据。
3.1.4常用数学运算函数45表3.3数学运算相关函数④序号函数描述11bin(x)将整数转变为以“0b”为前缀的二进制字符串12oct(x)将一个整数转变为以“0o”为前缀的八进制字符串13hex(x)将整数转换为以“0x”为前缀的小写十六进制字符串14chr(i)返回Unicode码值为整数i的字符的字符串格式。例如,chr(97)返回字符串'a',是ord()的逆函数。15ord(c)对表示单个Unicode字符的字符串,返回代表它Unicode码值的整数。例如ord('a')返回整数97,是chr()的逆函数。46abs(x):返回x的绝对值。x可以是整数或浮点数x为复数时返回复数的模3.1.4常用数学运算函数print(abs(-3))#返回整数绝对值,输出3print(abs(-3.45))#返回实数绝对值,输出3.45print(abs(3+4j))#计算复数的模,输出5.047pow(x,y[,z]):返回x的y次幂,当z存在时,返回x的y次幂计算结果再对z取模。3.1.4常用数学运算函数print(pow(2,3))#计算23,输出8print(pow(1999,1998,1997))#1999**1998%1997输出448sum(iterable,/,start=0):从start开始自左向右对iterable的项求和并返回总计值。iterable的项通常为数字start值不允许为字符串3.1.4常用数学运算函数print(sum([1999,1998,1997]))#计算列表中的元素的和5994print(sum(range(101)))#计算从0到100之间整数的和5050print(sum(range(101),start=5000))#计算从0到100之间整数的和,加到5000上输出1005049round(number[,n]):浮点数number保留n位小数。n为整型,缺省值是0,省略参数n时,返回最接近输入数字的整数n值必须是整型数字,当n为浮点数时,会触发TypeError3.1.4常用数学运算函数末位取舍算法:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。3.1.4常用数学运算函数50print(round(3.1415))#3,返回最接近输入数字的整数print(round(-3.1415))#-3,返回最接近输入数字的整数print(round(3.8415))#4,返回最接近输入数字的整数print(round(3.1250001,2))#3.13五后非零就进一print(round(3.125,2))#3.12五前为偶应舍去print(round(3.115,2))#3.12五前为奇要进一513.1.4常用数学运算函数#0.1425计算机中存0.14250000000000002print(round(3.1425,3))#期望输出3.142,实际输出3.143print(round(2.675,2))#期望输出2.68,实际输出2.67绝大多数浮点数无法精确转为二进制,会导致部分数字取舍与期望不符。当n超过小数位数时,返回该数的最短表示。print(round(3.0000,2))#期望输出3.00,实际输出其浮点数的最短表示3.0print(round(3.14,4))#期望输出3.1400,实际输出3.1452max(arg1,arg2,…)和max(iterable):返回最大值。arg1,arg2,…从多个参数返回最大值iterable从可迭代对象中返回最大值有多个最大值时返回第一个3.1.4常用数学运算函数print(max(80,100,1000))#80,100,1000这三个整数对象中1000最大print(max([49,25,88]))#列表[49,25,88]是可迭代对象,最大值是88print(max('Hello'))#字符串'Hello'是可迭代对象,值最大的字符是’o’print(max('80','100','9'))#'80','100','9'三个字符串中最大的是'9’print(max('80','100','9',key=len))#'80','100','9'三个字符串中最长的是'100’print(max('80','100','9',key=int))#'80','100','9'三个字符串对应整数最大的是'100'53min(arg1,arg2,…)和min(iterable):返回最小值。arg1,arg2,…从多个参数返回最小值iterable从可迭代对象中返回最小值有多个最小值时返回第一个3.1.4常用数学运算函数print(min(80,100,1000))#80,100,1000这三个整数对象中80最小print(min([49,25,88]))#列表[49,25,88]是可迭代对象,最小值是25实例说明:用户输入两个数,编程实现简单的加、减、乘、除四则运算。数学意义上的加、减、乘、除和整除分别为符号“+、-、*、/、//”表示。3.1.4常用数学运算函数54思路:根据用户输入数据的形式和要求结果的数据类型,可以分为4种情况:输入的数值是整数。输入的数值是浮点数。不确定输入类型。结果保留小数点后n位。实例3.6数学四则运算55实例代码:输入数值是整数,加、减、乘和整除计算结果均为整数,除法运算结果为浮点数。实例3.6数学四则运算#输入的整数字符串转为整数a=int(input())#输入10b=int(input())#输入4#分5行输出和、差、积、商和整数商print(a+b)#输出14print(a-b)#输出6print(a*b)#输出40print(a/b)#输出2.5print(a//b)#输出2,整除,只保留商的整数部分56实例代码:用f-string方法对输出进行格式化实例3.6数学四则运算#输入的整数字符串转为整数a=int(input())#输入10b=int(input())#输入4#带格式四则运算,输出时保留引号中的空格等全部字符print(f'{a}+{b}={a+b}')#输出10+4=14print(f'{a}-{b}={a-b}')#输出10-4=6print(f'{a}*{b}={a*b}')#输出10*4=40print(f'{a}/{b}={a/b}')#输出10/4=2.5print(f'{a}//{b}={a//b}')#输出10//4=2,整除,只保留商的整数部分57实例代码:输入数值是浮点数,运算结果为浮点数。实例3.6数学四则运算#输入的整数或浮点数字符串转浮点数a=float(input())#输入13.2,转为浮点数,a值为13.2b=float(input())#输入4,转为浮点数,b值为4.0#带格式四则运算,输出时保留引号中的空格等全部字符print(f'{a}+{b}={a+b}')#输出13.2+4.0=17.2print(f'{a}-{b}={a-b}')#输出13.2-4.0=9.2print(f'{a}*{b}={a*b}')#输出13.2*4.0=52.8print(f'{a}/{b}={a/b}')#输出13.2/4.0=3.3print(f'{a}//{b}={a//b}')#输出13.2//4.0=3.058实例代码:不确定输入类型,若输入是整数,转为整数,若输入为浮点数,则转为浮点数。实例3.6数学四则运算#输入的整数或浮点数字符串转浮点数a=eval(input())#输入浮点数字符串'13.2',转为浮点数,a值为13.2b=eval(input())#输入整数字符串'4',转为整数,b值为4#带格式四则运算,输出时保留引号中的空格等全部字符print(f'{a}+{b}={a+b}')#输出13.2+4=17.2print(f'{a}-{b}={a-b}')#输出13.2-4=9.2print(f'{a}*{b}={a*b}')#输出13.2*4=52.8print(f'{a}/{b}={a/b}')#输出13.2/4=3.3print(f'{a}//{b}={a//b}')#输出13.2//4=3.059实例代码:结果保留小数点后n位。round(num,n),近似保留小数点后n位,,不足n位按实际有效数字输出。f-string的大括号中用“:.nf”,精确控制输出保留小数点后n位,不足n位补0。实例3.6数学四则运算#输入的整数或浮点数字符串转浮点数a=float(input())#输入13.2b=float(input())#输入4,转为浮点数,b值为4.0#精确保留小数点后n位,不足n位按实际有效数字输出print(f'{a}/{b}={round(a/b,2)}')#输出13.2/4.0=3.3#精确保留小数点后n位,不足n位补0print(f'{a}/{b}={a/b:.2f}')#输出13.2/4.0=3.3060Python中的math模块,提供了乘方、开方、对数运算等函数。Python安装好之后,导入模块即可使用。模块导入第一种方法:导入模块名程序可以调用模块中的所有函数调用模块中函数时,需要在函数名前加模块名3.1.5math模块及其应用import
<模块名>3.1.5math模块及其应用61importmath#导入math模块,引用时函数名前加math.radius=5area=math.pi*radius**2#用math.pi的值,计算半径为5的圆面积print(math.pi)#输出math模块中的pi值3.141592653589793print(area)#输出圆的面积78.5398163397448362模块导入第二种方法:直接导入模块中的函数同时引用多个函数,各函数间用逗号分隔用通配符“*”导入该模块中的全部函数3.1.5math模块及其应用from<模块名>import<函数名,函数名,...,函数名>from<库名>
import*#*是通配符,代表全部函数63模块导入第二种方法:直接导入模块中的函数调用该模块的函数时不需要指明函数所在模块库的名称3.1.5math模块及其应用frommathimportpi,sqrt#导入math中的常数pi和sqrt()函数#frommathimport*#导入math中所有函数,引用时直接引用函数名radius=5area=pi*radius**2#计算半径为5的圆的面积print(pi)#输出math中pi值3.141592653589793print(area)#输出圆的面积78.53981633974483print(sqrt(5))#输出5的平方根2.23606797749979程序较简单时,只导入一个模块或所引用的函数仅在一个库中存在时,两种方法都可以使用。程序较复杂、引用多个模块时,可能在多个模块中存在同名函数,而这些同名函数功能可能不同。建议使用第一种方法,明确指出所引用的函数来自于哪个模块,以免出现错误。64math模块中仅支持整数和浮点数,不支持复数运算。3.1.5math模块及其应用数论与表示函数26个幂和对数函数10个三角函数9个双曲函数6个角度转换函数2个特殊函数4个常数5个math---数学函数—Python3.12.5文档65math.factorial(x):返回x的阶乘。x为非负整数,x为负数或浮点数时返回错误3.1.5math模块及其应用importmathprint(math.factorial(6))#值为1*2*3*4*5*6,输出72066math.gcd(*integers):返回给定整数参数的最大公约数。math.lcm(*integers):返回给定整数参数的最小公倍数。3.1.5math模块及其应用importmathprint(math.gcd(88,44,22))#输出22print(math.gcd(0,0))#输出0print(math.lcm(44,22,5))#输出220print(math.lcm())#输出13.9以后的版本支持任意数量参数,之前的版本只支持两个参数。67math.floor(x):返回不大于x的最大整数。math.ceil(x):返回不小于x的最小整数。3.1.5math模块及其应用importmathprint(math.floor(9.99))#向下取整,输出9print(math.ceil(9.01))#向上取整,输出1068math.exp(x):返回e
的x次幂。math.pow(x,y):返回x
的y次幂,结果为浮点数,pow(1.0,x)和pow(x,0.0)总返回1.0。math.sqrt(x):返回非负整数x的平方根。math.isqrt(x):返回非负整数x的整数平方根,即对x的实际平方根向下取整。3.1.5math模块及其应用importmathprint(math.exp(2))#输出e的2次方,7.38905609893065print(math.pow(2,3))#输出2的3次方8.0print(math.sqrt(100))#输出100的正数平方根10.0print(math.isqrt(99))#输出99的整数平方根969math.cos(x):返回x的余弦函数,x为弧度。math.sin(x):返回x的正弦函数,x为弧度。3.1.5math模块及其应用实例说明:在两行中分别输入一个浮点数a和b,根据下面公式计算x的值,输出结果最多保留2位小数:3.1.5math模块及其应用70思路:公式中存在正余弦公式,可以用math库中的对应函数进行计算。公式中三角函数括号中的数字是角度值,而math库中函数的参数要求是弧度,所以计算时要先将角度值转为弧度值,60度的弧度值为math.pi/3。输出结果最多保留2位小数,用函数round(x,2)实现。实例3.7三角函数公式求值71实例代码:实例3.7三角函数公式求值importmath#导入数学模块a=float(input())#输入一个浮点数ab=float(input())#输入一个浮点数bx=(-b+math.sqrt(2*a*math.sin(math.pi/3)*math.cos(math.pi/3)))/(2*a)#math.sqrt()表示开平方,math.pi表示圆周率,math.cos()表示余弦函数,math.sin()表示正弦函数print(round(x,2))#round()函数用于四舍五入,round(x,2)表示保留两位小数实例说明:1706年,英国人约翰·梅钦(JohnMachin)发明了一个用于计算圆周率值的公式:3.1.5math模块及其应用72思路:根据梅钦公式计算圆周率可以利用math库中的函数来完成注意:数学上的arctan函数在math库中的表示为math.atan(x)参数是弧度实例3.8梅钦法计算圆周率73实例代码:实例3.8梅钦法计算圆周率importmath#导入math模块pi=4*(4*math.atan(1/5)-math.atan(1/239))#计算pi的值print(pi)#输出pi的值3.1415926535897936实例说明:如图3.1所示,AB是圆的一条弦,ABC形成一个弓形,在两行中分别输入AB和CD的长度,计算弓形的面积,结果保留小数点后2位有效数字。3.1.5math模块及其应用74图3.1弓形面积示意图实例3.9计算弓形的面积实例3.9计算弓形的面积75思路:从图中可知:AD=AB/2OA2=AD2+OD2OD=OC–CD=OA–CD代入后可得OA=(AD2+CD2)/(2*CD)sin(∠AOB/2)=AD/OA圆心角:∠AOB=2*arcsin(AD/OA)扇形AOB的面积为:area_of_sector=∠AOB/(2π)*π*OA2三角形△AOBarea_of_triangle=1/2*OA2*sin(∠AOB)弓形面积为扇形AOB面积减去三角形△AOB面积之差:area_of_arch=area_of_sector-area_of_triangle因为涉及到三角函数和反三角函数,很难通过笔算完成,但可以利用python编程,借助math库中的math.sin(AOB)和math.arcsin(AD/OA)对其进行求值。图3.1弓形面积示意图76实例代码:实例3.9计算弓形的面积importmathab=float(input())#输入表示弦长度的浮点数,如26.4cd=float(input())#输入弓高度的浮点数,如8.7ad=ab/2#计算半弦长oa=(ad**2+cd**2)/(2*cd)#计算半径aob=2*math.asin(ad/oa)#计算圆心角,注意反正弦函数的写法area_of_sector=aob/(math.pi*2)*math.pi*oa**2#拱形所在扇形的面积area_of_triangle=1/2*oa*oa*math.sin(aob)#三角形面积area_of_arch=area_of_sector-area_of_triangle#拱形面积print(f'{area_of_arch:.2f}')#输出拱形面积,保留两位小数165.703.2逻辑值检测78任何对象都可以进行逻辑值的检测,用于在if或while语句中作为条件或是作为下文所述布尔运算的操作数。一般对象在默认情况下均被视为真值True若对象被调用时其所属类定义了bool()方法且返回False或是定义了len()方法且返回零,逻辑值为False几种情形的对象逻辑值均为False:定义常量为None
或者False任何数值类型的0空序列和多项集对象3.2逻辑值检测3.2逻辑值检测79print(bool(0))print(bool(0.0))print(bool(''))print(bool(()))print(bool([]))print(bool({}))print(bool(None))print(bool(False))实例代码:#整数0,False#浮点数0.0,False#空字符串,False#空元组,False#空列表,False#空字典,False#None类型,False#False3.3布尔运算81布尔运算也称为逻辑运算符,包括“and(与)”、“or(或)”、“not(非)”运算。3.3布尔运算表3.11布尔运算符优先级运算符表达式功能描述低orxory首先对表达式x求值,如果值为True则返回x的值,否则对表达式y求值并返回其结果值。中andxandy首先对表达式x求值,如果值为False则返回x的值,否则对表达式y求值并返回其结果值。高notnotx表达式x
值为False时返回True,否则返回False。“and”和“or”都是短路运算符,只有在第一个参数为假值时才会对第二个参数求值。当布尔运算符左侧的表达式已经可以决定布尔运算的结果时,该语句之后的所有代码都不会被执行。3.3布尔运算82print(10and'hello')print(10or'hello')print(10or'')print(10and'')实例代码:#输出hello,非空字符串,布尔值为True#输出整数10,非0,布尔值为True#输出整数10,非0,布尔值为True#输出'',空字符串,布尔值为False实例说明:输入一个年份,判定该年是否是闰年。3.3布尔运算83思路:普通闰年:公历年份是4的倍数,且不是100的倍数的,如2004年、2020年等就是闰年,可以用以下布尔运算表达式表示:year%4==0andyear%100!=0世纪闰年:公历年份是整百数的,必须是400的倍数,如1900年不是闰年,2000年是闰年,可用以下布尔运算表达式表示:year%400==0满足这两个条件之一的年份都是闰年。实例3.10计算闰年实例3.10计算闰年84(year%4==0andyear%100!=0)oryear%400==0VSyear%400==0or(year%4==0andyear%100!=0)哪个更好?都可以?第一个表达式,当年份不能被4整除时,触发短路,不再判定是否能被100和400整除,在本题中可减少约25%的运算次数。实例3.10计算闰年85year=int(input())ifyear%4==0andyear%100!=0oryear%400==0:
print(f'{year}年是闰年')else:
print(f'{year}年不是闰年')(year%4==0andyear%100!=0)
oryear%400==0在同一个表达式中同时出现and和or时,建议用加小括号的方法明确顺序。实例代码:实例说明:用户输入自己的年龄并输出“你的年龄是**”;若用户在输入年龄时不输入任何字符,直接按回车键,则输出“你的年龄是保密”。3.3布尔运算86思路:分支语句布尔运算结果赋值实例3.11输出年龄实例3.11输出年龄87age=input()#输入年龄,input()返回的是str类型ifage=='':#如果输入的是空字符串,执行下行缩进中的语句
print(f'你的年龄是保密')else:#否则执行下行缩进中的语句
print(f'你的年龄是{age}')实例代码:分支语句实现实例3.11输出年龄88age=input()or'保密'#有输入时age得到输入的年龄#直接回车时,input()接收到空字符串,空字符串为False,布尔运算结果是右侧的'保密’print(f'你的年龄是{age}')实例代码:布尔运算结果赋值3.4比较运算90比较运算符用于比较两个值,并确定他们之间的关系,结果是逻辑值:True
或False。3.4比较运算表3.12比较运算表比较运算符优先级相同,比布尔运算优先级高。比较运算符可以连续使用。类型符号语义一致性比较==、!=等于、不等于次序比较<、<=>、>=严格小于、小于或等于严格大于、大于或等于标识号比较is
isnot当且仅当x和y是同一对象时xisy为真,即要求x和y的类型、值和id均相同时为True。实例说明:输入一个表示百分制成绩的整数,成绩不小于60分时为及格,根据输入输出考试是否及格。3.4比较运算91思路:输入的合法成绩应该是大于0且小于100的整数,用户输入的未必是合法的成绩。及格成绩的判定条件应该是“60<=score<=100”表示“0<=scoreandscore<=100”。不及格的成绩的判定条件应该是“if0<=score<60”。实例3.12判定成绩是否合格实例3.12判定成绩是否合格92score=int(input())#输入一个表示考试成绩的整数if60<=score<=100:#等价于if0<=scoreandscore<=100:
print('考试及格')if0<=scoreandscore<60:#等价于if0<=score<60:
print('考试不及格')实例代码:实例说明:输入三个数a,b,c,判断能否以它们为三个边长构成三角形。若能构成三角形则输出Yes,否则输出No。3.4比较运算93实例3.13判断是否构成三角形实例3.13判断是否构成三角形94a=float(input())b=float(input())c=float(input())#三角形判定条件:边都为正数,任意两边之和大于第三边,有一条不满足就不能构成三角形ifa<=0orb<=0orc<=0or(a+b)<=cor(a+c)<=bor(b+c)<=a:
print('No')else:#其他情况都可以构成三角形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于建设美丽调研报告
- 证券投资学讲义第二版上海财经大学霍
- 甘肃省科学技术厅统计中心
- 责任与角色同在复习
- 组织教学环的两个要点
- 羽毛球基本技术课件
- 事业单位2026医疗岗面试高频题含答案
- 计算机岗2026事业编结构化面试自测卷配套答题思路
- 农林岗2026面试模拟练习习题汇编含答案解析
- 血脂异常调脂治疗举例分析及其合理用药
- 住家照顾高龄老人保姆合同范本
- 教师职业发展规划书范文
- CB-Z-94-1968黑色金属磷化技术条件
- TCVMA 65-2021 犬猫临床尿液检查技术规范
- DZ∕T 0387-2021 陆地油气资源战略选区调查与评价技术要求(正式版)
- 学校国庆节后收心主题班会课件1
- 电缆配电线路的运行与维护-电缆线路故障查找
- (16)-5.4 总供给曲线的含义与推导
- 二年级下册数学高斯课件加减法竖式谜全国通用
- 培训教育签到表
- (西藏)小学一考三评信息技术考试参考题库(含答案)
评论
0/150
提交评论