前言
Python流程控制是Python编程中非常重要的一部分,它用于控制程序的执行流程。Python提供了多种流程控制语句,包括if语句、while循环、for循环、break和continue语句等。
一:if语句
if语句用于根据条件执行不同的代码块。condition是一个布尔表达式,后面一定要加冒号,这是python语法规定。if语句后面的条件表达式是可以加括号的,但并不是必须的。使用括号可以使代码更加清晰易懂,特别是在复杂的条件表达式中。然而,括号并不是语法要求,可以根据个人编码风格和团队约定进行选择。
1:if语句的语法及应用示例
if语句用于判断某个条件是否成立。如果成立,则执行语句内的程序;否则跳过if语句,执行后面的内容,语法格式如下:
示例1:使用if语句来判断一个数是否为正数
示例2:接受学生的考试成绩,使用if语句判断。如果成绩大于等于60分,输出合格
示例2中,通过变量score保存键盘输入的成绩80。当if语句判断当成绩大于等于60时,输出“合格”。在python3中,input方法默认返回为str类型。如果想要输出int类型就要改变输出类型为int。
2:条件表达式与关系运算符
使用if语句时,后面要用到条件表达式和关系运算符,它们可以经过运算得到布尔值。如前面示例的score>=60就是一个使用关系运算符“>=”的条件表达式,表示:如果score大于等于60,则表达式的结果是True(真);否则为False(假)。条件表达式语法如下:
操作数 关系运算符 操作数
关系运算符的前后2个数值,条件表达式的计算结果是布尔值。
示例3:关系运算符的运算结果
条件表达式10==9是判断“==”运算符左右两侧的数值是否相等。因为10不等于9,所以,10==9运算结果是False。
条件表达式10!=9是判断“!=”运算符左右两侧的数值是否不相等,因为10不等于9,所以运算结果是True
2.1 if-else条件语句
if语句还可以加上else关键字,根据条件判断,决定执行不同的语句块。当条件为真时,执行语句块1.为假时,执行语句块2,语法如下:
if 条件表达式
语句块1 else:
语句块2
示例4:接收学生的考试成绩,使用if语句判断。如果考试成绩大于等于60分,输出“合格”;否则,输出“需要努力”
2.2 多重if语句
使用if-else语句通过条件判断使程序有2条执行路径,但有时还需要更多条路径进行处理,这时可以加入elif关键字处理。语法:
if 条件表达式1:
语句块1
elif条件表达式2:
语句块2
elif条件表达式3:
语句块3
......
else:
语句块
当条件1成立时,执行条件1对应的语句块1。成立的条件会执行对应语句块。前面条件都不成功时,执行else对应的语句块。
示例5:接收学生考试成绩。如果考试成绩大于等于90分,则输出“优秀”。如果考试成绩小于90分且大于等于70分,则输出良好。如果成绩小于70分且大于等于60分,则输出“合格”。如果考试成绩小于60分,则输出“需要努力”
使用键盘输入不同的值,执行了不同的语句块,输出不同的结果。if语句中,else关键字是可选项,可以有也可以没有。
2.3if语句的常见问题
(1)使用if-elif-else语句时,容易出现逻辑错误
因为条件是由上向下判断,如果条件成立,下面的条件判断将不再执行。
(2)if语句中,语句块没有缩进也是容易犯的错误
错误示例:
编写代码时,要保证同级语句缩进的空格必须绝对一致。即使只有一个空格的差别,它们已经表示不同的语句块了。
错误示例:
第二条输出语句比第一条多了1个空格,执行时会报错
(3)从其他程序设计语言转为Python的程序员,由于习惯经常会忘记表达式后面的冒号。
2.a Python的循环
2.a.1 while循环
1.while循环语句
循环的条件表达式后面也要使用冒号,然后缩进循环操作语句。while语句是先判断后执行。即:先判断条件表达式是否成立,如果条件表达式的值为True,则执行循环操作语句。如果其值为False,则跳出循环,执行while语句后面的语句
示例6:当count值小于正整数5时,执行加1操作。当count小于5时,输出count的值
示例7:输入5门课程的考试成绩,计算平均分并输出
字符串的格式化是将若干值插入带有“%”替换符的字符串中,从而可以动态地输出字符串
2.Python的注释
注释便于日后阅读和修改代码。Python中使用“#”开头表示注释,可以在代码中添加注释。
示例8:添加了注释的Python代码,输入5门课程的考试成绩,计算平均成绩
对于“#+空格”开头的文字,python解释器不会做任何处理。而代码中的注释,可以提高代码的可读性。
python注释有两种用法。一是,在开头就使用“#”的称为单行注释;二是,紧随同行代码,以“#”开头的称为内行注释。
3.字符串的格式化输出
字符串中的“&d”,表示插入的是一个整列数据,%s格式化字符串,%f格式化浮点数字,字符串后面的“% i”表示获取变量i的值
示例9:常用替代符的使用情况
字符串中使用对应的替代符,把相应的变量插入到了相应的位置
字符串中还可以使用多个替代符,对应的变量使用元组即可,示例如下:
使用时要注意替代符和变量的顺序,位置不能放错;否则可能会出现类型不匹配的问题
还可以使用字典格式化多个值,示例如下:
因为字典是无序的,所以使用字典时通过键获得与之对应的值
4.while循环嵌套
示例10:使用while语句分别接收2名学生的5门课程考试成绩,计算并输出每个人的平均成绩
外层的while语句用于输入学生名字,用变量j控制循环次数,共两次
内层的while语句用于输入5门成绩,用变量i控制,也就是在外层循环输入一个名字后,需要输入5门成绩,然后输出这名学生的成绩平均值,一共可以输入2名学生
2.b for循环
for语句是另一种用于控制循环结构的方式。Python的while是使用条件判断执行循环,而for是使用遍历元素的方式进行循环
1.for循环的几种方式
(1)for循环可以对字符串进行遍历,逐个获得字符串的每个字符
示例:
(2)for循环可以对列表和元组进行遍历
取值列表也可以用元组
(3)需要循环操作相同的内容时,可以用for循环和range()函数结合使用,先看看range()函数的作用,示例:
list(range(0,5,2)) 表示列表值0到5(不包含5),间隔为2,即:0、2、4
2.for循环示例
示例:接收某个学生三门课程的考试成绩,计算输出平均成绩
3.逻辑运算符
python的逻辑运算符
and 逻辑与 如果两个操作数都为True,则表达式值为True
or 逻辑或 如果两个操作数中有一个为True,则表达式值为True
not 逻辑非 求反运算,如果操作数值为True,则表达式值为False,
如果操作数值为False,则表达式值为rue
示例:
not 是求反运算,所以notTrue的结果是False;
and 是与运算,只要有一个值是False,结果就是False,所以(True and False)的结果是 False
or 是或运算,只要有一个值是rue,结果就是True,所以(TrueorFalse)的结果是True。
下面对成绩做一个有效性判断:
4.for循环嵌套
示例:使用for语句分别接收2名学生的5门课程考试成绩,计算并输出每个人的平均成绩
在for循环中嵌套while循环
2.c.循环控制
使用while和for语句执行循环操作时,有可能需要改变循环的正常执行顺序,这时就需要用循环控制语句实现,循环控制语句有break和continue
1.break语句
在循环语句块中使用break语句,可以跳出整个循环
示例:对输出平均成绩的代码进行修改,当成绩无效时,使用break退出循环
break只和一个for循环对应,虽然有2层循环,但它只会结束离它最近的循环,这里就是第2层for循环。第2层循环结束后,接着执行后面的第12行和13 行代码,第1层的循环照常遍历执行,开始输入第2个学生“小张”的成绩。
2.continue语句
在 Python 中,continue 语句用于跳过当前循环中的剩余代码,并继续执行下一次循环。当continue语句被执行时,程序将立即跳转到循环的开头,而不执行continue 语句之后的代码。它通常用于条件判断内部,用来控制循环的执行流程。
示例 14:分别接收2个学生3门课程('Python','MySQL','Linux')的考试成绩,要求成绩的取值范围是大于等于 8且小于等于100;计算并输出每个学生的平均成绩,示例14代码如下
第1层使用的是for循环遍历学生,第2层使用while循环遍历成绩,使用continue 是跳到离它最近的循环的下一轮,也就是第2层的 while 循环的下一轮。因为执行continue后,第 13 行的 i= i+1 没有执行,而是重新又执行第6行的while 循环,所以就是对当前课程的成绩重新输入。当输入 MySQL的成绩为111时,提示数据有误,然后又提示需要重新输入 MySQL 成绩,代码更加健壮