Python控制语句.分支结构控制

Python控制语句
一、分支结构控制
1、单分支语句
举例:
x=input("请输入一个整数")
x=int(x)
if
说明:if下面的语句块,必须缩进几个空格(左边界不能和if对齐,默认是缩进四个空格),当输入冒号并按回车键后,系统自动缩进四个空格的位置,再输入的就是语句块的内容。如果无缩进,则程序就会报错。语句块可以由一条语句或多条语句构成,但同一语句块的左边界是对齐的。
启动Python解释器后建立命令文件,输入上面的各语句并保存,运行结果如下:
第一次运行,输入了数字60,因为条件满足,所以执行了print语句,得到了输出,第二次运行,输入了-3,因为条件不满足,print语句没有执行,直接结束运行,因此程序没任何输出。我们也可以输入其他数字来检验程序的执行结果。
说明:int()函数用于将括号中的参数转换为整型数据。程序中的前两条语句也可以合并成一条语句,x=int(input("请输入一个整数:"))。这两种写法结果是相同的。但合并后的语句执行效率更高,因为少了一次赋值操作。而是直接将input函数的函数值转换成整数。
【例题1】编写程序,要求先接收从键盘输入的一个整数存储知变量x中,然后对该数进行判断,如果是正数则显示该数的平方和立方,然后再显示x的值并结束程序,如果从键盘输入的不是正数,则直接显示x值后结束程序。
分析:这个程序和上一题实现方法基本相同,但if下面的语句块应由两条语句组成,一条是显示x的平方,一条是显示x的立方。最后显示x的语句不应该属于if 语句块(因为不论输入的是正数还是负数,x都是要显示的)。程序如下:但写程序时一定要注意语句块的缩进。此例中将缩进设置成了两个空格(缩进量可以随意设置,但同一模块的缩进量必须相同)。参见下图。
该程序实际由四条语句构成,这四条语句左边界是对齐的,它们属于同一层次的语句,是按顺序执行的,其中第三条语句是if 语句,if语句控制的语句块中有两条子语句,这两条子语句是否执行是由if 后面的条件控制的,这两条子语句左边界是对齐的,但对于控制它们的if语句来说,它们是缩进的,表示这是两条由if控制的语句,属于同一if控制的语句块。
Python的语句块就是由语句的缩进量来标识的,语句块中还可以含有其他if 语句,内层的语句块还要再缩进,这样就能靠缩进的量来分清程序中各控制语句的层次关系。
上面的程序运行后的结果如下,第一次运行输入了5,程序运行后显示了5的平方、立方,最后显示出5后结束程序。
第二次运行程序后从键盘输入-6,运行后直接输出-6后结束程序。参见下图。
【例题2】编写程序,要求从键盘接收两个数,按从大到小的顺序输出
分析说明:这道题没有限制输入的必须是整数,所以由input函数接收到的数字字符串也不能通过int函数来转换成数值。在这里我们使用一个新函数:eval_r(),这个函数的一项基本功能是将其参数中的字符串引号去掉,比如x="1234",则eval_r(x)的函数值就是1234(注意该函数还有更高级的用法,此处暂不涉及)
于是程序的前两条语句可以写成下面的形式:
x=eval_r(input("请输入第一个数:"))
y=eval_r(input("请输入第二个数:"))
由于我们将接收到的两个数值分别存储在变量x和变量y中,我们不妨做个假设,设x变量中存的是较小的数, y变量中存储的是较大的数,我们对输入的两个数进行判断,如果x小于y就直接输出x和y的值,如果x大于y 就交换x和y 的值后再输出x和y的值。
最后程序如下
x=eval_r(input("请输入第一个数:"))
y=eval_r(input("请输入第二个数:"))
if
print("输入的两个数从大到小的顺序是:")
print(x,",",y)
.说明:上面的最后一条语句不仅输出了x,y的值,为了分隔两个数,还在两个值中间输出了一个逗号。程序运行后的结果如下:
其中:x,y=y,x语句用来交换两个变量的值。
2、双分支结构
举例:
x=input("请输入一个整数")
x=int(x)
if
else:
说明:if语句由两个语句块组成,如果条件满足,则执行语句块1中的语句,如果条件不满足则执行语句块2中的语句。输入程序代码时不要忘记输入冒号,if和else后都有冒号。
【例题3】从键盘输入一个年份,判断该年份是否为闰年,如果是闰年,就显示该年份是闰年,否则显示不是闰年。
判断闰年的条件是:能被4整除而不能被100整除的年份是闰年;能被400整除的年份也是闰年。第一个闰年的条件应写成:y%4==0 and y0!=0(变量y中存储的是年份)
第二个条件应写成 y@0==0
因为两个条件满足一个就可以判定为闰年,所以两个条件应用or运行进行连接,于是最后的条件应该写成:
y%4==0 and y0!=0 or y@0==0
写出程序如下:
y=int(input("请输入一个年份:"))
if
else:
输入以上代码时不要忘记缩进和两处冒号。同一语句块的缩进量可多可少但要一致。以下是程序的四次运行结果。第一次运行输入1900,因为该年份能被4整除,但也能被100整除,所以不是闰年。第二次运行输入的年份是2018,该年份不能被4整除,所以不是闰年。第三次运行输入的年份能被4整除但不能被100整除,所以是闰年。第四次运行输入的年份是1600,该年份因为能被400整除所以是闰年。
【例题4】编写程序,要求从键盘接收两个数,按从大到小的顺序输出
这实际就是前面的例题2,但因为我们学习了双分支控制结构,所以程序的编写思路可以简化为:当x大于y时输出x,y,当x不大于y时输出y,x就可以了,程序如下:
x=eval_r(input("请输入第一个数:"))
y=eval_r(input("请输入第二个数:"))
if
else:
这段程序和前面的运行结果是相同的。但请注意输入上面的程序代码时别忘记两处冒号和四条输出语句的缩进。
3、多分支选择结构
【例题5】从键盘输入一个(0-100之间)的考试分数,输出考试等级,分数为90以上(以为含90)为优秀,80-89之间为良好,60-79的为中等,60以下为不及格。程序如下:
x=int(input("请输入一个0-100之间的考试分数:"))
if
elif
x>=80
elif
else:
程序的运行结果如下图所示。
注意:上面的条件也可简化成如下的形式:
x=int(input("请输入一个0-100之间的考试分数:"))
if
elif x>=80
elif
else:
但这样简化后,如果不小心将其中某两个elif语句的位置互换,则结果就会出错,请思考为什么。比如写成如下形式,运行时就会出现错误的结果,如果是前面的形式,则颠倒其中的任何两个条件连同语句块就不会出错。
x=int(input("请输入一个0-100之间的考试分数:"))
if
elif
elif x>=80
else:
4、分支语句的嵌套使用
我们学习了三种分支结构的控制语句,这些语句都可以嵌套使用,也就是if语句中的各分支中的语句块可以包含另一个分支语句。如下面代码所示,其中右侧代码是在左侧程序添加了红框后的结果,主要是为了看清各语句块的层次关系。
上面的代码,实际只是一条if
如果最外面的条件x>=0不满足,则执行语句块2,语句块2内部也含有另一个if
上面的各逻辑关系完全是靠左边界的缩进量来标识的。因此一定要熟悉这一标识方法。、
下面我们对上面的代码做一个练习:
1)如果x=10.请用线标出上面哪些语句会被执行到,分析上面代码执行后的x值是多少?
2)如果x=0. 请用线标出上面哪些语句会被执行到,分析上面代码执行后的x值是多少?
3)如果x=-10. 请用线标出上面哪些语句会被执行到并分析上面代码执行后的x值是多少?
4)如果x=-2. 请用线标出上面哪些语句会被执行到,分析上面代码执行后的x值是多少?
下面红线标出的同段代码是各种x值下执行到的语句。最下面的蓝色print语句是为了输出 x值而添加的,否则x值计算完毕并不显示。
注意:(1)上面的最后一条语句必须和最外层的if else左对齐程序才不会出错。