前言
在上节课当中,我们已经学习到 if 的应用了,细心的同学就会发现,其实在学习 python 的三目运算符中,已经提前学习了 if 的应用了,例:
a = 6
b = 5
max = a if a>b else b
print(max)
输出结果:
6
是的,python的三目运算符与其他编程语言不一样的,所以在此,提醒所有的同学,使用三目运算符的时候,要分清楚喔!好的,就让我们开始今天的课程吧!
循环结构是什么
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环体时,需要在合适的时候把循环条件改为假,从而结束循环;否则循环将一直执行下去,形成死循环。
初始化语句(init_statements):一条或多条语句,用于完成一些初始化工作。初始化语句在循环开始之前执行
循环条件(test_expression):这是一个布尔表达式,这个表达式能决定是否执行循环体
循环体(body_statements):这个部分是循环的主体,如果循环条件允许,这个代码块将被重复执行
迭代语句(iteration_statements):这个部分在一次执行循环体结束后,对循环条件求值之前执行,通常用于控制循环条件中的变量,使得循环在合适的时候结束。
while循环
while循环的语法格式如下:
[ init_statements ]
while test_expression :
body_statements
[ iteration_statements ]
while循环在每次执行循环体之前,都要先对 test_expression 循环条件求值,如果循环条件为真,则运行循环体部分。从上面的语法格式来看,迭代语句 iteration_statements 总是位于循环体的最后,因此只有当循环体能成功执行完成时,while 循环才会执行迭代语句 iteration_statements。
从这个意义上看,while 循环也可被当成分支语句使用----如果 test_expression 条件一开始就为假,则循环体部分将永远不会获得执行的机会。
例:
count_i = 0
while count_i <5 :
print("count:", count_i)
count_i += 1
print("循环结束!")
输出结果:
count: 0
count: 1
count: 2
count: 3
count: 4
循环结束!
注意:在使用 while 循环时,一定要保证循环条件有变成假的时候;否则这个循环将成为一个死循环,永远无法结束这个循环,例:
count_i2 = 0
while count_i2 < 10:
print("不停执行的死循环:", count_i2)
count_i2 -= 1
print("永远无法跳出的循环体")
输出结果:
循环会一直下去,没有停止的,建议同学们在 任务管理器 中 手动关闭编辑器
使用while循环遍历元组,例:
a_tuple = ('fkit', 'crazyit', 'Charlie')
i = 0
while i <len(a_tuple):
print(a_tuple[i])
i +=1
输出结果:
fkit
crazyit
Charlie
使用while循环遍历列表,例:
a_list = ['fkit', 'crazyit', 'Charlie']
i = 0
while i <len(a_list):
print(a_list[i])
i +=1
输出结果:
fkit
crazyit
Charlie
for-in循环
for-in 循环专门用于遍历范围、列表、元素和字典等可迭代对象包含的元素。for-in循环的语法格式如下:
for 变量 in 字符串|范围|集合等 :
statements
对于上面的语法格式有两点说明:
for-in 循环中的变量的值受 for-in循环控制,该变量将会在每次循环开始时自动被赋值,因此程序不应该在循环中对该变量赋值。
for-in 循环可用于遍历任何可迭代对象。所谓可迭代对象,就是指该对象中包含一个__iter__方法,且该方法的返回值对象具有next()方法
使用for-in循环遍历元组,例:
a_tuple = ('fkit', 'crazyit', 'Charlie')
for ele in a_tuple:
print('当前元素是:', ele)
输出结果:
当前元素是: fkit
当前元素是: crazyit
当前元素是: Charlie
使用for-in循环遍历列表,例:
a_list = ['fkit', 'crazyit', 'Charlie']
for ele in a_list:
print('当前元素是:', ele)
输出结果:
当前元素是: fkit
当前元素是: crazyit
当前元素是: Charlie
使用for-in循环遍历字典,例:
my_dict = {'语文': 89, '数学': 92, '英语': 80}
for key, value in my_dict.items():
print('key:', key)
print('value', value)
print('---------------------')
输出结果:
key: 语文
value 89
key: 数学
value 92
key: 英语
value 80
---------------------
控制循环结构(break/continue/return)
break:结束循环,在某些时候,需要在某种条件出现时强行中止循环,而不是等到循环条件为False时才退出循环,此时,可以使用break来完成这个功能,break用于完全结束一个循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统就将完全结束该循环,开始执行循环之后的代码
continue:continue的功能与break有点类似,区别是continue只是忽略当次循环的剩下语句,接着开始下一次循环,并不会中止循环;而break则是完全中止循环本身
return:python程序中的大部分循环都被放在函数或方法中执行,一旦在循环体内执行到一条return语句时,return语句就会结束该函数或方法,循环自然也随之结束
break的例子:
for i in range(0, 10):
print('i的值是:', i)
if i == 5 :
break
输出结果:
i的值是: 0
i的值是: 1
i的值是: 2
i的值是: 3
i的值是: 4
i的值是: 5
continue的例子:
for i in range(0, 3):
print('i的值是:', i)
if i == 1 :
continue
print("continue后的输出语句")
输出结果:
i的值是: 0
continue后的输出语句
i的值是: 1
i的值是: 2
continue后的输出语句
return的例子:
def test():
for i in range(10):
for j in range(10):
print("i的值是:%d, j的值是:%d" % (i, j))
if j == 1 :
return
print("return后的输出语句")
test()
输出结果:
i的值是:0, j的值是:0
return后的输出语句
i的值是:0, j的值是:1
for表达式(重点,称为列表推导式)
for 表达式用于利用其他区间、元组、列表等可迭代对象创建新的列表。for表达式的语法格式如下:
[表达式 for 循环计数器 in 可迭代对象]
从上面的语法格式可以看出,for 表达式与普通 for 循环的区别有两点:
for关键字之前定义一个表达式,该表达式通常会包含循环计数器
for表达式没有循环体,因此不需要冒号
for 表达式当然也是有循环的,它同样会对可迭代对象进行循环-----可迭代对象包含几个对象,该循环就对for之前的 “表达式” 执行几次(相当于 for 之前的表达式就是循环体),并将每次执行的值收集起来作为新的列表元素。
例:
a_range = range(10)
a_list = [x * x for x in a_range]
print(a_list)
输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
换成普通的for-in是这样写的
a_range = range(10)
a_list = []
for x in a_range :
a_list.append(x * x)
print(a_list)
输出结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
还可以在 for 表达式后面添加 if 条件,这样 for 表达式将只迭代那些符合条件的元素,例:
a_range = range(10)
a_list = [x * x for x in a_range if x % 2 == 0]
print(a_list)
输出结果:
[0, 4, 16, 36, 64]
换成普通的for-in是这样写的
a_range = range(10)
a_list = []
for x in a_range :
if x % 2 == 0 :
a_list.append(x * x)
print(a_list)
输出结果:
[0, 4, 16, 36, 64]
课外监督
最近一部分同学在后台私聊我说,自己每天都准备要学习了,但是一去到电脑桌上就是提不起劲来,怎么办呢?针对这种情况的同学,我决定每天花一点时间对你们学习进行监督和辅导,如有需要的同学,扫描下面的图片,点击 “联系作者” 进行报名。
结语
这节课是有点逻辑思维在的,但跟着我学习后,你就会理解它其中的意思,好啦,今节课就先讲到这里,下节课做有关流程控制的练习题,敬请期待。