您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > python课件Chapter03-ch
1数值计算庄天红2数据类型•程序存储与操作的信息称为数据.•数据分成不同类型:不同的存储与操作.•为何要分类型?–类型本身代表了某种信息,可为程序利用•编译器/解释器利用类型检查,可以发现程序错误.–不同类型有不同实现效率,可选最合适类型.•数据的类型决定了数据能取什么值,以及能做哪些运算(操作).23数值数据类型•整数类型int–不带小数点–可存储整数的精确值•浮点数类型float–带小数点–计算机只能存储浮点数的近似值!•经验:如果不是确实需要小数,就用int.•type(expr)函数–返回expr的值的类型34数值数据类型-例子•Python有一个特定的数据告诉我们任意值的数据类型是什么:type(3)type'int'type(3.1)type'float'type(3.0)type'float'myint=-32type(myint)type'int'myfloat=32.0type(myfloat)type'float'mystery=myint*myfloattype(mystery)type'float'5数值运算符运算符整数浮点数加加减减乘乘除(结果取整)除乘方乘方余数(商取整时的)余数abs()绝对值绝对值5注意:运算表达式中的优先级整数和浮点数可以混合运算:•运算数都是整数,结果为整数;•至少有一个运算数是浮点数,结果为浮点数.6运算符的优先级78不同数值型数据类型的运算3.0+4.07.03+473.0*4.012.03*41210.0/3.03.333333333333333510/3310%31abs(5)5abs(-3.5)3.5现在我们可以理解fahrenheit=9.0/5.0*celsius+32中的9.0/5.0,而不是9/59数学库•库:包含许多有用的模块.–最常见的是函数定义–一般由系统提供,也可自己开发给别人用.•数学库:包含有用的数学函数.•数学库的引入:importmath•数学库中函数的调用:例如求平方根math.sqrt()10编程例题:quadratic.py#quadratic.py#Aprogramthatcomputestherealrootsofaquadraticequation.#Illustratesuseofthemathlibrary.#Note:Thisprogramcrashesiftheequationhasnorealroots.importmath#Makesthemathlibraryavailable.defmain()a,b,c=input(“Enterthreecoefficients:”)discRoot=math.sqrt(b*b–4*a*c)r1=(-b+discRoot)/(2*a)r2=(-b–discRoot)/(2*a)print“Thesolutionsare:”,r1,r2•用到math.sqrt()函数–用sqrt()求平方根的理由?•库函数一般效率高.1011一次程序运行结果•一次运行结果:ThisprogramfindstherealsolutionstoaquadraticPleaseenterthecoefficients(a,b,c):3,4,-1Thesolutionsare:0.215250437022-1.54858377035•另一次运行结果:(为什么出错)ThisprogramfindstherealsolutionstoaquadraticPleaseenterthecoefficients(a,b,c):1,2,3Traceback(mostrecentcalllast):Filepyshell#26,line1,in-toplevel-main()FileC:\DocumentsandSettings\Terry\MyDocuments\Teaching\W04\CS120\Textbook\code\chapter3\quadratic.py,line14,inmaindiscRoot=math.sqrt(b*b-4*a*c)ValueError:mathdomainerror12数学库中的常用函数pi:常数e:常数esqrt(x):平方根sin(x),cos(x),tan(x),asin(x),acos(x),atan(x):三角函数log(x),log10(x):自然对数与常用对数exp(x):e的x次方ceil(x):x的最小整数floor(x):x的最大整数13一种常用算法模式:累积•最终结果是由逐个中间结果累积起来形成的.–例如6!的计算:先算6*5,再*4,…,再*1而得.•这种累积程序需要一个存放累积结果的变量,累积过程是一个循环:初始化累积变量循环直至得到最终结果计算累积变量的当前累积值•初始化:给累积变量一个合适的初值,以便进入循环后能正确计算.–忘记初始化是一个常见编程错误!14例:阶乘计算程序•具体数(如6)的阶乘fact=1forfin[6,5,4,3,2,1]:fact=fact*f•一般情形n=input(Enteranumber:)fact=1forfinrange(n,1,-1):fact=fact*fprintThefactorialof,n,is,fact•6!=6*5*4*3*2*1=720•list(range(6,1,-1))[6,5,4,3,2]15阶乘程序的几点注解•由于乘法结合律,累积的次序是不重要的.如按下面的循环来累积:forfin[2,3,4,5,6]:forfin[2,4,6,1,3,5]:forfinrange(2,n+1)•range()函数range(n)0,1,2,3,…,n-1range(start,n)start,start+1,…,n-1range(start,n,step)start,start+step,…,n-1•fact也可初始化为n16Range()的例子range(10)[0,1,2,3,4,5,6,7,8,9]range(5,10)[5,6,7,8,9]range(5,10,2)[5,7,9]若要累计2-n:range(2,n+1)若要累计n-1:range(n,1,-1)17累计结果程序:Factorial•factorial程序:#factorial.py#Programtocomputethefactorialofanumber#Illustratesforloopwithanaccumulatordefmain():n=input(Pleaseenterawholenumber:)fact=1forfactorinrange(n,1,-1):fact=fact*factorprintThefactorialof,n,is,factmain()18整数的限制•100!是多少?main()Pleaseenterawholenumber:100Thefactorialof100is93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000•Wow!好大的数呀!19整数的限制•计算机中的数值是现实数值的一种计算机表示,两者可能有不同的行为!–例如:整数集是无穷集,但int是有穷的.•二进制是计算机表示数据的基础–n位二进制只能表示2n个不同值–整数若用32位表示,则int范围为231~2311–试试看:计算2147483647和2147483648•早期版本会导致溢出!–Python2.7解决了溢出问题,直接转换成大整数类型.•小测验:怎样计算2311使其结果不带L?20整数的限制(直接转换成大整数类型)2**3010737418242**31-12147483647L2**312147483648L——————————————2**30-1+2**3021474836472147483647+12147483648L231=230+230231-1=230-1+230Int类型的值最大表示为2147483647x=2147483647type(x)type'int'x=x+1x2147483648Ltype(x)type'long'21大数的表示•长整数类型long:不定长,可扩至任意长度(仅受限于存储器容量).–如5L,1234567890000L–注意:5L和5有完全不同的表示!–小测验:print2l+3结果是多少?–经验:long的运算效率远低于int,因此能用int就不用long.•浮点数很大时用科学表示法:1.234e+12–我试验出的Python最大数:1e+30822类型转换•在混合类型表达式中,Python自动转换:intlongfloat•人工转换:利用int(),long(),float()–小测验:求整数的平均值时用哪个好?avg=sum/countavg=float(sum)/countavg=sum/float(count)avg=float(sum/count)•浮点数取整时如何做到四舍五入?–int(x+0.5)–round()23类型转换float(22/5)4.0int(4.5)4int(3.9)3long(3.9)3Lfloat(int(3.9))3.0int(float(3.9))3int(float(3))324类型转换•round()函数返回一个float类型的值,四舍五入到最接近的整数。round(3.9)4.0round(3)3.0int(round(3.9))4float(round(3.9))4.025end
本文标题:python课件Chapter03-ch
链接地址:https://www.777doc.com/doc-6245496 .html