1、第二次上机总结第二次上机总结11、以file的形式写代码,交互式的界面只适合于单语句代码的测试2、file文件中以函数为单位写代码,方便调用以实现代码重用3、inport语句放在程序的开头,即程序总注释后面,第一个函数前面1第二次上机总结第二次上机总结2提高课堂效率了解每次课的主要内容2第第3章章数据处理的流程控制数据处理的流程控制 计算机程序根据语句的顺序依次向下执行。#convert.py#A program to convert Celsius temps to Fahrenheitdef main():celsius=input(What is the.”)fahrenheit=9.0
2、/5.0*celsius+32 print The temperature is,fahren.main()n流程图:用标准化的图形符号来表示程序步骤流程图:用标准化的图形符号来表示程序步骤 但这种顺序执行显然是不够的,我们会要求某个功能重复执行,也会要求根据不同的前提条件执行不同的功能,所以引入了另两种控制结构分支和循环3.2 分支结构3.3 异常处理3.4 循环结构3.5 结构化程序设计1 单分支结构单分支结构2 二分支结构二分支结构3 多分支结构多分支结构(一)温度转换的例子(一)温度转换的例子(eg3_1.py)#convert.py#A program to convert Cels
3、ius temps to Fahrenheitdef main():celsius=input(What is the.”)fahrenheit=9.0/5.0*celsius+32 print The temperature is,fahren.main()(一)温度转换的例子(一)温度转换的例子希望他可以根据不同的温度给出不同的提示。If fahrenheit 90 print a hot warningIf fahrenheit 90:print Its really hot out there,.if fahrenheit 30:print Brrrrr.Be sure to dres
4、s warmlymain()单分支语句(二)用于执行决策的(二)用于执行决策的if语句语句语法:语法:if:(if fahrenheit 90:):)next 语义:先判断条件表达式(condition)ntrue,执行语句体(body),再转向下一个语句nfalse,忽略语句体(body),直接转向下一个语句n语句体(body):n一个或多个语句 n在:后面缩进显示,body中的各语句缩进对齐(三)条件表达式的格式(三)条件表达式的格式简单条件表达式(condition):比较两个表达式 (a+2=a(a+2=a*2)2)n关系运算:,=,!=n数值比较:整型数的比较,实型数的比较n字符串比
5、较:按字典序。字母序由编码(ASCII等)决定.如:大写字母在小写字母前.称为布尔表达式布尔表达式结果为true/false,1/0Relation operation(关系运算符)3.2 分支结构3.3 异常处理3.4 循环结构3.5 结构化程序设计1 单分支结构单分支结构2 二分支结构二分支结构3 多分支结构多分支结构求一元二次方程的例子求一元二次方程的例子(ver1.0)#quadratic.py import mathdef main():print This program finds the real.a,b,c=input(Please enter.(a,b,c):)discRo
6、ot=math.sqrt(b*b-4*a*c)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)print The solutions are:,root1,root2 main()This program finds the real solutions to a quadraticPlease enter the coefficients(a,b,c):1,1,2Traceback(most recent call last):File C:Documents and SettingsTerryMy DocumentsTeachingW04
7、CS 120Textbookcodechapter3quadratic.py,line 21,in-toplevel-main()File C:Documents and SettingsTerryMy DocumentsTeachingW04CS 120Textbookcodechapter3quadratic.py,line 14,in main discRoot=math.sqrt(b*b-4*a*c)ValueError:math domain errorver1.0的运行的运行引入决策分支结构#quadratic2.py,当,当discrim=0时才有解时才有解import math
8、 def main():print This program finds the real solutions.n a,b,c=input(Please enter the.(a,b,c):)discrim=b*b-4*a*c if discrim=0:discRoot=math.sqrt(discrim)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)print nThe solutions are:,root1,root2main()求一元二次方程的例子求一元二次方程的例子(ver2.0)ver2.0的运行结果 This program
9、finds the real solutions to a quadraticPlease enter the coefficients(a,b,c):1,1,1 discRoot=0:discRoot=math.sqrt(discrim)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)print nThe solutions are:,root1,root2 if discRoot 0:print“The equation has no real roots!”main()求一元二次方程的例子求一元二次方程的例子(ver2.0+)该程序两个
10、if语句的流程图?做了基于同一个值的两次条件表达式的判断,不够高效二分支结构二分支结构二分支结构二分支结构语法:语法:if:else:next statements#quadratic3.py 考虑到负值并会给出提示考虑到负值并会给出提示import math def main():print This program finds the real solutions.n a,b,c=input(Please enter the.(a,b,c):)discrim=b*b-4*a*c if discrim 0:print nThe equation has no real roots!else:
11、discRoot=math.sqrt(b*b-4*a*c)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)print nThe solutions are:,root1,root2 main()求一元二次方程的例子求一元二次方程的例子(ver3.0)This program finds the real solutions to a quadratic Please enter the coefficients(a,b,c):1,2,1 The solutions are:-1.0-1.0 该程序还可以改善:同时0三种情况ver3.0的运行结
12、果的运行结果3.2 分支结构3.3 异常处理3.4 循环结构3.5 结构化程序设计1 单分支结构单分支结构2 二分支结构二分支结构3 多分支结构多分支结构多分支结构多分支结构if discrim 0:print Equation has no real rootselse:#大于等于大于等于0的情况的情况 if discrim=0:root=-b/(2*a)print There is a double root at,root else:#大于大于0的情况的情况 discRoot=math.sqrt(b*b-4*a*c)root1=(-b+discRoot)/(2*a)root2=(-b-d
13、iscRoot)/(2*a)print nThe solutions are:,root1,root2if.else的嵌套:if或else后面的语句块可以是ifelse语句多分支结构的实现多分支结构的实现1:if.else的嵌套的嵌套教材教材p121:p121:第第1313题题程序设计:输入百分制的考试分数,输出相应的等级制名称。设A:90-100,B:80-89,C:70-79,D:60-69,F:60分以下多层嵌套会导致缩进很多多分支结构的实现多分支结构的实现2:elif语法:语法:if:elif:elif:else:语义语义:找到第一个为真的条件找到第一个为真的条件表达表达式式并执行对应
14、语句序列并执行对应语句序列,控,控制转向下一条语句;若无,制转向下一条语句;若无,则执行则执行elseelse下的语句序列下的语句序列,控制转向控制转向下一条语句下一条语句。#quadratic4.py 同时考虑三种情况同时考虑三种情况import math def main():print This program finds the real solutions.n a,b,c=input(Please enter the.(a,b,c):)discrim=b*b-4*a*c if discrim 0:print nThe equation has no real roots!elif d
15、iscrim=0:root=-b/(2*a)print nThere is a double root at,root else:discRoot=math.sqrt(b*b-4*a*c)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)print nThe solutions are:,root1,root2 求一元二次方程的例子求一元二次方程的例子(ver4.0)教材教材p121:p121:第第1313题题程序设计:输入百分制的考试分数,输出相应的等级制名称。设A:90-100,B:80-89,C:70-79,D:60-69,F:60分以下
16、Boolean操作符操作符n有时候简单的bool表达式还不够n用and、or、not 等去组合多个布尔表达式 and or not 布尔操作结果布尔操作结果PQP and QP or Qnot PTTTTFTFFTFFTFTTFFFFT我们可以用布尔操作符任意地组合各种布尔表达式。最终的结果还是T或F。Boolean操作符操作符a or not b and c 是是T还是还是F(a,b,c皆为皆为T)?)?操作符的优先级:not and or上述表达式等价于(a or(not b)and c)在记不住优先级的时候,加小括号确定优先级写写Bool表达式的例子表达式的例子:模拟模拟racquetb
17、all的结束的结束两个人比赛,得分记为两个人比赛,得分记为scoreA,scoreB,没分出胜负之前,没分出胜负之前循环比赛,直到有一人胜出。循环的退出表达式怎么写?循环比赛,直到有一人胜出。循环的退出表达式怎么写?n先得15分者胜(1)有一位得15分的表示 scoreA=15 or scoreB=15(2)满足上述条件的时候停止,否则继续比赛 while not(scoreA=15 or scoreB=15):#continue playing只要满足一个条件就要退出取not的时候就是没退出,继续游戏例例:模拟模拟racquetball的结束的结束n先得先得15分或分或7:0者胜者胜whil
18、e not(a=15 or b=15 or(a=7 and b=0)or(b=7 and a=0))n必须有一方大于必须有一方大于15并且至少要多并且至少要多2分才胜分才胜while not(a=15 and a-b=2)or(b=15 and b-a=2)Boolean代数代数n对布尔表达式的要求:能写:将实际问题所涉及的条件表达成布尔表达式 能计算:能对布尔表达式进行演算和推导n布尔表达式也能进行代数计算(布尔逻辑)Boolean代数代数nand has properties similar to*nor has properties similar to+n0 and 1 corresp
19、ond to false and true,respectively.AlgebraBoolean algebraa*0=0a and false=falsea*1=aa and true=aa+0=aa or false=aBoolean代数代数n任何数任何数 or true,其结果肯定为,其结果肯定为true:a or true=truenand和和or服从分配律服从分配律:a or(b and c)=(a or b)and(a or c)a and(b or c)=(a and b)or(a and c)n双重否定就是肯定双重否定就是肯定:not(not a)=an摩根定律摩根定律:no
20、t(a or b)=(not a)and(not b)not(a and b)=(not a)or(not b)Python对布尔值和布尔运算的处理很灵活可扩展阅读 中文教材2.4.4 Python中真假的表示与计算 3.2 分支结构分支结构3.3 异常处理异常处理3.4 循环结构循环结构3.5 结构化程序设计结构化程序设计quadratic.pyquadratic.py程序会产生很多问题程序会产生很多问题quadratic2-4.pyquadratic2-4.py利用决策分支避免了其利用决策分支避免了其中的开方为负数时的运行错误中的开方为负数时的运行错误在其他很多程序里,也经常用决策分支结构
21、保护程序,避免出现虽然几率很小但还是不可避免会发生的错误。#quadratic.py import mathdef main():print This program finds the real.a,b,c=input(Please enter.(a,b,c):)if a=0:#非二次方程非二次方程 handler1 if type(a)!=int or type(b)!=int or type(c)!=int:#输入类型错误输入类型错误 handler2 discRoot=math.sqrt(b*b-4*a*c)if discRoot0:handler3 root1=(-b+discRoo
22、t)/(2*a)root2=(-b-discRoot)/(2*a)print The solutions are:,root1,root2 main()raw_input()当程序中充斥着这样的错误检测代码时,解决问题的算法反而不明显了。是不是可以把程序的主干留着,错误处理代码提出来放到专门的地方异常处理机制异常处理机制n异常处理机制n把错误集中在一起处理,以免影响算法的主线条。nPython提供try.except.n可使程序不因运行错误而崩溃,尽量让用户不受意外结果的困扰。异常处理语句异常处理语句语法:try:except:except:.except:nextstatement语义:执行
23、。若无错,控制转下一语句;若有错,查找匹配该错误的except子句,找到则执行相应的处理程序,找不到则程序崩溃,系统报错。编程实例:完善编程实例:完善quadratic.pyquadratic.pyn用异常处理语句来捕获math.sqrt的溢出错误(quadratic5.py)try:.except ValueError:.n错误类型:从系统报错信息中可得。n如ValueError,TypeError,NameError等nTraceback(most recent call last):File C:Documents and SettingsTerryMy DocumentsTeachin
24、gW04CS120Textbookcodechapter3quadratic.py,line 21,in-toplevel-main()File C:Documents and SettingsTerryMy DocumentsTeachingW04CS 120Textbookcodechapter3quadratic.py,line 14,in main discRoot=math.sqrt(b*b-4*a*c)ValueError:math domain error#quadratic5.pyimport mathdef main():print This program finds th
25、e real solutions.n a,b,c=input(Please enter the.(a,b,c):)try:discRoot=math.sqrt(b*b-4*a*c)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)print nThe solutions are:,root1,root2 except ValueError:print nNo real roots“except ZeroDivisionError:print“input error,a cannot be zero.main()求一元二次方程的例子求一元二次方程
26、的例子(ver5.0)将a等于0的判断也作为异常,使程序更加简洁n运行程序ver5.0:This program finds the real solutions to a quadraticPlease enter the coefficients(a,b,c):1,1,1No real rootsntryexcept 可以捕捉任何类型的错误,包括内置类型,自定义类型等。n对于quadratic program,还会有其他的运行错误,如:输入非数值类型,输入非常量而是变量(NameError),输入无效的数值类型(TypeError)等。n此时可以用一个try语句加多重except来实现。3
27、.2 分支结构3.3 异常处理3.4 循环结构循环结构3.5 结构化程序设计(1)for 循环循环:回顾回顾(2)while循环循环(3)常见循环模式)常见循环模式(4)循环的非正常中断)循环的非正常中断for 循环循环n语法:for in:n例子:for i in range(100):print in语义:循环索引值var依次取sequence中的值,每循环一次执行一次用用for处理处理序列数据序列数据的两种遍历方式的两种遍历方式 data=Born on:,July,2,2005n直接遍历序列直接遍历序列 for d in data:print d,通过索引遍历序列通过索引遍历序列 fo
28、r i in range(len(data):print datai,n可以更灵活地处理序列数据,如可以更灵活地处理序列数据,如 for i in range(0,len(data),3):.用用for处理各种处理各种序列数据序列数据n字符串字符串 for c in hello world:print c,n元组元组 for i in(1,2,3):print i n嵌套序列:如元组的列表嵌套序列:如元组的列表 for t in(1,2),(3,4),(5,6):print t,t0,t1(1,2)1 2(3,4)3 4(5,6)5 6123h e l l o w o r l dn假设我们要求
29、一组数的均值n为了实现程序的通用性,必须使得该程序能够求任意个数的平均值n程序特点:不要求记录每个值,只要求平均值,所以我们可以只记录加和值。for 循环例子循环例子#average1.py#A program to average a set of numbersdef main():n=input(How many numbers do you have?)sum=0.0 for i in range(n):x=input(Enter a number )sum=sum+x print nThe average is,sum/nfor 循环循环累积计算:(1)初始值的设定(2)循环计算,更
30、新How many numbers do you have?5Enter a number 32Enter a number 45Enter a number 34Enter a number 76Enter a number 45The average of the numbers is 46.4naverage1.py的缺点:需要用户输入n,不适合事先不知道n的场合n不知道n则不能用确定的计数循环forn不确定的条件循环:while上机课上交的作业问题:1、没交作业:9156 9168 9172 9192 9194 9196 9205 92162、存成了txt文件(9169,9175)3、
31、没写成函数的形式(9197,9211)4、输出格式:%上机课上交的作业问题:59%的应用 print i,”$”+str(%0.2f“%principal)print i,“$%0.2f“%principal3.2 分支结构3.3 异常处理3.4 循环结构循环结构3.5 结构化程序设计(1)for 循环循环:回顾回顾(2)while循环循环(3)常见循环模式)常见循环模式(4)循环的非正常中断)循环的非正常中断n语法:while:nextstatementn语义:只要条件成立就反复执行循环体;当条件不成立则执行下一条语句。不确定循环:不确定循环:whilenwhile:n条件表达式(condi
32、tion)是一个bool型的表达式。n语句体(body)是一句或多句语句,多句语句时缩进对齐。n每次循环时,先检查条件表达式,为真时执行body,为假时略过body执行while后的语句,循环终止。不确定循环:不确定循环:whilewhilewhile循环的特点循环的特点n循环前测试条件n若不满足,则循环体一次都不执行n循环体影响下一次条件测试n否则导致无穷循环无穷循环条件循环体yesno例如:要依次打印110这10个数:nfor loop:for i in range(1,11):print inwhile loop:i=1while i=0:sum=sum+x x=input(Input
33、a number(-1 to quit):)print The sum is,sum 哨兵循环例哨兵循环例(2)n正常数据是任何实数,则可以正常数据是任何实数,则可以空串空串作为哨兵作为哨兵:eg3_12.pysum=0 x=raw_input(Input a number(to quit):)while x!=:sum=sum+eval(x)x=raw_input(Input a number(to quit):)print The sum is,sum(三)后测试循环(三)后测试循环n输入验证问题输入验证问题:n检查用户输入是否符合要求,不符合就要求用户重新输入,检查用户输入是否符合要求,
34、不符合就要求用户重新输入,直至符合为止。直至符合为止。n这是一种后测试循环这是一种后测试循环:n执行循环体后才测试条件执行循环体后才测试条件n循环体至少执行一次循环体至少执行一次n直至条件成立才退出循环直至条件成立才退出循环n有些语言提供有些语言提供repeatuntil语句语句nPython可用可用while实现实现n只需只需确保首次进入确保首次进入while时条件成立时条件成立x=1while x 0:.例如,假设程序要求用户输入一个正数,例如,假设程序要求用户输入一个正数,则用下面代码片段可检查输入合法性:则用下面代码片段可检查输入合法性:x=-1while x for i in ran
35、ge(1,10):for j in range(1,i+1):print%dx%d=%-2d%(j,i,j*i),print1x1=11x2=2 2x2=41x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=161x5=5 2x5=10 3x5=15 4x5=20 5x5=251x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=361x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=491x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=641x9=9
36、 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 3.2 分支结构3.3 异常处理3.4 循环结构循环结构3.5 结构化程序设计(1)for 循环循环:回顾回顾(2)while循环循环(3)常见循环模式)常见循环模式(4)循环的非正常中断)循环的非正常中断 正常的循环总是按正常的循环总是按“从头到尾再从头到尾再回到头回到头”的方式进行,但是很多编程语的方式进行,但是很多编程语言都提供了特定条件下打破正常循环方言都提供了特定条件下打破正常循环方式的语句,便于解决问题。式的语句,便于解决问题。Python:break 和和 conti
37、nue循环的非正常中断循环非正常中断:循环非正常中断:breakn语义:语义:中止本轮循环,结束中止本轮循环,结束breakbreak所处的循环语句。所处的循环语句。n常与常与while Truewhile True形式的无穷循环配合使用形式的无穷循环配合使用n例例1 1:输入合法性检查:输入合法性检查while True:while True:x=input(x=input(请输入非负数请输入非负数:):)if x=0:break if x=0:breakn例例2 2:breakbreak也可以跳出也可以跳出forfor循环循环for i in range(10):for i in rang
38、e(10):print print 烦烦 if i 4:break if i 4:break循环非正常中断:循环非正常中断:continuen语义:语义:中止本轮循环,控制转移到所处循环语中止本轮循环,控制转移到所处循环语句的开头句的开头“继续继续”下一轮循环。下一轮循环。例:对列表中的奇数求和例:对列表中的奇数求和a=23,28,39,44,50,67,99sum=0for i in a:if a%2=0:continue sum=sum+iprint sumfor i in range(10):for i in range(10):print print 烦烦 if i 4:continu
39、e if i 4:continuefor i in range(10):for i in range(10):if i 4:continue if i 4:continue print print 烦烦 for i in range(10):for i in range(10):if i=4:if i=4:breakbreak print print 烦烦 for i in range(10):for i in range(10):if i=4:if i=4:continuecontinue print print 烦烦 烦烦烦烦烦烦烦烦烦烦烦烦烦3.2 分支结构3.3 异常处理3.4 循环结
40、构循环结构3.5 结构化程序设计结构化程序设计程序设计的发展程序设计的发展n早期:手工作坊式早期:手工作坊式n程序规模小,功能简单程序规模小,功能简单n要在要在有限内存中尽快完成计算有限内存中尽快完成计算n凭借程序员的个人编程技巧凭借程序员的个人编程技巧n后来:作为工程来开发后来:作为工程来开发n程序规模大,功能复杂程序规模大,功能复杂n内存和速度不是问题,软件内存和速度不是问题,软件可靠性可靠性和和开发效率开发效率变得突出变得突出n依靠系统化的开发方法和工具依靠系统化的开发方法和工具程序开发的周期程序开发的周期Step1、需求分析:、需求分析:我们要解决什么问题?分析的越仔细越好。Step2
41、、制定程序规格:、制定程序规格:程序要做什么?主要关注能完成什么,而非程序怎么运行。例如,对于简单程序,我们只要描述输入输出,然后看他们是怎么关联的即可。Step3、算法设计:、算法设计:描述怎么做。阐明程序的整个框架结构。考虑程序如何运行,设计适合于上述规格的算法。一般用伪代码给出总体结构,不纠缠细节。Step4、算法实现:、算法实现:用某种程序设计语言编写代码。Step5、测试与排错:、测试与排错:测试程序是否如预期,排除bug(debug)。Step6、维护程序:、维护程序:运行中还会不断有问题,如持续开发、程序的改进等。什么是好的程序什么是好的程序n解决同一个问题,可以设计出多种处理过
42、解决同一个问题,可以设计出多种处理过程,即编制多种程序。程,即编制多种程序。n即使各种程序都正确。仍然有好坏之分。即使各种程序都正确。仍然有好坏之分。n除了正确性,好的程序应该是除了正确性,好的程序应该是:n效率高效率高n易理解易理解n易维护易维护n可扩展可扩展如何得到好的程序如何得到好的程序n手工作坊阶段靠的是个人编程技巧手工作坊阶段靠的是个人编程技巧n如今则要如今则要善于善于依靠程序设计依靠程序设计方法方法和和工具工具n方法:结构化方法,模块化方法,面向对象方法等方法:结构化方法,模块化方法,面向对象方法等n工具:建模工具,集成开发环境等工具:建模工具,集成开发环境等编程案例:求最大值编程
43、案例:求最大值(1)n考虑求三个数考虑求三个数x1,x2,x3的最大值的问题的最大值的问题n策略策略1:每个数都与其他数比较大小:每个数都与其他数比较大小if x1=x2 and x1=x3:max=x1elif x2=x1 and x2=x3:max=x2else:max=x3此算法中各分支彼此独立。但实际上一个分支的信息此算法中各分支彼此独立。但实际上一个分支的信息对其他分支是有用的对其他分支是有用的!此算法不适合较大此算法不适合较大n的情况的情况编程案例:求最大值编程案例:求最大值(2)n策略策略2:判定树:判定树if x1=x2:if x1=x3:max=x1 else:max=x3e
44、lse:if x2=x3:max=x2 else:max=x3好处好处:只需两次比较只需两次比较,效率高效率高.坏处坏处:结构复杂结构复杂,复杂度随复杂度随n爆炸式增长爆炸式增长.编程案例:求最大值编程案例:求最大值(3)n策略策略3:顺序处理,记录当前最大值。:顺序处理,记录当前最大值。max=x1if x2=max:max=x2if x3=max:max=x3效率高效率高易读易理解易读易理解可扩展到可扩展到nn=input(How many numbers?)max=input(Input a number:)for i in range(n-1):x=input(Input a numb
45、er:)if x max:max=xprint max=,max 编程案例:求最大值编程案例:求最大值(4)n策略策略4:利用现成代码。:利用现成代码。nPython提供内建函数提供内建函数max(x1,x2,.,xn)x1,x2,x3=input(enter 3 numbers:)print max=,max(x1,x2,x3)小结小结n给定问题给定问题,有多种解决方法有多种解决方法n不要只凭第一感匆忙编程,要多考虑是否有不要只凭第一感匆忙编程,要多考虑是否有更好算法更好算法;n首先要正确,其次要结构清晰、高效、可扩首先要正确,其次要结构清晰、高效、可扩展,漂亮。展,漂亮。n问自己会如何解决
46、问题问自己会如何解决问题n追求一般性追求一般性n借鉴,重用现成算法借鉴,重用现成算法补充:有条件地执行程序补充:有条件地执行程序回顾Python模块的执行:n模块最后一行的模块最后一行的 main()main()就是就是启动程序的语句启动程序的语句n执行方式:执行方式:WindowsWindows下双击模块图标下双击模块图标 编辑状态下编辑状态下runrun DOS DOS命令行下命令行下:python.py:python.py 在会话或其他程序中在会话或其他程序中importimport并执行并执行n库:import一个库时,一般没有直接执行其中的函数,而是通过点运算符调用某函数时才执行n模
47、块中没有模块中没有main()main()一行一行n被其他程序被其他程序importimport但不执行但不执行有条件执行程序n混合型模块:既能作为独立程序直接执行,又能作既能作为独立程序直接执行,又能作为库被其他程序为库被其他程序import而不执行而不执行,利用的知识如下:n import import一个模块时一个模块时,Python,Python将该模块中的一个特殊变量将该模块中的一个特殊变量_name_name_设置为该模块的名字设置为该模块的名字;例如例如 import piechartimport piechart _name_ _name_=piechartpiechartn
48、直接执行模块时直接执行模块时,_name_name_被设置为被设置为_main_main_有条件执行程序#convert.py#A program to convert Celsius temps to Fahrenheit#by:Susan Computewelldef main():celsius=input(What is the Celsius temperature?)fahrenheit=(9.0/5.0)*celsius+32 print The temperature is,fahrenheit,degrees Fahrenheit.if _name_=_main_ :main
49、()debug.py文件中代码如左下图,test.py文件中的代码如右下图文件,且debug.py和test.py位于同一文件夹中,那么运行test.py的输出结果是什么?Adebug B_name_ CtestD_main_#code2:test.pyimport debugif _name_=_main_:debug.out()#code1:debug.pydef out():print _name_第三章第三章课堂作业课堂作业(1)读程序写结果:def main():a=50,75,53,92,77,64,79,21 s=0*10 for i in range(len(a):k=ai/10 sk=sk+1 m=s0 k=1 while k m:m=sk k+=1 print%d%(m)(2)编程:输入年份,输出该年是否闰年。提示:如果年份能被4整除,并且当它能被100整除的时候也能被400整除,则该年是闰年。