Python for 语法
在 Python 中,除了 while 语句,我们还可以使用 for 语句来实现循环。for 语句是 Python 中最常用的循环语句,它的语法比 while 语句更简洁也更好用。
语法:
for i in range(n):
……说明:
n 是一个正整数,for 语句一般情况下都是结合 range() 函数来实现循环的。i 只是一个普通变量名,当然你也可以使用 a、j 等来代替。
for 和 while 都可以实现循环,它们之间的区别如下:
- while 循环 被称为 “条件循环”,它循环的次数取决于 “条件何时变为 False”。
- for 循环被称为 “取值循环”,它循环的次数取决于 “in 后包含值的个数”。
Python for 示例
接下来,我们通过几个简单的例子来讲解 Python for 循环是如何使用的。
示例 1:使用 for 循环输出 0 ~ 4
for i in range(5):
print(i)运行结果如下。
0
1
2
3
4分析:
要特别注意一点:i 是从 0 开始的,而不是从 1 开始的。每一次 for 循环,i 的值都会自动加 1。range(5) 表示循环的次数是 5。此外,i 是从 0 开始的,因此最终运行结果为:0、1、2、3、4。
当然,上面这个例子也可以使用 while 循环来实现。因为程序是活的,想要实现某一个功能,方式是多种多样的。其中,使用 while 语句的实现代码如下:
i = 0
while i < 5:
print(i)
i += 1示例 2:for 循环实现字符串拼接
for i in range(5):
result = 'Start counting:' + str(i + 1)
print(result)运行结果如下。
Start counting: 1
Start counting: 2
Start counting: 3
Start counting: 4
Start counting: 5分析:
i+1 是一个数字,我们必须使用 str() 函数将数字转换为字符串,才可以进行字符串拼接。
Python for 中的 range() 函数
学会了怎么使用 for 循环之后,我们再来深入了解 range() 这个函数。在 Python 中,我们还可以使用 range() 函数的不同参数来定义各种类型的 for 循环。
语法:
for i in range(start, end, step)说明:
在该语法中,参数 start 表示开始值,参数 end 表示结束值,参数 step 表示步长。其中参数 step 的默认值为 1。
- 当 range() 只有 1 个参数时,表示 range() 只有结束值,此时循环是从 0 开始的。
- 当 range() 有 2 个参数时,表示 range() 只有开始值和结束值,此时循环是从 “开始值” 开始的。
- 当 range() 有 3 个参数时,表示 range() 有开始值、结束值和步长。所谓的步长,也叫 “间隔”,指的是每次循环后变量增加或减少的值。
示例 3:range() 只有结束值
for i in range(5):
print(i)运行结果如下。
0
1
2
3
4分析:
range(5) 表示循环的结束值为 5,从运行结果可以看出,结束值是不被包含进去的。只需要记住这一点就可以了:不管 range() 的参数是怎样的形式,结束值都不会被包含进去。
下面 3 种方式是等价的,小伙伴们可以思考一下为什么。
range(5)
range(0, 5)
range(0, 5, 1)示例 4:range() 设置初始值
for i in range(2, 5):
print(i)运行结果如下。
2
3
4分析:
range(2, 5) 表示循环的开始值为 2,结束值为 5,也就是取值范围为:[2, 5)。
示例 5:range() 设置步长(正数)
for i in range(0, 5, 2):
print(i)运行结果如下。
0
2
4分析:
range(0, 5, 2) 表示循环开始的值为 0,结束的值为 5,步长为 2。也就是说,每次循环,i 不再是加 1,而是加 2。
示例 6:range() 设置步长(负数)
for i in range(5, 0, -1):
print(i)运行结果如下。
5
4
3
2
1分析:
range(5, 0, -1) 表示循环开始的值为 5,结束的值为 0,步长为 -1。也就是说,每次循环,i 的值就减 1。使用这种方式,我们可以实现递减效果(类似于倒计时)。
提示: 变量的值每次只增加 1,这种行为被称为 “递增”。而变量的值每次只减少 1,这种行为被称为 “递减”。
实际上使用 for 循环可以做与 while 循环同样的事,只是 for 循环更加简洁。下面尝试使用 for 循环来计算 1 + 2 + 3 + ... + 100 的结果,你会发现它更加优雅!
示例 7:for 循环实现累加
total = 0
for i in range(1, 101):
total += i
print(total)运行结果如下。
5050思考: 为什么这里设置的 range() 函数是 range(1, 101),而不是 range(1, 100) 呢?
for 循环中的 else 子句
与 while 循环一样,我们也可以在 for 循环中加入 else 子句。当 else 用在 for 循环结构中时,只有当循环条件正常结束时,else 子句中的代码才会执行。如果在循环结构中执行了 break 语句或发生了异常(即报错),else 子句中的代码都不会执行。
示例 8:使用 else 子句
for i in range(10):
if i == 5:
print(i)
break
else:
print('Normal end!')
运行结果如下。
5分析:
从结果可以看出,由于这里的循环中使用了 break 语句,所以并不会执行后面的 else 子句。如果把 “break” 删除,再次运行的结果如下:
5
Normal end!for 循环用于遍历可迭代对象
对于 for 循环来说,它准确的语法是:for item in iterable,这里的 iterable 就是一个可迭代对象。正是因为借助了可迭代对象的特点,所以 for 循环才远比 while 循环简单方便。
示例 9:使用 for 循环
colors = ['red', 'green', 'blue']
for color in colors:
print(color)运行结果如下。
red
green
blue示例 10:使用 while 循环
colors = ['red', 'green', 'blue']
i = 0
while i < len(colors):
print(colors[i])
i += 1运行结果如下。
red
green
blue分析:
从上面可以看到,对于一些常见的循环任务,使用 for 会比 while 更加方便。
在 Python 中,像列表、元组、字符串、字典等都是可迭代对象。而使用 for 循环可以轻松地遍历它们,其流程图如下所示。

示例 11:Python for 遍历列表
languages = ['Python', 'C++', 'Java', 'Go', 'Rust']
for item in languages:
print(item)运行结果如下。
Python
C++
Java
Go
Rust示例 12:Python for 遍历元组
colors = ('red', 'orange', 'yellow', 'blue')
for item in colors:
print(item)运行结果如下。
red
orange
yellow
blue示例 13:Python for 遍历字符串
site = 'lvyenet'
for item in site:
print(item)运行结果如下。
l
v
y
e
n
e
t示例 14:Python for 遍历字典
students = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
for key, value in students.items():
print(key, value)运行结果如下。
Jack 1001
Lucy 1002
Tony 1003