Python第二次课20150319_第1页
Python第二次课20150319_第2页
Python第二次课20150319_第3页
Python第二次课20150319_第4页
Python第二次课20150319_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、12008.0522008.053本次课主要内容4种数字类型的概念和使用种数字类型的概念和使用一各类型数字在计算机中的表示方法各类型数字在计算机中的表示方法二Python数学库和随机库的使用数学库和随机库的使用三循环结构简介循环结构简介五分支结构简介分支结构简介四42008.05数字类型数字类型v 当用户向计算机输入当用户向计算机输入123123,计算机需要明确的知道这个输入是可以进行,计算机需要明确的知道这个输入是可以进行数学计算的数字数学计算的数字123123,还是类似人名的字符串,还是类似人名的字符串“123123”,这两者在计算,这两者在计算机内部采用不一样的存储方式。这个需求产生了机

2、内部采用不一样的存储方式。这个需求产生了“数据类型数据类型”的概念的概念v 数据类型表示信息在计算机中的不同存储方式,进而决定了处理过程数据类型表示信息在计算机中的不同存储方式,进而决定了处理过程中信息的类型和功能。中信息的类型和功能。PythonPython语言中,语言中,123123表示一个数字,表示一个数字,“123123”表表示一个字符串。其中,表示数字的数据类型也叫数字类型,本节主要示一个字符串。其中,表示数字的数据类型也叫数字类型,本节主要介绍数字类型介绍数字类型数字类型数字类型v PythonPython的的4 4种数字类型种数字类型n整数:长度不超过计算机字长的整数:长度不超过

3、计算机字长的“普通普通”整数。对于整数。对于6464位字长的位字长的计算机,整数的取值范围是计算机,整数的取值范围是-2-26363,2,26363-1-1 例:例:1010, 991010, 99,-217-217,0 x9a0 x9a,-0 x89-0 x89 整数可以表示为十进制,也可表示为十六进制等其他进制方式。整数可以表示为十进制,也可表示为十六进制等其他进制方式。 0 x0 x开头的数字表示十六进制数字开头的数字表示十六进制数字n长整数:超过整数类型表示范围的整数,数字后面加长整数:超过整数类型表示范围的整数,数字后面加”L”L”或或”l”l”,为免混淆,建议使用,为免混淆,建议使

4、用“L L” 例:例:1010L, -217L, 0 x9a, 0 x1234567890abcdeedL1010L, -217L, 0 x9a, 0 x1234567890abcdeedL数字类型数字类型v PythonPython的的4 4种数字类型种数字类型n浮点实数:带有小数的数值,十进制或科学计数法表示浮点实数:带有小数的数值,十进制或科学计数法表示 例:例:0.0, -77., -2.17, 96e4, 4.3e-3, 9.6E50.0, -77., -2.17, 96e4, 4.3e-3, 9.6E5 科学计数法使用字母科学计数法使用字母“e e”或者或者“E E”作为幂的符号,

5、以作为幂的符号,以1010为基数。科学计为基数。科学计数法含义如下:数法含义如下: e = a e = a * * 10 10b b 4.3e-3 4.3e-3表示表示0.00430.0043n复数:复数:a+bja+bj,a a是实数部分,是实数部分,b b是虚数部分,是虚数部分,a a、b b皆是浮点类型,皆是浮点类型,叙述部分通过后缀叙述部分通过后缀“J J”或或“j j”来表示来表示 例:例:12.3+4j, -5.6+7j, 1.23e-4+5.6e+89j12.3+4j, -5.6+7j, 1.23e-4+5.6e+89j数字类型数字类型v 对整数和浮点数处理方法中应注意对整数和浮

6、点数处理方法中应注意n0.00.0与与0 0值相同,但数据结构不同值相同,但数据结构不同n整数与整数运算后,结果为整数;长整数与整数运算后,为长整整数与整数运算后,结果为整数;长整数与整数运算后,为长整数;浮点数与其他类型运算后,为浮点数数;浮点数与其他类型运算后,为浮点数, ,例如例如10/3=310/3=310L/3=3L10L/3=3L10.0/3=3.33310.0/3=3.333n浮点类型不能采用十六进制方式表示浮点类型不能采用十六进制方式表示v type()type()函数可以返回用户提供的输入函数可以返回用户提供的输入的类型的类型例如例如 type(10)type(10) 数字类

7、型数字类型 type(10L)type(10L) type(10.0) type(10.0) type(10+10j) type(10+10j) n实际上,实际上,type()type()函数可以返回任何函数可以返回任何PythonPython定义的数据类型,而定义的数据类型,而不局限于数字类型不局限于数字类型数字类型的转换数字类型的转换v 数字类型之间的转换规则数字类型之间的转换规则nPythonPython提供了一些数字转换函数:提供了一些数字转换函数:int()int()、long()long()、float()float()、complex()complex()n整数、长整数和浮点数之

8、间可自由转换,浮点数转换为其他两种整数、长整数和浮点数之间可自由转换,浮点数转换为其他两种类型时,小数部分会被舍弃类型时,小数部分会被舍弃 long(10.4) long(10.4) 10L 10Lint(10.999)int(10.999)1010数字类型的转换数字类型的转换n函数函数complex()complex()可将其他类型转为复数,但复数不可转为其他类型,可将其他类型转为复数,但复数不可转为其他类型,例如例如 complex(10.999) complex(10.999) (10.999+0j) (10.999+0j) int(10+10j) # int(10+10j) #将会报错

9、将会报错 Traceback (most recent call last): Traceback (most recent call last): File , line 1, in File , line 1, in int(10+10j) int(10+10j) TypeError: cant convert complex to int TypeError: cant convert complex to int数字类型转换在进行数学运算的时候十分重要,当需要包含小数数字类型转换在进行数学运算的时候十分重要,当需要包含小数的除法结果时,要用浮点类型而不是整数类型的除法结果时,要用浮点类

10、型而不是整数类型数字类型的操作数字类型的操作v PythonPython中数字类型的操作中数字类型的操作操作操作操作含操作含义义x+yx与y之和x-yx与y之差x*yx与y之积x/yx与y之商x/y不大于x与y之商的最大整数x%yx对y的模运算abs(x)x的绝对值divmod(x,y)(x/y,x%y)pow(x,y)x的y次幂x*yx的y次幂数字类型的操作数字类型的操作v数字类型操作举例数字类型操作举例8.0/38.0/32.66666662.66666668.0/38.0/32.02.0divmod(8.0,3)divmod(8.0,3)(2.0,2.0)(2.0,2.0)abs(-8.

11、63)abs(-8.63)8.638.63pow(8,2)pow(8,2)6464示例程序示例程序1 1:的计算的计算v 蒙塔卡罗蒙塔卡罗(Monte Carlo)(Monte Carlo)方法,又称随机抽样或统计试验方法。当所方法,又称随机抽样或统计试验方法。当所要求解的问题是某种事件出现的概率,或某随机变量的期望值时,可要求解的问题是某种事件出现的概率,或某随机变量的期望值时,可以通过某种以通过某种“试验试验”的方法求解。的方法求解。v 应用蒙瑞特卡罗方法求解应用蒙瑞特卡罗方法求解的步骤:随即向单位正方形和圆结构抛洒的步骤:随即向单位正方形和圆结构抛洒大量点,判断每个点在圆内或者圆外,圆内

12、点数除以圆外点数就是大量点,判断每个点在圆内或者圆外,圆内点数除以圆外点数就是值。随机点数量越大,得到的值。随机点数量越大,得到的值越精确。值越精确。v 问题的问题的IPOIPO表示如下:表示如下:n输入:抛点数输入:抛点数n处理:计算每个点到圆心的距离,统计在圆内点的数量处理:计算每个点到圆心的距离,统计在圆内点的数量n输出:输出:值值示例程序示例程序1 1:的计算的计算示例程序示例程序1 1:的计算的计算v 采用蒙塔卡罗方法求解采用蒙塔卡罗方法求解值的值的PythonPython程序如下:程序如下:#m_pi.pyfrom random import randomfrom math imp

13、ort sqrtfrom time import clockDARTS = 1000hits = 0.0clock()for I in range(1,DARTS): x,y = random(),random() dist = sqrt(x * 2 + y * 2) if dist m_pi.pym_pi.pypi is 3.208pi is 3.208running time is 0.006srunning time is 0.006sv 由于由于DARTSDARTS点数量较少,点数量较少,的值不是很精确。通过增加的值不是很精确。通过增加DARTSDARTS数量继续数量继续试验,在试验,

14、在2 23030数量级上,数量级上,的值就相对准确了。进一步增加的值就相对准确了。进一步增加DARTSDARTS数量,数量,能够进一步增加精度能够进一步增加精度数学库及其使用数学库及其使用vmathmath库中常用的数学函数库中常用的数学函数函函数数数学数学表示表示含含义义pi的近似值,15位小数eee的近似值,15位小数ceil(x) x向上取整floor(x) x向下取整pow(x,y)xy指数运算,x的y次方log(x)lg x对数,以e为基log10(x)log10 x对数,以10为基sqrt(x)平方根x数学库及其使用数学库及其使用函函数数数学数学表示表示含含义义exp(x)exx次

15、幂,以e为基degrees(x)弧度转换成角度radians(x)角度转换成弧度sin(x)sin x正弦函数cos(x)cos x余弦函数tan(x)tan x正切函数asin(x)arcsin x反正弦函数,x -1.0,1.0acos(x)arccos x反余弦函数,x -1.0,1.0atan(x)arctan x反正切函数,x -1.0,1.0数学库及其使用数学库及其使用v 上述函数封装在上述函数封装在mathmath库中,对库函数引用方式库中,对库函数引用方式: :nimport import . 例例 import mathimport math math.ceil(1.2) m

16、ath.ceil(1.2) 2.0 2.0nfrom from import import 例例 from math import ceil,floor from math import ceil,floor ceil(1.2) ceil(1.2) 2.0 2.0n若希望引用更多库中函数并直接使用:若希望引用更多库中函数并直接使用:from math import from math import * *随机数库及其使用随机数库及其使用vRandomRandom库中常用的函数库中常用的函数函函数数含含义义seed(x)给随机数一个种子值,默认为系统时钟random()生成一个0, 1.0)之间

17、的随机小数uniform(a,b)生成一个a到b之间的随机小数randint(a,b)生成一个a到b之间的随机整数randrange(a,b,c)随机生成一个从a开始到b以c递增的数choice() 从序列(例如:列表)中随机返回一个元素shuffle() 将一个列表中元素随机打乱sample(,k)从指定序列中随机获取k个元素随机数库及其使用随机数库及其使用v 引用引用randomrandom库函数举例库函数举例 from random import from random import * * random random 0.7580946277254204 0.7580946277254

18、204 uniform(1,10) uniform(1,10) 2.316461542527591 2.316461542527591 randint(1,10) randint(1,10) 5 5 randrange(0,10,4) # randrange(0,10,4) #从从0 0开始到开始到1010以以4 4递增的元素中随机返回递增的元素中随机返回 4 4 ra=range(10) ra=range(10) 0,1,2,3,4,5,6,7,8,9 0,1,2,3,4,5,6,7,8,9随机数库及其使用随机数库及其使用 choice(ra)choice(ra) 7 7 shuffle(r

19、a) # shuffle(ra) #随机改变随机改变rara的顺序的顺序 ra ra 5,0,6,7,4,9,8,1,3,2 5,0,6,7,4,9,8,1,3,2 sample(ra,4) sample(ra,4) 8,7,0,6 8,7,0,6 seed(10) # seed(10) #以以1010为种子为种子 uniform(1,10) uniform(1,10) 6.142623352209221 6.142623352209221 uniform(1,10) uniform(1,10) 4.860001492076032 4.860001492076032 随机数库及其使用随机数库及

20、其使用 seed(10) #seed(10) #再次设定种子为再次设定种子为1010 uniform(1,10)uniform(1,10) 6.142623352209221 6.142623352209221 uniform(1,10) uniform(1,10) 4.860001492076032 4.860001492076032v 设定相同的种子后,每次调用随机函数生成的随机数都是设定相同的种子后,每次调用随机函数生成的随机数都是相同的。相同的。v 随机种子的作用:相同的种子产生相同的伪随机数序列,随机种子的作用:相同的种子产生相同的伪随机数序列,便于通过相同的随机数进行验证便于通过相

21、同的随机数进行验证252008.05(一)(一)PM2.5PM2.5指数分级例子指数分级例子# pm25.py# 空气质量提醒空气质量提醒. def main():PM = input(What is todays PM2.5? )# 打印相应提醒打印相应提醒if PM 75:print(Unhealthy. Be careful!)if fahrenheit 75打印空气污染警告打印空气污染警告if PM2.5值值 35打印空气质量优,建议户外运动打印空气质量优,建议户外运动(一)(一)PM2.5PM2.5指数分级例子指数分级例子流程图流程图(二)(二)ifif语句格式语句格式语句格式如下语

22、句格式如下if :其中其中是一个或多个语句序列是一个或多个语句序列先判断先判断条件:条件:l True,则执行,则执行body,再转向下一条,再转向下一条语句;语句;l False,则直接跳过,则直接跳过body,转向下一,转向下一条语句;条语句;(三)简单条件构造(三)简单条件构造l 简单条件基本形式简单条件基本形式 l 是关系操作符是关系操作符, =, , !=l 使用使用“=”表示赋值语句,使用表示赋值语句,使用“=”表示等于表示等于l 是布尔表达式,为是布尔表达式,为boolbool类型,值类型,值truetrue或或falsefalse以以True和和False表示表示l 除数字外,

23、除数字外,字符或字符串也可以用于条件比较字符或字符串也可以用于条件比较(三)简单条件构造(关系运算符的使用)(三)简单条件构造(关系运算符的使用) 3 3 * 4 hello = helloTrue hello Hello helloTrue(四)复杂条件的构造(四)复杂条件的构造l 分支和循环结构中都有可能需要使用较为复杂的条件分支和循环结构中都有可能需要使用较为复杂的条件进行控制进行控制l 仅使用关系运算符无法表达一些完整信息仅使用关系运算符无法表达一些完整信息l 例如:闰年的判断例如:闰年的判断l 字母字符的判断字母字符的判断l 需要借助于布尔操作符构造出复杂条件需要借助于布尔操作符构造

24、出复杂条件布尔操作符布尔操作符l 布尔操作符:布尔操作符: and,or和和 notl 布尔运算符布尔运算符and和和or用于组合两个布尔表达式,并产用于组合两个布尔表达式,并产生一个布尔结果生一个布尔结果n and n or l not运算符计算一个布尔表达式的反运算符计算一个布尔表达式的反nnot 布尔操作结果布尔操作结果PQP and QP or Qnot PTrueTrueTrueTrueFalseTrueFalseFalseTrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalseTrue布尔操作符布尔操作符l a or not b and

25、 cl Python中布尔中布尔操作操作符的优先级,从高分到低分依次符的优先级,从高分到低分依次是是not、and最低是最低是or。所以上面的达式等于如下这。所以上面的达式等于如下这个带括号的版本:个带括号的版本:l (a or (not b) and c)l 例如:闰年的判断例如:闰年的判断l Y%400=0 or y%4=0 and y %100!=0l 例如:字母字符的判断例如:字母字符的判断l C=A and C=a and C=z362008.05forfor循环循环l Python可以使用可以使用for语句循环遍历整个序列的值语句循环遍历整个序列的值for in :l 在在for循环中,循环变量循环中,循环变量var遍历了队列中的每一遍历了队列中的每一个值,循环的语句体为每个值执行一次。个值,循环的语句体为每个值执行一次。forfor循环循环- -求平均数求平均数l 平均数计算程序的平均数计算程序的IPO如下如下:输入:待输入数字个数,数字输入:待输入数字个数,数字处理:平均数算法处理:平均数算法输出:平均数输出:平均数l 通用设计方案通用设计方案:输入数字的个数输入数字的个数n将将sum初始化为初始化为0循环循环n次:次:输入数字输入数字x将将x加入加入sum中中将将sum/n作为平均数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论