Ch03程序流程控制•本章要点:顺序结构;选择结构:if语句;循环结构:for语句、while语句;顺序结构•【例3.1】顺序结构示例(area.py):已知三角形三条边的边长(为简单起见,假设这三条边可以构成三角形),求三角形的面积•提示:三角形面积=–其中,a、b、c是三角形三边的边长,h是三角形周长的一半选择结构•分支结构的形式:–单分支、双分支和多分支单分支结构•if语句单分支结构的语法形式:•当条件表达式的值为真(True)时,执行if后的语句(块),否则不做任何操作,控制将转到if语句的结束点•【例3.2】单分支结构示例(if_2desc.py):输入两个数a和b,比较两者大小,使得a大于b双分支结构•if语句双分支结构的语法形式•当条件表达式的值为真(True)时,执行if后的语句(块)1,否则执行else后的语句(块)2•条件表达式•【例3.3】计算分段函数–(1)利用单分支结构实现–(2)利用双分支结构实现–(3)利用条件运算语句实现多分支结构•if语句多分支结构的语法形式•【例3.4】已知某课程的百分制分数mark,将其转换为五级制(优、良、中、及格、不及格)的评定等级grade•【例3.5】已知坐标点(x,y),判断其所在的象限(if_coordinate.py)if语句的嵌套•【例3.6】计算分段函数:0x10x00x1yif语句典型示例代码选择结构综合举例•【例3.7】输入三个数,按从大到小的顺序排序(if_3desc.py)–先a和b比较,使得ab;然后a和c比较,使得ac,此时a最大;最后b和c比较,使得bc•【例3.8】编程(leapyear.py)判断某一年是否为闰年。判断闰年的条件是:年份能被4整除但不能被100整除,或者能被400整除循环结构(1)•for语句和while语句来实现循环结构•可迭代对象(iterable)•for循环循环结构(2)•range对象–从start开始,到stop结束(不包含stop)。如果指定了可选的步长step,则序列按步长增长•【例3.9】利用for循环求1~100中所有奇数的和以及偶数的和(for_sum1_100.py)while循环•【例3.10】利用while循环求,以及1~100中所有奇数的和、偶数的和(while_sum.py)•【例3.11】用如下近似公式求自然对数的底数e的值,直到最后一项的绝对值小于10-6为止(while_e.py)循环的嵌套•在一个循环体内又包含另一个完整的循环结构,称为循环的嵌套•【例3.12】利用嵌套循环打印运行效果如图3-6所示的九九乘法表(nest_for.py)break语句•用于退出for、while循环,即提前结束循环,接着执行循环语句的后继语句–当多个for、while语句彼此嵌套时,break语句只应用于最里层的语句,即break语句只能跳出最近的一层循环•【例3.13】使用break语句终止循环(break.py)•【例3.14】编程(prime1.py和prime2.py)判断所输入的任意一个正整数是否为素数–方法一(利用for循环和break语句)–方法二(利用while循环和bool变量)continue语句•结束本次循环,即跳过循环体内自continue下面尚未执行的语句,返回到循环的起始处,并根据循环条件判断是否执行下一次循环•continue语句与break语句的区别–continue语句仅结束本次循环,并返回到循环的起始处,循环条件满足的话就开始执行下一次循环;而break语句则是结束循环,跳转到循环的后继语句执行•【例3.15】使用continue语句跳过循环。要求输入若干学生成绩(按Q或q结束),如果成绩0,则重新输入。统计学生人数和平均成绩•【例3.16】显示100~200之间不能被3整除的数(continue_div3.py)。要求一行显示10个数死循环(无限循环)•如果while循环结构中循环控制条件一直为真,则循环将无限继续,程序将一直运行下去,从而形成死循环•程序死循环时,会造成程序没有任何响应;或者造成不断输出(例如控制台输出,文件写入,打印输出等)•在程序的循环体中,插入调试输出语句print,可以判断程序是否为死循环。注意,有的程序算法十分复杂,可能需要运行很长时间,但并不是死循环•可以使用快捷键Ctrl+c终止当前程序的运行•【例3.17】死循环示例(infinite.py)else子句•【例3.18】使用for语句的else子句(for_else.py)实验和习题•上机实践1~13•复习题–单选题–填空题–思考题