python之流程控制(分支结构:if else,循环结构:for循环、while循环)、pass(占位符)、assert(断言)、break、continue(5)
流程控制:分支结构:if、elif、else 之间互相结合的条件判断语句 循环结构:for循环while循环,使代码重复循环 pass(占位符)代替代码的位置、assert(断言)使程序崩溃退出、break(跳出)和continue(继续),用于退出循环
前言
本篇内容比较多,刚接触python的朋友理解起来可能会有些困难,但是不用担心,我在每个知识点下都列举了案例
,并在下面进行了说明
,大家可以通过运行案例并结合说明
多多练习,熟练掌握每个知识点,并大胆尝试各种不同的用法
1、流程控制
控制代码运行的方式,通常分为三种类型:
顺序
:代码从上往下,从左往右依次运行,所有编程语言默认都是这种运行方式选择
(分支结构):通过设置条件,达到某种条件就执行设置好的程序,用来做选择循环
(循环结构):重复执行某段代码
1.1 分支结构(if else)
1.1.1 什么是分支结构?
分支结构就是根据条件判断的真假去执行不同分支对应的子代码,让程序有选择的去执行代码
1.1.2 为什么要使用分支结构?
人类某些时候需要根据条件来决定做什么事情,而编程语言的目的是让计算机具备人的某些能力,所以程序必须拥有相应的机制来控制计算机具备人的这种判断力
1.1.3 如何使用分支结构?
基本语法格式;如:
if 条件:
需要运行的代码
注意:
每个条件下的代码都需要缩进,一个缩进位一个 tab键(4个空格)
本质:如何判断是否符合条件;也就是运行或不运行
- 条件为真,才会运行条件下的代码
- 条件不为真,直接跳过,不会运行该条件下的代码
- 需要运行的代码与条件之间的对应关系是通过缩进来区分的
1.1.3.1 单个 if 的使用
if
后的条件成立,就输出其下面的代码
if 3>2: # if是如果的意思
print('阿豪真聪明') # 判断条件为真,输出代码
1.1.3.2 if else 的使用
else
用在分支结构
的最后,当前面所有的条件都为假,才会输出else
下的代码
if 3==1: # 如果
print('阿豪真聪明') # 判断条件为假,不会输出
else: # 否则
print('阿豪你错了哦') # 其它条件不成立,输出该语句
1.1.3.3 if elif 的使用
设置多个条件进行选择,从上到下依次判断,若结果为假,继续判断,若结果为真,输出该条件下的代码,停止判断下面的条件
if 3==1: # 如果
print('阿豪真聪明') # 条件为假,不会输出,继续往下判断
elif 6>3: # 或是
print('阿豪你错了哦') # 条件为真,输出语句,不会往下判断
elif 4<6: # 或是
print('好厉害') # 不会被运行
输出结果:
阿豪你错了哦
1.1.3.4 if eilf 和 else 的使用
if 3==1: # 如果,False
print('阿豪真聪明')
elif False: # 或是,可以直接使用布尔值
print('阿豪你错了哦')
elif 0: # 或是,0 是假的意思,False
print('好厉害')
else: # 否则
print('前面的条件都不成立,只能输出我了')
输出结果:
前面的条件都不成立,只能输出我了
1.1.3.5 if 嵌套
if
可以无限嵌套,只要满足该if
的条件,在其下面就能继续使用if
并输出对应代码,他们之间的对应关系同样通过缩进
来体现,如下:
if True: # 第一个if
if '阿' in '阿豪': # 第二个if,在第一个if条件下
print('啦啦啦')
if 9<10: # 第三个if,在第一个if条件下
print('666')
if '我': # 第四个if,在第三个if条件下
print('000')
输出结果:
啦啦啦
666
000
总结:
通过上面的举例,根据具体情况,分支结构
可以作出不同的选择,且他们之间可无限嵌套,但必须通过缩进
来分别对应关系;后续大家在使用中可以发现更多组合方式
注意:
- 千万不要忘记
缩进
,很重要! - 在同一个条件下的代码,都要
缩进
,并对齐 - 不要随意
缩进
,python对缩进非常严格,会导致报错
1.2 占位符 pass (常用)
在python中有许多语法规定在某个位置必须要有代码执行,不然会报错,这时若还没想好写什么代码,就可以
pass
代替,表示通过、跳过的意思,这样程序就不会报错继续往下执行了,通常用于分支结构
if语句、循环结构
for while 等等;pass
本身没有任何意义,只是用来占位置,防止因为没有代码而报错
if True:
pass # 这里本来需要写代码,用pass代替后就不需要了,程序也不会报错继续执行
else:
pass
# 不会输出任何结果
1.3 assert(断言,了解即可)
语法格式: assert 表达式
这里表达式,可以是 False,True,0,1,3>2等等,与前面 if的条件 一样,表达式返回的结果为
布尔值
,程序通过表达式的真假来判断是否继续执行
assert的使用:
-
使程序崩溃,出现报错提示;如:
说明:
从上面可以看到,当assert
后的表达式 判断为真时
,程序继续执行,若表达式 判断为假
,程序直接报错,停止运行,后面的代码不会被运行 -
用
assert
语句使程序报错时,出现提示语句;如:
语法格式:assert 表达式,报错提示
说明:报错提示 可以是任意数据类型的内容,用来提示报错的原因,方便排查错误
思考?
我们为什么要使用 assert
语句,因为有些程序在运行后出现与条件不符,导致程序崩溃,所以我们使用 assert
设置条件,提前让程序报错;这样有助于我们排除代码错误;assert
通常用于检查输入(input)是否符合规定,还可以作为程序初期测试和调试的辅助工具
如:
说明:
从图片可以看到,我用 变量 a 接受输入内容后,在使用 assert语句 判断内容是否满足条件
,若不满足条件则使程序报错,并输出 错误提示
;这样我们就能快速定位错误代码并修改
1.4 循环结构(for、while)
1.4.1 什么是循环结构?
循环结构
就是重复执行某段代码块
1.4.2 为什么要用循环结构?
人类某些时候需要重复做某些事情,所以程序中也必须具备让计算机可以循环做事的能力
1.4.3 如何使用循环结构?
在python中具备两种循环结构:
while 循环
for 循环
tips:
for循环可以解决的问题,while循环都能解决;但是while循环能搞定的,for循环不一定能搞定
,for循环相当于是对 while循环 的便利操作,它是由 while循环 衍生出来,在某些场景使用起来更加方便的一种循环方式,使代码编写更加简洁
1.4.3.1 while 循环
1.4.3.1.1 直接使用 while
语法格式:
while 条件:
代码
代码
while循环执行步骤:
- 先判断while 后的条件是否成立
- 若条件成立,立即执行while循环下的代码;若不成立,不执行循环下的代码,程序继续运行
- 执行 while循环 下的代码后,回到
步骤1
继续判断条件是否成立,重复执行这 3个步骤
- 直到 while后面的条件不成立了,离开while循环,程序继续运行
如:
a = 5
while a>1:
print('盲敲代码的阿豪') # 重复执行代码,直到条件不成立
a-=1 # 每循环一次,变量a减1
print('循环结束了,啦啦啦') # 循环结束后,程序继续运行,输出该语句
输出结果:
盲敲代码的阿豪
盲敲代码的阿豪
盲敲代码的阿豪
盲敲代码的阿豪
循环结束了,啦啦啦
1.4.3.1.2 while 与 else 结合使用
while 循环还可以与 else 结合使用,当
while循环结束后,一定会输出 else 下的内容
;如:
a = 1
while a<5:
print(a)
a+=1
else:
print('我会被执行') # 循环结束后,输出该语句
输出结果:
1
2
3
4
我会被执行
1.4.3.1.3 while循环嵌套
循环中在放入循环,可以无限嵌套;如:
a = 1
while a:
print('我是第一个循环')
while a:
print('我是第二个循环')
a = 0
输出结果:
我是第一个循环
我是第二个循环
1.4.3.1.4 小知识?
- 死循环
代码一直重复执行,无法停止
;我们在编写代码时一定要避免无意义的死循环
while True: # 条件永远为真,死循环
print('我停不下来了') # 重复输出该语句,不会停止
- 为什么是无意义的死循环呢?
因为我们日常使用的程序通常都使用了死循环;如:淘宝、百度、qq、王者荣耀等等;它们一直都处于运行状态,让我们随时都可以使用;就是因为使用了死循环;
而我们需要避免的则是纯计算无IO(输入输出),导致cpu一直运行无法休息,毫无意义的死循环
总结:
程序是需要死循环的
,不然我们开发的程序一运行就结束了;无法一直使用;但在循环中要有输入输出,使cpu可以得到休息;不然程序一直运行,会浪费大量的cpu资源
- 如何避免死循环?
若 while 后的条件是一个
固定的表达式
,那么代码就会变成死循环;所以 我们需要是条件可以改变,这时就需要变量
了;如:
a = 1
while a: # 结果为真,进入循环
print('666') # 输出语句
a = 0 # 将变量a 变为0,在下次循环判断条件时结果为假,退出循环
输出结果:
666
1.4.3.2 continue(继续)
continue
:跳过这一轮循环,直接开始下一轮循环,通常与if语句
连用;如:
a = 1
while a<10:
if a==3 or a==5: # 满足该条件则执行缩进下面的代码
a+=1 # a=a+1
continue # 执行后跳过本轮循环,回到while重新判断条件,开始下一轮循环
print(a) # 输出a
a+=1
else:
print('我会被执行') # 循环结束后输出
输出结果:
1
2
4
6
7
8
9
我会被执行
说明:
从上面的输出结果可以看到,原本该输出1到9
的,结果没有输出 3 和 5
;这是因为使用了 if语句与continue结合
; 每次进入循环,都会执行if语句,若满足 if后的条件,则执行下面的代码,而执行 continue
后,本轮循环就会跳过,后面的代码没有执行
,导致 3 和 5没有输出,循环结束后依然会输出else下的代码
1.4.3.3 break(跳出)
break
:直接跳出整个循环,往下继续运行剩余的代码;如:
a = 1
while a<10:
if a==3:
break # 结束循环,往后运行
print(a)
a+=1
else:
print('我不会被执行') # 不会输出
print('循环已经结束了哦')
输出结果:
1
2
循环已经结束了哦
说明:
从面可以看到,当满足 if条件后,执行break代码,循环直接结束
,循环内的代码和else下的代码
都不会执行,继续往后运行循环外的代码
注意事项:
- continue和break只能在循环中使用
- continue 和 break 都只能作用于一个循环,通常在循环嵌套中会使用;如下:
a = 1
while a:
print('我是第一个循环')
while a:
break # 我在第二个循环内,只结束第二个循环,第一个循环内的代码依然会输出
print('我是第二个循环') # 循环已经结束,不会被输出
print('我是第一个循环内的代码,依然会输出')
break # 我在第一个循环,结束第一个循环
输出结果:
我是第一个循环
我是第一个循环内的代码,依然会输出
说明:
从上面可以看到,break 在第二个while循环内被执行后,只有第二个循环结束了
,第一个循环依然在运行,break在哪个循环内就结束哪个循环
,不会干扰其它循环
1.4.3.4 for 循环
1.4.3.4.1 for循环常用方法
for 循环
是一个遍历的操作,将可迭代数据依次遍历出来,并执行循环下的代码
语法格式:
for 名字 in 可迭代数据:
代码
说明:这个 可迭代数据 可以是,字符串、列表、字典、元组、集合
例子:
a = ['点赞',666,'关注','收藏']
for i in a: # 将列表中的元素,依次绑定给 变量i
print(i) # 输出该语句
# 列表中有多少元素,就会循环多少次
for b in '我爱你': # 将字符串中的每个字符,依次绑定给变量 b
print(b)
# 字符串中有多少个字符,就会循环多少次
输出结果:
点赞
666
关注
收藏
我
爱
你
本质:
- 将可迭代数据中的
每个元素依次绑定给指定的名字(变量)
,其中若可迭代数据为字典
,绑定给名字的元素为字典的键
- 可迭代数据中有多少个元素,
就会重复循环多少次,每次循环都会执行for循环下的代码
1.4.3.4.2 for循环和range的结合使用
- 指定代码循环次数
for i in range(3): # range内的数字是多少,就会循环多少次
print(i)
print('我是阿豪')
输出结果:
0
我是阿豪
1
我是阿豪
2
我是阿豪
说明:
从面可以看到,range
就是用来指定 for循环
循环的次数的,而 变量i
则会从0开始 依次绑定数字至range内指定的数字,但不包括它
- 从指定数字开始循环;如:
for x in range(3,6): # 从3到5,循环3次,不包括6
print(x)
输出结果:
3
4
5
说明:
从面可以看到,x从3开始绑定一直到5,不会绑定6
,循环了3次
- 每次循环跳跃指定步数;如:
for x in range(1,8,2): # 从 1 开始 到 7,每次都跳跃2步
print(x)
输出结果:
1
3
5
7
说明:
从面可以看到,(1,8,2) 表示从 变量x从1开始绑定至7,不包括8
,每次循环变量 x都要加2
,循环了4次
1.4.3.4.3 for循环中 break 、continue、else的使用
for循环中break、continue、else
的使用方法与 while循环一致;如:
for x in '123':
if x == '2':
continue # 跳过本次循环
print(x)
else: # 循环结束后输出下面的代码
print('我会被输出')
for x in '123':
if x == '2':
break # 跳出整个循环,后面的代码不会运行
print(x)
else: # 前面break已经结束循环了,不会执行else下的代码了
print('我不会被输出')
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)