前言

本篇内容比较多,刚接触python的朋友理解起来可能会有些困难,但是不用担心,我在每个知识点下都列举了案例,并在下面进行了说明,大家可以通过运行案例并结合说明多多练习,熟练掌握每个知识点,并大胆尝试各种不同的用法

1、流程控制

控制代码运行的方式,通常分为三种类型:

  1. 顺序:代码从上往下,从左往右依次运行,所有编程语言默认都是这种运行方式
  2. 选择(分支结构):通过设置条件,达到某种条件就执行设置好的程序,用来做选择
  3. 循环(循环结构):重复执行某段代码

1.1 分支结构(if else)

1.1.1 什么是分支结构?

分支结构就是根据条件判断的真假去执行不同分支对应的子代码,让程序有选择的去执行代码

1.1.2 为什么要使用分支结构?

人类某些时候需要根据条件来决定做什么事情,而编程语言的目的是让计算机具备人的某些能力,所以程序必须拥有相应的机制来控制计算机具备人的这种判断力

1.1.3 如何使用分支结构?

基本语法格式;如:
	if 条件:
		需要运行的代码
注意:
每个条件下的代码都需要缩进,一个缩进位一个 tab键(4个空格)

本质:如何判断是否符合条件;也就是运行或不运行

  1. 条件为真,才会运行条件下的代码
  2. 条件不为真,直接跳过,不会运行该条件下的代码
  3. 需要运行的代码与条件之间的对应关系是通过缩进来区分的
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

总结
通过上面的举例,根据具体情况,分支结构 可以作出不同的选择,且他们之间可无限嵌套,但必须通过缩进来分别对应关系;后续大家在使用中可以发现更多组合方式

注意:

  1. 千万不要忘记缩进,很重要!
  2. 在同一个条件下的代码,都要缩进,并对齐
  3. 不要随意缩进,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中具备两种循环结构:

  1. while 循环
  2. for 循环

tips:
for循环可以解决的问题,while循环都能解决;但是while循环能搞定的,for循环不一定能搞定,for循环相当于是对 while循环 的便利操作,它是由 while循环 衍生出来,在某些场景使用起来更加方便的一种循环方式,使代码编写更加简洁

1.4.3.1 while 循环
1.4.3.1.1 直接使用 while
语法格式:
while	条件:
	代码
	代码

while循环执行步骤:

  1. 先判断while 后的条件是否成立
  2. 若条件成立,立即执行while循环下的代码;若不成立,不执行循环下的代码,程序继续运行
  3. 执行 while循环 下的代码后,回到 步骤1 继续判断条件是否成立,重复执行这 3个步骤
  4. 直到 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下的代码都不会执行,继续往后运行循环外的代码

注意事项:

  1. continue和break只能在循环中使用
  2. 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
关注
收藏
我
爱
你

本质

  1. 将可迭代数据中的每个元素依次绑定给指定的名字(变量),其中若可迭代数据为字典,绑定给名字的元素为 字典的键
  2. 可迭代数据中有多少个元素,就会重复循环多少次,每次循环都会执行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('我不会被输出')
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐