【Python】第3章 Python的基本流程控制
景行时光
2025年04月15日 18:00
收录于文集
共217篇

基本语句及顺序结构

1 基本语句

1.赋值语句

用赋值号(=)将右边的值(表达式)赋给左边变量的语句。

name=’李福’

age=18

2.复合型赋值语句

用复合运算符(包括算术复合运算符和位复合运算符)的赋值语句。

序列赋值:x,y=10,20

多目标赋值:x=y=10

复合赋值:c+=a

2 顺序结构

程序工作的一般流程为:数据输入、运算处理、结果输出。顺序结构是指为了解决某些实际问题,自上而下依次执行各条语句,其流程图如下:

选择结构

1 if语句

Python中使用if保留字来组成选择语句。if语句仅处理条件成立的情况,其流程图如下:

if语句由if关键字、条件表达式和代码块三部分组成,它根据表达式的判断结果选择是否执行相应的代码块。

if 表达式:

语句块

if关键字可以理解为“如果”,当条件表达式的值为True时,则执行代码块。

if语句使用过程中的常见错误:

(1)if语句后面未加冒号。

(2)使用if语句时,如果在符合条件时,需要执行多个语句,但是,在第二个输出语句的位置没有缩进。

2 if-else语句

如果遇到只能二选一的条件,例如,大学毕业是直接就业,还是考研深造。Python中提供了if…else语句解决类似问题:

if-else语句产生两个分支,如果if条件表达式结果为True,则执行代码块1;如果条件表达式结果为False,则执行代码块2。

if 表达式:

语句块1

else:

语句块2

3 if…elif…else语句

if…elif…else语句主要用于处理多种条件的情况,从而解决现实生活中复杂的多重选择问题,其流程如下:

若条件表达式1的结果为True,则执行代码块1;若条件表达式2的结果为True,则执行代码块2,若else前面的条件表达式结果都为False,执行代码块n。

if 表达式1:

语句块A

elif 表达式2:

语句块B

elif 表达式3:

语句块C

课堂练习:BMI

身体质量指数,BMI(Body Mass Index )指数,简称体质指数,是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。

计算公式:BMI=体重(千克)/身高^2(米)

BMI<18.5 体重偏轻

18.5<=BMI<=23.9 正常体重范围

BMI>23.9 体重超重

根据要求,输入体重和身高,计算出BMI的值并给出相应提示。

如果只考虑一种表达式成立或不成立的结果(即没有elif分支),则多分支的if结构转化为双分支的if结构。

在使用分支结构时,需要注意以下事项:

1.表达式可以是任意类型,如5>3,x and y>z,3,0等。其中,3表示恒真(即True),而0表示恒假(即False)。

2.可以仅有if子句构成单分支结构,但是else子句必须与if子句配对,不能出现仅有else子句没有if子句的情况。

4 分支语句嵌套

当有多个条件需要满足并且条件之间有递进关系时,可以使用分支语句的嵌套。其中,if子句、elif子句以及else子句中都可以嵌套if语句或者if…elif…else子句。

书写格式:

嵌套的if语句要求以锯齿形缩进格式书写,以便分清层次关系。

【例3-9】我国的婚姻法规定,男性22岁为合法结婚年龄,女性20岁为合法结婚年龄。因此如果要判断一个人是否到了合法结婚年龄,首先需要使用双分支结构判断性别,再用递进的双分支结构判断年龄,并输出判断结果。

sex=input("请输入您的性别(M或者F):")  

age=int(input("请输入您的年龄(1~20):"))

if sex=='M':

  if age>=22:

     print("到达合法结婚年龄")

  else:

     print("未到合法结婚年龄")

else:

  if age>=20:

     print("到达合法结婚年龄")

   else:

     print("未到合法结婚年龄")

运行结果:

请输入您的性别(M或者F):F

请输入您的年龄(1~20):28

到达合法结婚年龄

循环结构

循环问题滲透在日常生活的方方面面,例如,学生上学,每天从宿舍到教室,往返于这两个点。类似这样反复做同一件事的情况,称为循环。

计次循环

重复一定次数的循环,称为计次循环

如for循环

条件循环

一直重复,直到条件不满足时才结束的循环

while循环

1 while语句

while循环是通过一个条件来控制是否要继续反复执行循环体中的语句。While语句用于在满足循环条件时重复执行某件事情,其流程如下

当表达式的值为真时,执行相应的语句块(循环体),然后再判断表达式的值,如果为真,则继续执行语句块;当表达式的值为假时,检查其后面是否有else子句,如果有,则执行else子句;如果没有,则直接跳出while语句

while 条件表达式:

循环体

【例3-12】将“不忘初心”输出3次。

i=1

while i <= 3:

   print("不忘初心")

   i=i+1

运行结果:

不忘初心

不忘初心

不忘初心

在使用while语句时,需要注意以下事项:

① while语句的表达式可以是任意类型,如x!=y,x>3等。

② 循环体中的语句块有可能一次也不执行。

③ 语句块可以是一条或多条语句。

④程序中需要包含使循环结束的语句。

2 for语句和range()内建函数

for循环语句是一个计次循环,通常适用于枚举或遍历序列,以及迭代对象中的元素。 一般应用在循环次数己知的情况下。

迭代变量用于保存读取出的值:对象为要遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串、列表和元组等;循环体为一组被重复执行的语句

for 迭代变量 in 对象:

循环体

1.进行数值循环

利用数值循环输出3遍“不忘初心”:

for i in [1,2,3]:

   print("不忘初心")

for循环常与内置函数range()函数搭配使用,以控制循环中代码段的执行次数。该函数语法格式为:

语法格式如下:range(start, end, step)。

【例】计算1+2+3+4+...+100的结果

print("计算1+2+3+4+...+100的结果为:")

result = 0

for i in range(1,101,1):

  result += i

print(result)

运行结果:

计算1+2+3+4+...+100的结果为:

5050

2. 遍历字符串

【例】以遍历方式计算出“黑化肥发灰会挥发;灰化肥挥发会发黑”中“发”在字符串中出现的次数。

word = '黑化肥发灰会挥发;灰化肥挥发会发黑'

sum = 0

for letter in word:

  if letter == '发':

     sum += 1

print(sum)

运行结果:

4

3. 迭代对象

从理论上来说,循环对象和for循环调用之间还有一个中间层,该层将循环对象转换可迭代对象。这一转换通过使用iter()函数实现。但从逻辑层面上,常常可以忽略这一层,所以循环对象和可迭代对象常常相互指代对方。

3 循环语句嵌套

在Python中,允许在一个循环体中嵌入另一个循环,这称为循环嵌套。它在Python中,for循环和while循环都可以进行循环嵌套。

while循环中可以嵌套while循环

while 条件表达式1:

    代码块1

    ......

    while 条件表达式2:

      代码块2

......

for循环也可以嵌套使用

for 临时变量 in 可迭代对象:

   代码块1

   for 临时变量 in 可迭代对象:

     代码块2

【例】编写程序,使用双重循环输出九九乘法表。

for i in range(1,10):

   for j in range(1,i+1):

     d = i * j

     print('%d*%d=%-2d'%(j,i,d),end = ' ' )

   print()

百钱百鸡

公鸡5钱1只,母鸡3钱1只,小鸡3只1钱,100钱买100只鸡有几种方案?

鸡兔同笼

现有鸡兔同笼,从上数35个头,从下数94只脚,问笼中有多少只鸡和兔?

转移和中断语句

当循环条件一直满足时,程序将会一直执行下去。如果希望在中间离开循环,也就是for循环结束计数之前,或者while循环找到结束条件之前。有两种途径来做到:

使用break语句完全中止循环。

使用continue语句直接跳到下一次循环

1 break语句

break语句用于跳出离它最近一级的循环。

1.在while语句中使用break语句

while 条件表达式1:

执行代码

if 条件表达式2:

break

2.在for语句中使用break语句

for 迭代变量 in 对象:

if 条件表达式:

break

2 continue语句

continue语句用于跳出当前循环,继续执行下一次循环。

1.在while语句中使用continue语句

while 条件表达式1

执行代码

if 条件表达式2

continue

2.在for语句中使用break语句

for 迭代变量 in 对象:

if 条件表达式:

continue

当执行到continue语句时,程序会忽略当前循环中剩余的代码,重新开始执行下一次循环。

3 pass语句

pass语句,表示空语句。它不做任何事情,一般起到占位作用。

【例】在应用for循环输出10〜20 (不包括20)的偶数时,在不是偶数时,应用pass语句占个位置,方便以后对不是偶数的数进行处理。

for i in range(10,20):

   if i%2 == 0:

     print(i,end=' ')

  else:

     pass

运行结果:

10 12 14 16 18

while...else与for...else语句

与别的编程语言不一样的是python还支持这样的语法:while...else与for...else语句。

只要没有break或者return,不管while是否执行,都会执行else语句(continue也是可以执行else)。

1 while...else语句

while...else类似于if...else,在python中while只要遇到了else就会意味到这个条件已经不在while循环运行了。

【例】编写程序,随机产生骰子的一面(数字1~6),给用户三次猜测机会,程序给出猜测提示(偏大或偏小)。如果某次猜测正确,则提示正确并中断循环;如果三次均猜错,则提示机会用完。

import random

point = random.randint(1,6)

count = 1

while count <= 3:

  guess = int(input("请输入您的猜测:"))

  if guess > point:

    print("您的猜测偏大")

  elif guess < point:

    print("您的猜测偏小")

  else:

    print("恭喜您猜对了")

    break

  count = count+1

else:

  print("很遗憾,三次全猜错了!") 

运行结果:

请输入您的猜测:23

您的猜测偏大

请输入您的猜测:1

您的猜测偏小

请输入您的猜测:3

您的猜测偏小

很遗憾,三次全猜错了!

2 for...else语句

else子句作用是for循环中if条件一直不满足,则最后就执行else语句。在for循环中加break后,循环会在if条件满足时退出,后面的else语句不执行。

【例】for...else语句应用示例,猜年龄游戏,通过输入一个年的年龄,然后判断是猜大了还是猜小了。若超过3次,提示“对不起,次数到了!”。

age_old_boy = 60

for i in range(3):

  guess_age = int(input("请输入年龄:"))

  if guess_age == age_old_boy:

    print("猜对了!")

    break

  elif guess_age > age_old_boy:

    print("猜大了!")

  else:

    print("猜小了!")

else:

  print("对不起,次数到了!")

运行结果:

请输入年龄:28

猜小了!

请输入年龄:56

猜小了!

本章小结

本章详细介绍了选择结构语句、循环结构语句、break和continue跳转语句以及pass语句的概念及用法。在程序中,语句是程序完成一次操作的基本单位,而流程控制语句是用于控制语句的执行顺序。要重点掌握if语句、while 语句和for语句的用法。

思考与练习

1.有一个三位整数,请你逆序输出它的各位数字。比如123输出为321。

2.设计一个温度换算器,实现华氏度、摄氏度、开氏度之间的相互转换。其中,摄氏度 = (华氏度 - 32) / 1.8;华氏度 = 摄氏度*1.8 + 32;开氏度 = 摄氏度 + 273.15 。

3.输入一个整数,判断如果是奇数则显示奇数,否则显示偶数。

4.输入一个整数,如果是整数则打印“正数”;如果是负数则打印“负数”;如果是零则打印“零”。

5.输入出生年和月,然后计算出接下来的生日距离今天还有多少天。

6.输入一个年份,如果是闰年 则显示闰年,否则显示平年。

7.设计一个收款程序,如果金额不足,提示还差多少钱;如果金额够,提示应找回多少钱。其中,如果总金额到达100元,打九折。

8.输入一个季度,首先判断是否在1~4之间,然后判断该季度有哪几个月份,并显示该季度中的月份。

9.输入一个月份,首先判断是否在1~12之间,然后判断返回该月份的天数。

10.输入两个整数,一个作为开始值,一个作为结束值,然后输出中间的数字。

11.编写随机加法考试程序。要求是随机产生两个数字,相加结果,总共10道题。如果输入正确成绩累加2分,如果输入错误成绩扣除5分。

12.应用continue语句,计算累加1~100 之间能被3 整除的整数和。