文章目录
【2.3】for循环
一、for循环基础语法
(一)基础语法
除了while循环语句外,Python还提供了for循环语句。两者能完成的功能差不多,但仍有所侧重:
1.while循环的循环条件是自定义的,自行控制循环条件;
2.for循环是一种轮询 机制,是对一批内容进行逐个处理。
for循环语法如下:
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
从待处理数据集中,逐个取出数据并赋给临时变量。
示例(遍历字符串):
python
# 定义字符串name
name = "zhangsan"
# for循环处理字符串
for x in name:
print(x)
输出结果如下:
z
h
a
n
g
s
a
n
注意:
1.与while循环不同,for循环是无法定义循环条件的,只能从被处理的数据集中依次取出内容进行处理。
2.所以,理论上讲,Python的for循环无法构建无限循环(因为被处理的数据集不可能无限大)。
3.for循环内的语句,同样需要注意正确缩进。
※、练习
案例:数一数有几个a
定义字符串变量name,内容为:I eat an apple every day.
通过for循环,遍历此字符串,统计有多少个英文字母a
。
我的代码
python
name = "I eat an apple every day."
count = 0
for x in name:
if x == 'a':
count += 1
print(f"{name}中共含有:{count}个字母a")
(二)range语句
对于for循环语法:
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
对于语法中的待处理数据集 ,严格来说,其被称作:序列类型。
序列类型 指,其内容可以一个个依次取出的一种类型,包括:
- 字符串;
- 列表;
- 元组;
- 等等。
for循环语句,本质上是遍历序列类型。
range语句的功能:获得一个数字序列
语法一:
python
range(num)
获取一个从0开始,到num结束(不含num本身)的数字序列。
如range(5)
获得的数据是:[0, 1, 2, 3, 4]
。
语法二:
python
range(num1, num2)
获得一个从num1开始,到num2结束(不含num2本身)的数字序列。
如range(5, 10)
获得的数据是:[5, 6, 7, 8, 9]
。
语法三:
python
range(num1, num2, step)
获得一个从num1开始,到num2结束(不含num2本身)的数字序列。
数字之间的步长,以step为准(step默认值为1)。
如range(5, 10, 2)
获得的数据是:[5, 7, 9]
。
※、练习
案例:有几个偶数
定义一个数字变量num,内容随意。
使用range()语句,获取从1到num的序列,使用for循环遍历它。
在遍历的过程中,统计有多少偶数出现。
我的代码
python
num = 20
count = 0
for i in range(1, num + 1):
if i % 2 == 0:
count += 1
print(f"从1到{num}共有{count}个偶数。")
(三)变量作用域
思考一个问题:
python
for i in range(5):
print(i)
print(i)
如上代码,思考一下:最下面那行print(i)
语句,能否访问到变量i?
答:规范上 不允许;实际上可以。
for循环的变量作用域问题
for 临时变量 in 待处理数据集:
循环满足条件时执行的代码
回顾for循环的语法,从数据集中取出的数据赋值给临时变量。顾名思义,它为什么叫"临时变量"呢?
临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部。
而如果在for循环外部访问临时变量:
1.实际上是可以访问到的;
2.在编程规范上,是不允许、不建议这么做的。
如何在for循环外部访问"临时变量"
把临时变量在for循环外部先定义一下即可。这样一来,它本身就是for循环外部的一个普通变量,只不过for循环对它进行了若干次操作而已,后续我再访问它的时候也是正常访问一个普通变量。
python
i = 0
for i in range(5):
print(i)
print(i)
二、for循环嵌套使用
语法如下:
for 临时变量 in 待处理数据集:
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情N
...
for 临时变量 in 待处理数据集:
循环满足条件应做的事情1
循环满足条件应做的事情2
循环满足条件应做的事情N
...
示例:
python
i = 1
for i in range(1, 101):
print(f"今天是向小美表白的第{i}天,坚持。")
for j in range(1, 11):
print(f"送给小美的第{j}朵玫瑰花。")
print(f"小美,我喜欢你(第{i}天的表白结束。)")
print(f"第{i}天,表白成功。")
另外,while和for也可以相互嵌套。
※、练习
案例:for循环打印九九乘法表
通过for循环,输出如下九九乘法表内容:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
我的代码
python
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j} * {i} = {i * j}\t", end='')
print()