12020/9/2012008.05程序设计基础(Python语言)主讲:朱立华22020/9/2022008.05第二讲:3章,7、8部分第3章数字类型第7章分支结构第8章循环结构3本次课主要内容主要内容4种数字类型的概念和使用一各类型数字在计算机中的表示方法二Python数学库和随机库的使用三循环结构简介五分支结构简介四42020/9/2042008.05第3章:数字类型数字类型当用户向计算机输入123,计算机需要明确的知道这个输入是可以进行数学计算的数字123,还是类似人名的字符串“123”,这两者在计算机内部采用不一样的存储方式。这个需求产生了“数据类型”的概念数据类型表示信息在计算机中的不同存储方式,进而决定了处理过程中信息的类型和功能。Python语言中,123表示一个数字,“123”表示一个字符串。其中,表示数字的数据类型也叫数字类型,本节主要介绍数字类型数字类型Python的4种数字类型整数:长度不超过计算机字长的“普通”整数。对于64位字长的计算机,整数的取值范围是[-263,263-1]例:1010,99,-217,0x9a,-0x89整数可以表示为十进制,也可表示为十六进制等其他进制方式。0x开头的数字表示十六进制数字长整数:超过整数类型表示范围的整数,数字后面加”L”或”l”,为免混淆,建议使用“L”例:1010L,-217L,0x9a,0x1234567890abcdeedL数字类型Python的4种数字类型浮点实数:带有小数的数值,十进制或科学计数法表示例:0.0,-77.,-2.17,96e4,4.3e-3,9.6E5科学计数法使用字母“e”或者“E”作为幂的符号,以10为基数。科学计数法含义如下:aeb=a*10b4.3e-3表示0.0043复数:a+bj,a是实数部分,b是虚数部分,a、b皆是浮点类型,叙述部分通过后缀“J”或“j”来表示例:12.3+4j,-5.6+7j,1.23e-4+5.6e+89j数字类型对整数和浮点数处理方法中应注意0.0与0值相同,但数据结构不同整数与整数运算后,结果为整数;长整数与整数运算后,为长整数;浮点数与其他类型运算后,为浮点数,例如10/3=310L/3=3L10.0/3=3.333浮点类型不能采用十六进制方式表示type(val)函数可以返回用户提供的输入val的类型例如type(10)type‘int’数字类型type(10L)type‘long’type(10.0)type‘float’type(10+10j)type‘complex’实际上,type()函数可以返回任何Python定义的数据类型,而不局限于数字类型数字类型的转换数字类型之间的转换规则Python提供了一些数字转换函数:int()、long()、float()、complex()整数、长整数和浮点数之间可自由转换,浮点数转换为其他两种类型时,小数部分会被舍弃long(10.4)10Lint(10.999)10数字类型的转换函数complex()可将其他类型转为复数,但复数不可转为其他类型,例如complex(10.999)(10.999+0j)int(10+10j)#将会报错Traceback(mostrecentcalllast):Filepyshell#0,line1,inmoduleint(10+10j)TypeError:can'tconvertcomplextoint•数字类型转换在进行数学运算的时候十分重要,当需要包含小数的除法结果时,要用浮点类型而不是整数类型数字类型的操作Python中数字类型的操作操作操作含义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次幂数字类型的操作数字类型操作举例8.0/32.66666668.0//32.0divmod(8.0,3)(2.0,2.0)abs(-8.63)8.63pow(8,2)64示例程序1:π的计算蒙塔卡罗(MonteCarlo)方法,又称随机抽样或统计试验方法。当所要求解的问题是某种事件出现的概率,或某随机变量的期望值时,可以通过某种“试验”的方法求解。应用蒙瑞特卡罗方法求解π的步骤:随即向单位正方形和圆结构抛洒大量点,判断每个点在圆内或者圆外,圆内点数除以圆外点数就是π值。随机点数量越大,得到的π值越精确。问题的IPO表示如下:输入:抛点数处理:计算每个点到圆心的距离,统计在圆内点的数量输出::π值示例程序1:π的计算示例程序1:π的计算采用蒙塔卡罗方法求解π值的Python程序如下:#m_pi.pyfromrandomimportrandomfrommathimportsqrtfromtimeimportclockDARTS=1000hits=0.0clock()forIinrange(1,DARTS):x,y=random(),random()dist=sqrt(x**2+y**2)ifdist=1.0:hits=hits+1pi=4*(hits/DARTS)print“piis%s”%(pi)print“runningtimeis%-5.5ss”%clock()示例程序1:π的计算该程序运行结果如下:m_pi.pypiis3.208runningtimeis0.006s由于DARTS点数量较少,π的值不是很精确。通过增加DARTS数量继续试验,在230数量级上,π的值就相对准确了。进一步增加DARTS数量,能够进一步增加精度数学库及其使用math库中常用的数学函数函数数学表示含义piππ的近似值,15位小数eee的近似值,15位小数ceil(x)⌈x⌉向上取整floor(x)⌊x⌋向下取整pow(x,y)xy指数运算,x的y次方log(x)lgx对数,以e为基log10(x)log10x对数,以10为基sqrt(x)平方根x数学库及其使用函数数学表示含义exp(x)exx次幂,以e为基degrees(x)弧度转换成角度radians(x)角度转换成弧度sin(x)sinx正弦函数cos(x)cosx余弦函数tan(x)tanx正切函数asin(x)arcsinx反正弦函数,x∊[-1.0,1.0]acos(x)arccosx反余弦函数,x∊[-1.0,1.0]atan(x)arctanx反正切函数,x∊[-1.0,1.0]数学库及其使用上述函数封装在math库中,对库函数引用方式:import库名库名.函数名例importmathmath.ceil(1.2)2.0from库名import函数名函数名例frommathimportceil,floorceil(1.2)2.0若希望引用更多库中函数并直接使用:frommathimport*随机数库及其使用Random库中常用的函数函数含义seed(x)给随机数一个种子值,默认为系统时钟random()生成一个[0,1.0)之间的随机小数uniform(a,b)生成一个a到b之间的随机小数randint(a,b)生成一个a到b之间的随机整数randrange(a,b,c)随机生成一个从a开始到b以c递增的数choice(list)从序列(例如:列表)中随机返回一个元素shuffle(list)将一个列表中元素随机打乱sample(list,k)从指定序列中随机获取k个元素随机数库及其使用引用random库函数举例fromrandomimport*random0.7580946277254204uniform(1,10)2.316461542527591randint(1,10)5randrange(0,10,4)#从0开始到10以4递增的元素中随机返回4ra=range(10)[0,1,2,3,4,5,6,7,8,9]随机数库及其使用choice(ra)7shuffle(ra)#随机改变ra的顺序ra[5,0,6,7,4,9,8,1,3,2]sample(ra,4)[8,7,0,6]seed(10)#以10为种子uniform(1,10)6.142623352209221uniform(1,10)4.860001492076032随机数库及其使用seed(10)#再次设定种子为10uniform(1,10)6.142623352209221uniform(1,10)4.860001492076032设定相同的种子后,每次调用随机函数生成的随机数都是相同的。随机种子的作用:相同的种子产生相同的伪随机数序列,便于通过相同的随机数进行验证252020/9/20252008.05第7章:分支结构(一)PM2.5指数分级例子#pm25.py#空气质量提醒.defmain():PM=input(Whatistoday’sPM2.5?)#打印相应提醒ifPM75:print(Unhealthy.Becareful!)iffahrenheit35:print(Good.Gorunning!)main()(一)PM2.5指数分级例子输入:接受外部输入PM2.5值处理:空气质量分级算法输出:打印空气质量提醒伪代码如下:ifPM2.5值75打印空气污染警告ifPM2.5值35打印空气质量优,建议户外运动(一)PM2.5指数分级例子——流程图(二)if语句格式语句格式如下ifcondition:body其中body是一个或多个语句序列先判断condition条件:True,则执行body,再转向下一条语句;False,则直接跳过body,转向下一条语句;(三)简单条件构造简单条件基本形式exprrelopexprrelop是关系操作符,=,==,=,,!=使用“=”表示赋值语句,使用“==”表示等于condition是布尔表达式,为bool类型,值true或false以True和False表示除数字外,字符或字符串也可以用于条件比较(三)简单条件构造(关系运算符的使用)34True3*43+4Falsehello==helloTruehellohelloFalseHellohelloTrue(四)复杂条件的构造分支和循环结构中都有可能需要使用较为复杂的条件进行控制仅使用关系运算符无法表达一些完整信息例如:闰年的判断字母字符的判断需要借助于布尔操作符构造出复杂条件布尔操作符布尔操作符:and,or和not布尔运算符and和or用于组合两个布尔表达式,并产生一个布尔结果exprandexprexprorexprnot运算符计算一个布尔表达式的反notexpr布尔操作结果PQPandQPorQnotPTrueTrueTrueTrueFalseTrueFalseFalseTrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalseTrue布尔操作符aornotbandcPython中布尔操作符的优先级,从高分到低分依次是not、and最低是or。所以上面的达式等于如下这个带括号的版本:(aor((notb)andc))例如:闰年的判断Y%400==0ory%4==0andy%100!=0例如:字母字符的判断C=‘A’andC=‘Z’orC=‘a’andC=‘z’362020/9/20362008.05第8章:循环结构for循环Python可