Python学习交流-流程控制语句

Python学习交流-流程控制语句
做任何事情都要遵循一定的原则。例如,到图书馆去借书,就需要有借书证,并且借书证不能过期,这两个条件缺一不可。程序设计也是如此,需要利用流程控制实现与用户的交流,并根据用户的需求决定程序“做什么”“怎么做”。
流程控制对于任何一门编程语言来说都是至关重要的,它提供了控制程序如何执行的方法。如果没有流程控制语句,整个程序将按照线性顺序来执行,而不能根据用户的需求决定程序执行的顺序。我将对Python中的流程控制语句进行详细讲解。并且一口气讲完流程控制语句的所有内容,让大家有个完整的逻辑概念。
在这里插入图片描述
程序结构
计算机在解决某个具体问题时,主要有3种情形,分别是顺序执行所有的语句、选择执行部分语句和循环执行部分语句。程序设计中的3种基本结构为顺序结构、选择结构和循环结构。
在这里插入图片描述
其中,第一幅图是顺序结构的流程图,编写完毕的语句按照编写顺序依次被执行;第二幅图是选择结构的流程图,它主要根据条件语句的结果选择执行不同的语句;第三幅图是循环结构的流程图,它是在一定条件下反复执行某段程序的流程结构,其中,被反复执行的语句称为循环体,决定循环是否终止的判断条件称为循环条件。
选择语句
在生活中,我们总是要做出许多选择,程序也是一样。下面给出几个常见的例子:
如果购买成功,用户余额减少,用户积分增多。
如果输入的用户名和密码正确,提示登录成功,进入网站,否则,提示登录失败。
如果用户使用微信登录,则使用微信扫一扫;如果使用QQ登录,则输入QQ号和密码;
如果使用微博登录,则输入微博账号和密码;如果使用手机号登录,则输入手机号和密码。
以上例子中的判断,就是程序中的选择语句,也称为条件语句,即按照条件选择执行不同的代码片段。Python 中选择语句主要有3种形式,分别为if语句、if.else语句和if.elif…else 多分支语句。
1、最简单的if语句
Python中使用if保留字来组成选择语句,简单的语法格式如下:
在这里插入图片描述
其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如:a>b and a!=c),如果表达式为真,则执行“语句块”;如果表达式的值为假,就跳过“语句块”,继续执行后面的语句,这种形式的if语句相当于汉语里的关联词语“如果…就…”。
在这里插入图片描述
看过金庸的小说《射雕英雄传》的人,可能会记得,黄蓉与瑛姑见面时,曾出过这样一道数学题:
“今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?”
下面通过一个具体的实例来解决黄蓉给瑛姑所出难题中的第一个要素:判断一个数,除以三余二,除以五余三,除以七余二。
使用if语句判断用户输入的数字是不是黄蓉所说的除以三余二,除以五余三,除以七余二的数,代码如下:

# 输出问题描述
print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")

# 输入一个数
number = int(input("请输入您认为符合条件的数:"))

# 判断是否符合条件
if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
    # 输出符合条件的数和条件说明
    print(number, "符合条件:三三数之剩二,五五数之剩三,七七数之剩二")

在这里插入图片描述
2、if…else语句
如果遇到只能二选一的条件,例如,某大学毕业生到知名企业实习期满后留用,现在需要选择Python 开发的方向。
在这里插入图片描述
Python中提供了if…else语句解决类似问题,其语法格式如下:
在这里插入图片描述
使用if.else 语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式,如果满足条件,则执行if后面的语句块,否则,执行else后面的语句块,这种形式的选择语句相当于汉语里的关联词语“如果…否则…”。
在这里插入图片描述
if…else语句可以使用条件表达式进行简化,如下面的代码:

a = -9

if a > 0:
    b = a
else:
    b = -a

print(b)

可以简写成:

a = -9
b = a if a > 0 else -a

print(b)

上段代码主要实现求绝对值的功能,如果a>0,就把a的值赋值给变量b,否则将-a赋值给变量b。使用条件表达式的好处是可以使代码简洁,并且有一个返回值。
下面增加功能:如果输入的数不符合条件,则给出相应的提示。
使用if…else语句判断输入的数字是不是黄蓉所说的除以三余二,除以五余三,除以七余二的数,并给予相应的提示,代码如下:

# 输出问题描述
print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")

# 输入一个数
number = int(input("请输入瑛姑给出的数:"))

# 判断是否符合条件
if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
    # 输出符合条件的数
    print(number, "符合条件")
else:
    # 不符合条件
    print(number, "不符合条件")

在这里插入图片描述
在这里插入图片描述
3、if…elif…else语句
大家平时在网上购物时,通常都有多种付款方式供大家选择。
在这里插入图片描述
以上提供了5种付款方式,这时用户就需要从多个选项中选择一个。在开发程序时,如果遇到多选一的情况,则可以使用if…elif…else语句,该语句是一个多分支选择语句,通常表现为“如果满足某种条件,就会进行某种处理,否则,如果满足另一种条件,则执行另一种处理…”。if…elif…else语句的语法格式如下:
在这里插入图片描述
使用if…elif…else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式,如果表达式为真,执行语句;而如果表达式为假,则跳过该语句,进行下一个elif的判断,只有在所有表达式都为假的情况下,才会执行else 中的语句。
在这里插入图片描述
注意:if 和elif都需要判断表达式的真假,而else则不需要判断;另外,elif 和 else都必须与if一起使用,不能单独使用。
使用if…elif…else 多分支语句实现根据用户输入的玫瑰花的朵数输出其代表的含义,代码如下:

# 输出关于玫瑰花的信息
print("在古希腊神话中,玫瑰集爱情与美丽于一身,所以人们常用玫瑰来表达爱情。")
print("但是不同朵数的玫瑰花代表的含义是不同的。\n")

# 获取用户输入的朵数,并转换为整型
number = int(input("输入您想送几朵玫瑰花,小默会告诉您含义:"))

if number == 1:
    # 判断输入的数是否为1,代表1朵
    # 如果等于1则输出提示信息
    print("1朵:你是我的唯一!")
elif number == 3:
    # 判断是否为3朵
    print("3朵:I Love You!")
elif number == 10:
    # 判断是否为10朵
    print("10朵:十全十美!")
elif number == 99:
    # 判断是否为99朵
    print("99朵:天长地久!")
elif number == 108:
    # 判断是否为108朵
    print("108朵:求婚!")
else:
    print("小默也不知道了!可以考虑送1朵、3朵、10朵、99朵或108朵呦!")

说明:第1行代码中的int()函数用于将用户的输入强制转换成整型。运行程序,输入一个数值,并按下键,即可显示相应的提示信息。
在这里插入图片描述
多教两招:
使用if选择语句时,尽量遵循以下原则:
(1)当使用布尔类型的变量作为判断条件时,假设布尔型变量为flag,较为规范的格式如下:
在这里插入图片描述
不符合规范的格式如下:
在这里插入图片描述
(2)使用“if1==a:”这样的书写格式可以防止错写成“ifa=1:”这种形式,从而避免逻辑上的错误。
4、if语句的嵌套
前面介绍了3种形式的if选择语句,这3种形式的选择语句之间都可以互相嵌套。在最简单的if语句中嵌套if…else语句,形式如下:
在这里插入图片描述
在if…else语句中嵌套if…else语句,形式如下:
在这里插入图片描述
说明:if选择语句可以有多种嵌套方式,开发程序时,可以根据自身需要选择合适的嵌套方式,但一定要严格控制好不同级别代码块的缩进量。
场景模拟:国家质量监督检验检疫局发布的《车辆驾驶人员血液、呼气酒精含量阙值与检验》中规定:车辆驾驶人员血液中的酒精含量小于20mg/100ml不构成饮酒驾驶行为;酒精含量大于或等于20mg/100m、小于80mg/100ml为饮酒驾车;酒精含量大于或等于80mg/100m1为醉酒驾车。现编写一段 Python 代码判断是否酒后驾车。

# 输出安全提示
print("\n为了您和他人的安全,严禁酒后开车!\n")

# 获取用户输入的酒精含量,并转换为整型
proof = int(input("请输入每100毫升血液的酒精含量:"))

# 判断酒精含量是否构成饮酒行为
if proof < 20:
    # 酒精含量小于20毫克,不构成饮酒行为
    print("\n您还不构成饮酒行为,可以开车,但要注意安全!")
else:
    # 酒精含量大于或等于20毫克,已经构成饮酒驾车行为
    if 80 > proof >= 20:
        # 酒精含量大于或等于20毫克且小于80毫克,达到饮酒驾驶标准
        print("\n已经达到饮酒驾驶标准,请不要开车!")
    else:
        # 酒精含量大于或等于80毫克,已经达到醉酒驾驶标准
        print("\n已经达到醉酒驾驶标准,千万不要开车!")

在上面的代码中,应用了if语句的嵌套。
在这里插入图片描述
运行程序,当输入每100毫升酒精含量为10毫克时,将显示不构成饮酒行为;当输入酒精含量为90毫克时,将显示已经达到醉酒驾驶标准。
在这里插入图片描述
条件表达式
在程序开发时,经常会根据表达式的结果,有条件地进行赋值。例如,要返回两个数中较大的数,可以使用下面的if语句:
在这里插入图片描述
针对上面的代码,可以使用条件表达式进行简化,代码如下:
在这里插入图片描述
使用条件表达式时,先计算中间的条件(a>b),如果结果为True,返回if语句左边的值,否则返回else右边的值。例如上面表达式中r的值为10。
说明:Python中提供的条件表达式,可以根据表达式的结果进行有条件的赋值。
循环语句
日常生活中很多问题都无法一次解决,如盖楼,所有高楼都是一层一层垒起来的。还有一些事情必须周而复始地运转才能保证其存在的意义,如公交车、地铁等交通工具必须每天往返于始发站和终点站之间。类似这样反复做同一件事的情况,称为循环。循环主要有两种类型:
重复一定次数的循环,称为计次循环,如 for循环。
一直重复,直到条件不满足时才结束的循环,称为条件循环。只要条件为真,这种循环会一直持续下去,如while循环。
1、while循环
while循环是通过一个条件来控制是否要继续反复执行循环体中的语句。语法如下:
在这里插入图片描述
说明:循环体是指一组被重复执行的语句。
当条件表达式的返回值为真时,则执行循环体中的语句,执行完毕后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环。
在这里插入图片描述
我们用现实生活中的例子来理解 while循环的执行流程。在体育课上,体育老师要求同学们沿着环形操场跑圈,要求当听到老师吹的哨子声时就停下来。同学们每跑一圈,可能会请求一次老师吹哨子。如果老师吹哨子,则停下来,即循环结束,否则继续跑步,即执行循环。
下面通过一个具体的实例来解决前面给出的射雕应用场景中的第二个要素:依次尝试符合条件的数,此时,需要用到第一个要素确定是否符合条件。
使用 while循环语句实现从1开始依次尝试符合条件的数,直到找到符合条件的数时,才退出循环。具体的实现方法是:首先定义一个用于计数的变量number 和一个作为循环条件的变量none(默认值为真),然后编写 while 循环语句,在循环体中,将变量 number的值加1,并且判断 number的值是否符合条件,当符合条件时,将变量none设置为假,从而退出循环。具体代码如下:

# 输出数学题目
print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")

# 作为循环条件的变量
none = True
# 计数的变量
number = 0

while none:
    number += 1  # 计数加1
    
    if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
        # 判断是否符合条件
        print("答案是:", number)
        none = False  # 将循环条件的变量赋值为否

在这里插入图片描述
2、for循环
for循环是一个依次重复执行的循环。通常适用于枚举或遍历序列,以及迭代对象中的元素。语法如下:
在这里插入图片描述
其中,迭代变量用于保存读取出的值;对象为要遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串、列表和元组等;循环体为一组被重复执行的语句。
在这里插入图片描述
我们用现实生活中的例子来理解 for循环的执行流程。在体育课上,体育老师要求同学们排队进行踢毽球测试,每个同学一次机会,毽球落地则换另一个同学,直到全部同学都测试完毕,即循环结束。
1.进行数值循环
在使用 for循环时,最基本的应用就是进行数值循环。例如,想要实现从1到100的累加,可以通过下面的代码实现:

# 输出数学题目
print("计算1+2+3+....+100的结果为;")

result = 0  # 保存累加结果的变量

for i in range(101):
    result += i  # 实现累加功能

print(result)  # 在循环结束时输出结果

在上面的代码中,使用了range()函数,该函数是Python内置的函数,用于生成一系列连续的整数,多用于 for循环语句中。其语法格式如下:
在这里插入图片描述
参数说明:
start:用于指定计数的起始值,可以省略,如果省略则从0开始。
end:用于指定计数的结束值(但不包括该值,如range(7),则得到的值为0~6,不包括7),不能省略。当range()函数中只有一个参数时,即表示指定计数的结束值。
step:用于指定步长,即两个数之间的间隔,可以省略,如果省略则表示步长为1。例如,rang(1,7)将得到1、2、3、4、5、6。
注意:在使用range()函数时,如果只有一个参数,那么表示指定的是end;如果有两个参数,则表示指定的是start 和 end;如果3个参数都存在时,最后一个参数才表示步长。
下面通过一个具体的射雕场景实例来演示for循环语句进行数值循环的具体应用。
使用 for循环语句实现从1循环到100(不包含100),并且记录符合黄蓉要求的数。具体的实现方法是:应用 for循环语句从1迭代到99,在循环体中,判断迭代变量 number是否符合“三三数之剩二,五五数之剩三,七七数之剩二”的要求,如果符合则应用 print()函数输出,否则继续循环。具体代码如下:

# 输出数学题目
print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")

for number in range(100):
    if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
        # 判断是否符合条件
        print("答曰:这个数是", number)
        # 输出符合条件的数

2.遍历字符串
使用 for循环语句除了可以循环数值,还可以逐个遍历字符串,例如,下面的代码可以将横向显示的字符串转换为纵向显示:

string = '不要再说我不能'
print(string)  # 横向显示

for ch in string:
    print(ch)  # 纵向显示

在这里插入图片描述
说明:for循环语句还可以用于迭代(遍历)列表、元组、集合和字典等。
循环嵌套
在 Python中,允许在一个循环体中嵌入另一个循环,这称为循环嵌套。例如,在电影院找座位号,需要知道第几排第几列才能准确找到自己的座位号,假如寻找第二排第三列座位号,首先寻找第二排,然后在第二排再寻找第三列,这个寻找座位的过程就类似循环嵌套。
在这里插入图片描述
在 Python中,for循环和 while循环都可以进行循环嵌套。例如,在while循环中套用while循环的格式如下:
在这里插入图片描述
在 for循环中套用 for循环的格式如下:
在这里插入图片描述
在 while循环中套用 for循环的格式如下:
在这里插入图片描述
在 for循环中套用while循环的格式如下:
在这里插入图片描述
使用嵌套的 for循环打印九九乘法表,代码如下:

for i in range(1, 10):
    # 输出9行
    for j in range(1, i + 1):
        # 输出与行数相等的列
        print(str(j) + "x" + str(i) + "=" + str(i * j) + "\t", end='')
    print("")  # 换行

代码注解:本实例的代码使用了双层for循环,第一个循环可以看成是对乘法表行数的控制,同时也是每一个乘法公式的第二个因数;第二个循环控制乘法表的列数,列数的最大值应该等于行数,因此第二个循环的条件应该是在第一个循环的基础上建立的。
在这里插入图片描述
在这里插入图片描述
跳转语句
当循环条件一直满足时,程序将会一直执行下去,就像一辆迷路的车,在某个地方不停地转圈。如果希望在中间离开循环,也就是for循环结束重复之前,或者 while循环找到结束条件之前。有两种方法来做到:
使用continue语句直接跳到循环的下一次迭代。
使用 break 完全中止循环。
1、break 语句
break 语句可以终止当前的循环,包括 while 和 for在内的所有控制语句。以独自一人沿着操场跑步为例,原计划跑10圈。可是在跑到第2圈的时候,遇到自己的女神或者男神,于是果断停下来,终止跑步,这就相当于使用了 break 语句提前终止了循环。break 语句的语法比较简单,只需要在相应的while或for语句中加入即可。
说明:break语句一般会结合if语句进行搭配使用,表示在某种条件下,跳出循环。如果使用嵌套循环,break语句将跳出最内层的循环。
在 while 语句中使用 break 语句的形式如下:
在这里插入图片描述
其中,条件表达式2用于判断何时调用 break语句跳出循环。在 for语句中使用 break语句的形式如下:
在这里插入图片描述
其中,条件表达式用于判断何时调用 break语句跳出循环。
在这里插入图片描述
在这里插入图片描述
用for循环改进射雕案例:

# 输出数学题目
print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")

for number in range(100):
    if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:
        # 判断是否符合条件
        print("答曰:这个数是", number)
        # 输出符合条件的数
        break  # 跳出for循环

2、continue语句
continue 语句的作用没有break 语句强大,它只能终止本次循环而提前进入到下一次循环中。仍然以独自一人沿着操场跑步为例,原计划跑步10圈。当跑到第2圈一半的时候,遇到自己的女神或者男神也在跑步,于是果断停下来,跑回起点等待,制造一次完美邂逅,然后从第3圈开始继续。
continue 语句的语法比较简单,只需要在相应的 while或 for语句中加入即可。说明:continue语句一般会与if语句搭配使用,表示在某种条件下,跳过当前循环的剩余语句,然后继续进行下一轮循环。如果使用嵌套循环,continue语句将只跳过最内层循环中的剩余语句。在 while 语句中使用 continue 语句的形式如下:
在这里插入图片描述
其中,条件表达式2用于判断何时调用continue语句跳出循环。。
在 for语句中使用 continue 语句的形式如下:
在这里插入图片描述
其中,条件表达式用于判断何时调用continue语句跳出循环。
在这里插入图片描述
在这里插入图片描述
场景模拟:几个好朋友一起玩逢七拍腿游戏,即从1开始依次数数,当数到尾数是7的数或7的倍数时,则不报出该数,而是拍一下腿。现在编写程序,从1数到99,假设每个人都没有出错,计算一共要拍多少次腿。
通过在 for循环中使用 continue 语句实现计算拍腿次数,即计算从1到100(不包括100),一共有多少个尾数为7或7的倍数这样的数,代码如下:

total = 99  # 记录拍腿次数的变量

for number in range(1, 100):
    # 创建一个从1到100(不包括)的循环
    if number % 7 == 0:
        # 判断是否为7的倍数
        continue  # 继续下一次循环
    else:
        string = str(number)
        # 将数值转换为字符串
        if string.endswith('7'):
            # 判断是否以数字7结尾
            continue  # 继续下一次循环
        
        total -= 1  # 可拍腿次数减一

print("从1数到99共拍腿", total, "次。")
# 显示拍腿次数

pass空语句
在 Python 中还有一个 pass语句,表示空语句。它不做任何事情,一般起到占位作用。例如,在应用 for循环输出1~10之间(不包括10)的偶数时,在不是偶数时,应用 pass语句占个位置,方便以后对不是偶数的数进行处理。代码如下:

for i in range(1, 10):
    if i % 2 == 0:
        # 判断是否为偶数
        print(i, end=' ')
    else:
        # 不是偶数
        pass  # 占位符,不做任何事情

这次介绍了选择语句、循环语句、break语句、continue 跳转语句及 pass 空语句的概念及用法。在程序中,语句是程序完成一次操作的基本单位,而流程控制语句是用于控制语句的执行顺序的,大家要重点掌握if语句、while语句和for语句的用法,这几种语句在程序开发中会经常用到。

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值