6.6 Python for 循环

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循环输出九九乘法表。

备注:本文部分图片来源于《风变编程》。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是使用Python 3.6实现的红楼梦人物统计代码: ```python with open('红楼梦.txt', 'r', encoding='utf-8') as f: content = f.read() # 去除标点符号和换行符 content = content.replace('\n', '').replace('\r', '').replace(',', '').replace('。', '').replace('!', '').replace('?', '').replace('、', '').replace(';', '').replace(':', '').replace('“', '').replace('”', '').replace('‘', '').replace('’', '').replace('『', '').replace('』', '').replace('(', '').replace(')', '').replace('《', '').replace('》', '').replace('【', '').replace('】', '').replace('[', '').replace(']', '').replace('〔', '').replace('〕', '').replace('—', '').replace('…', '') # 将文本按照空格分隔成单词列表 words_list = content.split(' ') # 统计每个人物出现的次数 characters_count = {} for word in words_list: if word in characters_count: characters_count[word] += 1 else: characters_count[word] = 1 # 取出出现次数前20的人物 top_characters = sorted(characters_count.items(), key=lambda x: x[1], reverse=True)[:20] # 输出结果 print('{:<10}{:<10}'.format('人物', '出现次数')) for character, count in top_characters: print('{:<10}{:<10}'.format(character, count)) ``` 在该代码中,我们首先读取红楼梦的文本内容,并将其去除标点符号和换行符等无用字符,然后将文本按照空格分隔成单词列表。接着,我们统计每个人物出现的次数,并取出出现次数前20的人物。最后,我们将结果输出。 需要注意的是,该代码只是一个简单的示例,可能不能完全准确地统计红楼梦中每个人物的出现次数,因为有些人物可能有多个名字或别名,而且有些人物可能只出现在某些章节中。如果需要更准确的结果,可能需要更复杂的算法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值