6.6 Python for 循环
6.6.1 课题导入
# 新建一个列表,存储班级人员姓名
# 列表用`[]`表示,元素之间用逗号`,`分隔
name_list = ['白敬亭','井柏然','王嘉尔','马思纯']
# 用列表[索引]的方法将班级人员姓名依次输出
# 列表的索引是从0开始编号的
print(name_list[0])
print(name_list[1])
print(name_list[2])
print(name_list[3])
【终端输出】
白敬亭
井柏然
王嘉尔
马思纯
上述列表只有4个元素,我们可以用列表[索引]
的方法输出列表的元素。
那如果我们班有100个人,列表就有100个元素。
那我们怎么将列表的元素依次输出呢?这时候我们可以用for循环。
6.6.2 for 循环语法
# for 循环遍历列表
for i in ['白敬亭','井柏然','王嘉尔','马思纯'] :
print(i)
【终端输出】
白敬亭
井柏然
王嘉尔
马思纯
上述代码的列表中4个元素。
运行上述代码终端执行了4次print,分别输出了白敬亭 井柏然 王嘉尔 马思纯
。
for 循环语句的作用是从(字符串、序列)等中依次取值,也称之为遍历。
初接触for循环可以理解为从某个容器里依次取出里面的物品,存储在另一个变量里。
for 循环语句包含了七个要素
①关键字 “for” 和③关键字 “in"是固定搭配。
②是循环变量。
④可迭代对象。
⑤英文冒号”:"。
⑥缩进,冒号下的语句前有四个空格的缩进。缩进快捷键:ctrl+]
。
⑦循环体,可以理解为 for 循环语句下的一个代码块。正常情况下,每循环一次,这个代码块都会被执行一次。
可迭代对象可以理解为一个"盒子",可以被程序一次一次地取出数据。
我们之前学的字符串、元组和列表都可以叫做可迭代对象。
循环变量,是用来接收 for 循环语句遍历(即一次次取出)可迭代对象里的数据。
循环变量的名字我们可以自己命名。
6.6.3 for 循环的执行流程
体验代码
冰箱里有6个鸡蛋,第1次取出1个鸡蛋,第2次取2个,第3次取3个。
用for循环输出每次取出鸡蛋的个数。
# 用列表存储每次取鸡蛋的个数
egg_list = [1,2,3]
# 用for循环实现取鸡蛋的动作
for egg in egg_list :
print(egg)
【终端输出】
1
2
3
for 循环在上述代码中的作用就是从鸡蛋盒子中取出鸡蛋存储给变量egg。
第1次存储的是1。
第2次存储的是2。
第3次存储的是3。
编写代码:用for循环输出每次取鸡蛋后取出鸡蛋的总数。
# 定义一个变量用来存储取出的鸡蛋
sum = 0
# 用列表存储每次取鸡蛋的个数
egg_list = [1,2,3]
# 用for循环实现取鸡蛋的动作
for egg in egg_list :
# 计算取出鸡蛋的总数
sum = sum +egg
# 输出每次取鸡蛋后取出的鸡蛋总数
print(sum)
【终端输出】
1
3
6
程序执行流程:
第1次取出鸡蛋1个,那取出的鸡蛋数sum = 0 +1 = 1;这时sum = 1;
第2次取出鸡蛋2个,那取出的鸡蛋数sum = 1 +2 = 3;这时sum = 3;
第3次取出鸡蛋3个,那取出的鸡蛋数sum = 3 +3 = 6;这时sum = 6。
体验代码
用for循环输出每次取鸡蛋后冰箱剩余的鸡蛋数。
注意是每次,注意print 的位置。
# 定义一个变量用来存储冰箱里的鸡蛋
total_egg = 6
# 定义一个变量用来存储取出的鸡蛋
sum = 0
# 用列表存储每次取鸡蛋的个数
egg_list = [1,2,3]
# 用for循环实现取鸡蛋的动作
for egg in egg_list :
# 计算取出鸡蛋的总数
sum = sum +egg
# 剩余的鸡蛋= 总的鸡蛋-取出的鸡蛋总和
remain_egg = total_egg - sum
# 输出每次取鸡蛋后剩余的鸡蛋总数
print(remain_egg)
【终端输出】
5
3
0
程序执行流程:
第1次取出鸡蛋1个,那取出的鸡蛋总数1,剩余鸡蛋= 6-1=5 ;
第2次取出鸡蛋2个,那取出的鸡蛋总数3,剩余鸡蛋= 6-3=3 ;
第3次取出鸡蛋3个,那取出的鸡蛋总数6,剩余鸡蛋= 6-6=0 。
remain[rɪˈmeɪn]:剩下的。
体验代码
用for循环输出鸡蛋取完后冰箱剩余的鸡蛋数。
注意是取完之后剩余的,不是每次剩余。
注意print 的位置。
# 定义一个变量用来存储冰箱里的鸡蛋
total_egg = 6
# 定义一个变量用来存储取出的鸡蛋
sum = 0
# 用列表存储每次取鸡蛋的个数
egg_list = [1,2,3]
# 用for循环实现取鸡蛋的动作
for egg in egg_list :
# 计算取出鸡蛋的总数
sum = sum +egg
# 剩余的鸡蛋= 总的鸡蛋-取出的鸡蛋总和
remain_egg = total_egg - sum
# 输出最后剩余的鸡蛋总数
print(remain_egg)
【终端输出】
0
for 循环一定要注意print的位置
print有4格缩进的时候,每执行一次循环,都有输出内容。因此,3次循环有3次输出内容。
print和if对齐的时候,只有在循环结束才输出内容,输出的是最后一次循环的数据。因此,对齐时只有1个输出。
print 的位置决定了输出内容,大家今后编写代码一定要注意。
6.6.4 for 循环的嵌套
嵌套是指一个对象中包含另一个与它相似的对象。
列表中含有列表是嵌套。
if 中有 if是嵌套。
for循环中有for循环,或者有if条件判断语句都叫嵌套。
for 循环中有if条件判断语句
体验代码
# 用range函数建一个整数序列,起始数字为5,结束数字为50,步长为7
r = range(5,50,7)
# 查看整数序列包含的数字
print(list(r))
# 用for 循环依次取出整数序列里的数字
for a in r :
# 使用if条件语句判断大于30的数
if a > 30 :
# 输出大于30 的数
print('{}大于30'.format(a))
【终端输出】
[5, 12, 19, 26, 33, 40, 47]
33大于30
40大于30
47大于30
for 循环的作用是取出r 中的数字并赋值给a。
for 循环中有for循环
编写代码原样输出下面的图案:
****
****
****
# 新建2个列表控制循环次数,列表有几个元素,循环就有几次
a_list = [1,2,3]
b_list = [1,2,3,4]
# 第1个循环称为外循环
# a_list有3个元素,外循环3次
for a in a_list :
# 第2个循环称为内循环
# b_list有4个元素,内循环4次
for b in b_list :
# 每次内循环输出一个*,end=''表示不换行
# 这个print是和内循环的for搭配使用
print('*',end='')
# 这个print是和外循环的for搭配使用
# 每次外循环结束,就执行一次换行
print( )
代码解析:
for a in a_list : 称为外循环
for b in b_list : 称为内循环
print(’*’,end=’’)内循环的的循环体
print( )外循环的循环体。
print('*',end='')
:意思是打印新号*
,end=’'表示不换行。
print( ):括号为空表示换行。
代码执行程序解析:
for a in a_list
:开始第1次外循环,此时a = 1 ;
for b in b_list
:开始第1次内循环,此时b = 1 ;
print('*',end='')
:第一次内循环输出一个*
,输出*
后,内循环的第一次循环体执行完毕,返回for b in b_list
,执行第2次内循环。
开始第2次内循环,输出第2个*
。
开始第3次内循环,输出第3个*
。
开始第4次内循环,输出第4个*
。
b_list = [1,2,3,4] 列表有4个元素,内循环执行了4次。
当内循环没有值可以取出的时候,内循环结束,跳出到外循环,此时执行外循环的循环体,换行操作。
输出换行后,代码回到for a in a_list
开始第2次外循环。然后重复上面的动作。
内循环的作用是输出*
。
外循环的作用是控制换行。
输出四个*
, 因此内循环需要4次。
共输出3行,因此外循环需要3次。
循环次数的控制方法:
上述列表的元素值在后面循环中没有引用,因此值没有起作用,起作用的是列表元素的个数,个数决定了循环次数。
控制循环次数的方法有很多,以下都是,大家可以替换第1、第2行代码,查看输出结果。
# 方法1
a_list = [1,1,1]
b_list = [4,4,4,4]
# 方法2
# range(3) 不代表数据类型为列表,只是方便大家替换代码。
a_list = range(3)
b_list = range(4)
#方法3:
# 这里的'123'不代表数据类型为列表,只是方便大家替换代码。
a_list = '123'
b_list = '1234'
6.6.5 课后练习
大家可以思考下,如何用for循环输出九九乘法表。
备注:本文部分图片来源于《风变编程》。