条件表达式、分支语句、简单循环结构、break与continue语句、带else的循环语句、循环的嵌套

条件表达式


  • 控制语句(选择结构、循环结构)中会根据条件表达式的值来决定下一步的走向。
  • 被判定为False的值除了False以外,还有None、数值类型中的0值、空字符串、空元组、空列表、空字典、空列表等。
  • 条件表达式的值只要不是判定为False的值就认为判定为True,这样只要是Python合法的表达式都可以作为条件表达式,包含有函数调用的表达式也可以。
    • 例子:

      • 如何用条件表达式表示“性别sex为男且专业subiect是统计或数学”呢?
        • 将性别sex为男表示出来:sex==‘男’;
        • 将专业subiect是统计或数学表示出来:
          • 专业subject是统计:subject==’统计‘
          • 专业subject是数学:subject=='数学‘
          • 这两者是或者的关系,用or来连接,表示为:subject=='统计’or subject=='数学
        • 与性别sex为男之间的关系是并且的关系,用and来连接,表示为: sex==‘男’and(subject== 统计’or subject==数学’)
    • 还可以用in运算符表示为:sex==男’and subject in [‘统计’,‘数学’]

注意:

  • 条件表达式中不允许使用赋值运算符“=”,如果要判断是否相等,要使用关系运算符“==”。
  • 在Python表达式中乘号(*)不能省略。

分支结构控制语句


  • Python的分支控制语句根据条件表达式的判断结果为真(非零、非空)还是为假(零、空),选择运行程序的其中一个分支。
  • Python的分支结构控制语句主要有:
    • 单分支语句
    • 双分支语句
    • 多分支语句
    • 嵌套分支语句
    • 分支结构的三元运算
单分支if语句

在这里插入图片描述

  • if语句由四部分组成(关键字if、条件表达式、冒号、表达式结果为真(包括非零、非空)时要执行的语句体):

    • if 条件表达式:
      语句体
  • 单分支if语句先判断条件表达式值的是真还是假。

    • 如果为真(包括非零、非空),则执行语句体中的操作;
    • 如果为假(包括零、空),则不执行语句体中的操作。
  • 语句体既可以包含多条语句,也可以只由一条语句组成。当语句体由多条语句组成时,要有统一的缩进形式,否则可能会出现逻辑错误或导致语法错误。

  • 代码案例(求圆的周长和面积):

import math
r=eval(input("请输入半径"))

if r>0:
    #求周长
    d=2*math.pi*r
    #求面积
    s=math.pi*r*r
    print("圆的周长为:",d)
    print("圆的面积为:",s)
双分支if/else语句

在这里插入图片描述

  • 双分支if/else语句的语法形式如下所示:

    • if 条件表达式:
      语句体1
    • else:
      语句体2
  • if/else语句是一种双分支结构,先判断条件表达式值的真假:

    • 如果为真(包括非零、非空),则执行语句体1中的操作;
    • 如果为假(包括零、空),则执行语句体2中的操作。
  • 语句体1和语句体2既可以包含多条语句,也可以只由一条语句组成。

  • 代码案例(判断是不是闰年):

y=int(input('请输入年份:'))

if y%100==0 or (y%4==0 and y%100!=0):
    print(y,"是闰年")
else:
    print(y,"不是闰年")
多分支if/elif/else语句

在这里插入图片描述

  • 多分支if/elif/else语句的语法形式如下所示:

if条件表达式1:
语句体1
elif 条件表达式2:
语句体2

elif条件表达式n-1:
语句体n-1
else:
语句体n

  • 语句体1,语句体2,……,语句体n,既可以包含多条语句,也可以只由一条语句组成

  • 代码案例:

y=int(input('请输入年龄:'))
if y<18:
    print("青年人")
elif y<40:
    print("中年人")
else:
    print("老年人")
选择结构的嵌套

  • 在某一个分支的语句中,又嵌套新的分支语句,这种情况称为选择结构的嵌套。
y=int(input('请输入年龄:'))
if y>0:
    if y<18:
        print("青年人")
    elif y<40:
        print("中年人")
    else:
        print("老年人")
else:
    print("请输入一个大于0的数字")
选择结构的三元运算

在这里插入图片描述
在这里插入图片描述

pass语句

  • pass是一个空语句,不做任何事,一般只用作占位语句,是为了保持程序结构的完整性。在程序设计的过程中,我们可以用pass代替某些代码。
    在这里插入图片描述

循环结构控制语句


  • 循环结构实在给定的判断条件为真(包括非零、非空)时,重复执行某些操作:判断条件为假(包括零、空)时,结束循环。
  • Python语句中的循环结构包含两种语言,分别是while语句和for语句。
while语句

在这里插入图片描述

  • 简单的while语句结构如下:

  • while 条件表达式:
    循环体

  • 简单的while循环由关键字while、条件表达式、冒号、循环体构成。
    while语句的执行流程图如上图所示。其执行过程:

    1. 计算while关键词后面的条件表达式值;如果其值为真(包括非零、非空),则转步骤2,否则转步骤3:
    2. 执行完循环体,转步骤1:
    3. 循环结束。
  • 循环开始之前,如果while关键词后面的条件表达式为假(包括零、 空),则不会进入循环体,直接跳过循环部分。如果一开始while关 键词后面的条件表达式为真(包括非零、非空),则执行循环体;
    .每执行完一次循环体,重新计算while关键词后面的条件表达式值, 若为真,则继续执行循环体;循环体执行结束后重新判断while关键 词后面的条件表达式;直到该条件表达式的值为假(包括零、空),则结束循环。

  • 跟if语句比较,相同点和区别如下:

    • 相同点:两者都由表达式和冒号,以及缩进的语句体组成。并且都是在表过达式的值为真时执行语句体。
    • 不同点:if语句执行完语句体后,马上退出if语句。while语句执行完语句体不后,立刻又返回到条件表达式重新计算,只要条件表达式的值为真,它会一直重复复这一过程,直到条件表达式为假才结束循环。
    • while循环既可用于解决循环次数确定的问题,也可用于解决循环i次数不确定的问题。
  • 循环次数确定的问题是指循环开始之前可以预知循环即将将执行的次数。

  • 为了控制循环次数,通常在程序中设置一个计数变量,每每次循环,该变量进行自增或自减操作,当变量值自增到大于设定的上限值或者自减到小于设定的下限值时,循环结束。

  • 代码案例(计算并输出小于等于200的所有正偶数之和):

sumInt=0
count=1
while count<201:
    if count%2==0:
        sumInt=sumInt+count
    count+=count
print("1-200中的偶数和为:",sumInt)
  • 相关注意事项:
    • 组成循环体的各语句必须是以相同的格式缩进。
    • 循环体既可以由单个语句组成,也可以由多条语句组成。 如果语句尚未确定,可以暂时使用pass语句表示空操作," 但不能没有任何语句。
    • 循环体中要有语句改变某个变量的值,使得条件表达式团因为该变量值的改变而可能出现结果为假(包括零、空),从而能够导致循环终止,否则会造成无限循环。这个变量通常被称为循环控制变量。
    • Python对大小写敏感,关键字while必须小写。
for语句

在这里插入图片描述

  • for语句通过遍历一个序列(字符串、列表、元组)或迭代器等可迭代对象中的每个元素来建立循环。
  • for语句的语法形式如下所示:
  • 列或迭代器等可迭代对象:
    循环体
  • 循环开始时,for关键词后面的循环控制变量从in关键词后面的可迭代对复象中取值,如果没有取到值,则不进入循环;如果可迭代对象中有值可取,则取到最前面的值,接着执行循环体。循环体执行完成后,循环控制变量约继续取可迭代对象的下一个值,如果没有值可取了,则终止循环;否则取到下一个值后继续执行循环体:然后重复以上过程,直到可迭代对象中没有值可取,循环终止。
-用for循环遍历序列中的元素

  • 代码案例:
namelist=['wang','li','gaga','happy','555','666']
print("输出列表中的元素:",end=' ')
for i in namelist:
    print(i,end=' ')  #print语句结束时不是换行,而是添加一个空格
-用for循环遍历可迭代对象

  • Python 3开始,函数range返回可迭代对象。本节以遍历range将数返回的可迭代对象为例,讲解用for循环遍历可迭代对象。

  • range函数的语法格式如下:
    range(start,stop[,step])

  • 功能:

    • 产生一个从start开始(包括start),到stop结束(不包括stop),两个整数对象之间间隔step的可迭代对象。
  • 参数说明:

    • start:可迭代对象的开始值为start,默认是从0开始。例如range(6)等价于range(0,6);
    • end:可迭代对象到end结束,但不包括end。例如:range(0,6)产生包含0、1、2、3、4、5的可迭代对象,但没有6;
    • step:步长,表示所产生的可迭代对象元素之间的间隔,默认为1。例列如:range(0,6)等价于range(0,6,1)。步长也可以是负数,这时开始值大于结束值。
  • 用range函数产生的是一个可迭代的range对象,例如:

    • x=range(10)
      -print(x)
    • range(0,10)
    • type(x)
    • <class ‘range’>
  • range对象可以被转换成列表或元组,例如:

    • y=list(x)
    • y
    • [0,1,2,3,4,5,6,7,8,9]

    • z=tuple(x)
    • z
    • (0,1,2,3,4,5,6,7,8,9)
  • 可以用for循环直接遍历range函数产生的可迭代对象。例如:

    • for i in range(3,15,2)
    • print(i,end=' ')
    • 执行结果为:3 5 7 9 11 13

    • for i in range(15,3,-2)
    • print(i,end=' ')
    • 执行结果为:15 11 9 7 5 3
  • 代码案例:

namelist=['wang','li','gaga','happy','555','666']
print("输出列表中的元素:",end=' ')
p=len(namelist)
for i in range(p):
    print(namelist[i],end=' ')
	

break语句和continue语句


  • break语句可以用在while和for循环中。在循环进行过程中 ,可以通过break语句立即终止本层循环。如果break语句在具有两层循环嵌套的内层循环中,则只终止内层循环,进到外层循环的下一条语句继续执行。

  • continue语句可以用在while和for循环中。在循环体执行过程中,如果遇到continue语句,程序会跳过本次循环的循环"体剩余语句,回到循环开始的地方重新判断是否进入下一次循环。

  • break语句与continue语句的主要区别:

    • break语句一旦被执行,则整个当前循环将被终止;
    • continue语句的执行不会终止整个当前循环,只是提前结束本次循环,跳过循环体中本次循环的剩余语句,提前进入到下一次循环。
  • break语句案例(求一个自然数除了自身以外的最大约数):

num=int(input("请输入一个自然数:"))
count=num//2
while count>0:
    if num%count==0:
        break
    count=count-1
print(num,"的最大公约数为:",count)

在这里插入图片描述

带else的循环语句

  • python 中的while和for语句后面可以带有else语句块。
  • 带else的while语句语法如下:
    • while条件表达式:
      • 循环体
    • else:
      • else语句块

注意:

  • 当条件表达式为真(True、非空、非零)时,反复执行循首环体。当循环因为while后面的条件表达式为假(False、零、空)而导致循环终止(或无法进入循环),else语句块执 行一次,然后结束该循环结构。
  • 如果该循环是因为执行了循环体中的break语句而导致循环终止,else语句块不会执行,直接结束该循环结构。
  • 如果循环体中没有break语句,带else语句块的while循环执行流程可以用女如下左图表示。
  • 如果循环体中包含break语句,带else语句块的while循环执行流程可以用女如下右图表示。其中循环体1、break语句部分、循环体2共同构成循环体。
    在这里插入图片描述
  • 代码案例:
    • 代码要求:从键盘输入一个正整数n,用while循环找出小于等于该整数n且能被23整除的最大正整数。如果找到了,输出该整数;如果没有找到,则输出“未找到”
num=int(input("请输入一个自然数:"))
i=num
while i>0:
    if i%23==0:
        print("满足条件的数字为:",i)
        break
    i=i-1
else:
    print("未找到")
  • 带else的for语句语法如下:
    • for 变量 in 序列或迭代器等可迭代对象:
      • 循环体
    • else:
      • else语句块
  • 当变量能够从in后面的可迭代对象中取到值,则执行循环体。 循环体执行结束后,变量重新从可迭代对象中取值。
  • 当变量从in后面的可迭代对象中取不到新的值,则循环终止, else语句块执行一次,然后终止循环结构。
  • 当循环是因为循环体中执行了break语句而导致终止,则else话语句块不执行,直接终止循环结构。
  • 如果循环体中没有break语句,带else语句块的for循环执行流程可以人用如下左图表示;
  • 如果循环体中带有break语句,带else语句块的for循环执行流程可以以用如下右图表示。其中循环体1、break语句部分、循环体2共同构成循环体
    在这里插入图片描述
  • 代码案例:
num=[123,123,456,789,345,567,789]
for i in num:
    if i>600:
        print('第一个大于600的数字为:',i)
        break
else:
    print("未找到")

循环的嵌套


  • 循环的嵌套是指在一个循环中又包含另外一个完整的循环,即循环体中又包含循环语句。

  • 嵌套循环的执行的过程:

    • 先进入外层循环第1轮,然后执行完所有内层循环,
    • 接着进入外层循环第2轮,然后再次执行完内层循环,
    • 直到外层循环执行完毕。
  • While循环里面可以嵌套有while循环,for循环里面可以歌套有for循环。同时,while循环和for循环也可以相互嵌套。
    在这里插入图片描述

  • 如果break语句在具有两层循环嵌套的内层循环中,则只终止内层循环,然后进入到外层循环的下一条语句继续执行。

  • 代码案例(找出所有三位数的素数):

print("所有三位数的素数如下:",end=' ')
for i in range(100,1000):
    j=2
    flag=1
    while j<i:
        if i%j==0:
            flag=0
            break
        j=j+1
    if flag==1:
        print(i,end=" ")
  • 实际上,不管有多少层的循环嵌套,一个break语句的执行,只是终止以该break语句作为循环体,且从break语句往外层搜索离该break语句最近的while或for循环。

  • 在多层循环中,continue语句的作用范围与break语句类似。不管有多少层的循环嵌套,一个continue语句的执行,只是跳过continue语句所在本层循环中循环体的剩余语句。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇宙超级无敌霸王龙捏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值