1. for循环的基础语法
1.1 for循环
除了while循环语句外,Python同样提供了for循环语句。
两者能完成的功能基本差不多,但仍有一些区别:
1.while循环的循环条件是自定义的,自行控制循环条件
2.for循环是一种”轮询”机制,是对一批内容进行”逐个处理”
for循环就是将”待办事项”逐个完成的循环机制
1.2 程序中的for循环
for 临时变量 in 待处理数据集: 循环满足条件时执行的代码
从待处理数据集中:逐个取出数据赋值给临时变量
1.3 for循环语句
# 定义字符串name hopy = ”reaipaobu” # for循环处理字符串 for x in hopy: print(x)
运行结果如下:
r
e
a
i
p
a
o
b
u
可以看出,for循环是将字符串的内容:依次取出
所以,for循环也被称之为:遍历循环
1.4 for循环注意点
# 定义字符串name name = ”itheima” # for循环处理字符串 for x in name: print(x)
同while循环不同,for循环是无法定义循环条件的。
只能从被处理的数据集中,依次取出内容进行处理。
所以,理论上讲,Python的for循环无法构建无限循环(被处理的数据集不可能无限大)
1.5 总结
1.for循环的语法格式是:
2.for循环的注意点
无法定义循环条件,只能被动取出数据处理
要注意,循环内的语句,需要有空格缩进
1.6 练习案例:数一数有几个a
定义字符串变量name,内容为:“itheima is a brand of itcast”
通过for循环,遍历此字符串,统计有多少个英文字母:“a”
提示:
1.计数可以在循环外定义一个整数类型变量用来做累加计数
2.判断是否为字母"a",可以通过if语句结合比较运算符来完成
演示for循环的练习题:数一数有几个a
# 统计如下字符串中,有多少个字母a name = "reaipaobu is a brand of itcast" # 定义一个变量,用来统计有多少个a count = 0 # for 循环统计 # for 临时变量 in 被统计的数据: for x in name: if x == "a": count += 1 print(f"被统计的字符串中有{count}个a")
代码结果:
被统计的字符串中有5个a。
2. range语句
2.1 range语句讲解
or 临时变量 in 待处理数据集(可迭代对象): 循环满足条件时执行的代码
语法中的:待处理数据集,严格来说,称之为:可迭代类型
可迭代类型指,其内容可以一个个依次取出的一种类型,包括:
字符串
列表
元组
等
目前我们只学习了字符串类型,其余类型在后续章节会详细学习它们
for循环语句,本质上是遍历:可迭代对象。
尽管除字符串外,其它可迭代类型目前没学习到,但不妨碍我们通过学习range语句,获得一个简单的数字序列(可迭代类型的一种)。
语法1:
获取一个从0开始,到num结束的数字序列(不含num本身)
如range(5)取得的数据是:[0, 1, 2, 3, 4]
代码所示:
# range语法1 range(num) for x in range(10): print(x)
代码结果:
0
1
2
3
4
5
6
7
8
9
语法2:
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
如,range(5, 10)取得的数据是:[5, 6, 7, 8, 9]
代码所示:
# range 语法2 range(num1, num2) for x in range(5, 10): # # 从5开始,到10结束(不包含10本身)的一个数字序列,数字之间间隔是1 print(x)
代码结果:
5
6
7
8
9
语法3:
获得一个从num1开始,到num2结束的数字序列(不含num2本身)
数字之间的步长,以step为准(step默认为1)
如,range(5, 10, 2)取得的数据是:[5, 7, 9]
代码所示:
# range 语法3 range(num1, num2, step) for x in range(5, 10, 2): # # 从5开始,到10结束(不包含10本身)的一个数字序列,数字之间的间隔是2 print(x)
代码结果:
5
7
9
2.2 for循环遍历range序列
运行结果如下:
2.3 总结
1.range语句的功能是:
获得一个数字序列(可迭代类型的一种)
2.range语句的语法格式:
语法1:
语法2:
语法3:
3.range语句的注意事项:
语法1从0开始,到num结束(不含num本身)
语法2从num1开始,到num2结束(不含num2本身)
语法3从num1开始,到num2结束(不含num2本身),步长以step值为准
range的用途很多,多数用在for循环场景
2.4 练习案例:有几个偶数
定义一个数字变量num,内容随意
并使用range()语句,获取从1到num的序列,使用for循环遍历它。
在遍历的过程中,统计有多少偶数出现
提示:
1.序列可以使用:range(1, num)得到
2.偶数通过if来判断,判断数字余2是否为0即可
3. 变量作用域
3.1 思考
如图代码,思考一下:
红框中的print语句,能否访问到变量 i ?
规范上:不允许
实际上:可以
3.2 for循环的变量作用域
回看for循环的语法,我们会发现,将从数据集(序列)中取出的数据赋值给:临时变量
为什么是临时的呢?
临时变量,在编程规范上,作用范围(作用域),只限定在for循环内部
如果在for循环外部访问临时变量:
1.实际上是可以访问到的
2.在编程规范上,是不允许、不建议这么做的
如果实在需要在循环外访问循环内的临时变量,可以在循环外预先定义
如图,每一次循环的时候,都会将取出的值赋予i变量。
由于i变量是在循环之前(外)定义的
在循环外访问i变量是合理的、允许的
3.3 总结
1.for循环中的临时变量,其作用域限定为:
循环内
2.这种限定:
是编程规范的限定,而非强制限定
不遵守也能正常运行,但是不建议这样做
如需访问临时变量,可以预先在循环外定义它