迭代:for
循环的奥秘
迭代,又称循环 (Looping),是编程中让计算机重复执行某段代码的关键技术。想象一下,你需要打印 1 到 100 的数字,难道要写 100 行 print()
语句吗?循环就能轻松搞定!
Python 提供了 for
和 while
这两种循环语句。 让我们聚焦于 for
循环,看看它如何遍历各种数据类型。
for
语句特别擅长遍历序列,如列表 (list
)、字符串 (string
)、元组 (tuple
) 以及 range
对象。 除此之外,它也能遍历集合 (set
) 和字典 (dict
) 这种无序的数据结构。
下图生动地展示了 for
循环的工作流程:
接下来,我们将通过具体的代码示例,一步步揭开 for
循环的神秘面纱。
列表的循环之旅
代码
cars = ["现代", "本田", "福特", "丰田", "宝马", "大众"]
for car in cars: # 将 cars 列表中的每个元素依次赋值给 car
print(car) # 打印当前 car 的值
输出
现代
本田
福特
丰田
宝马
大众
这个例子中,for
循环逐个访问 cars
列表中的汽车品牌,并打印出来。
元组的循环漫步
代码
cars = ("现代", "本田", "福特", "丰田", "宝马", "大众")
for car in cars:
print(car)
输出
现代
本田
福特
丰田
宝马
大众
和列表类似,for
循环可以轻松遍历元组中的每一个元素。
字符串的字符分解
代码
name = "python"
for char in name: # 将 name 字符串中的每个字符依次赋值给 char
print(char) # 打印当前 char 的值
输出
p
y
t
h
o
n
字符串可以被看作是字符的序列,for
循环可以逐个访问字符串中的字符。
range()
函数的妙用
range
类型代表一个不可变的数字序列, 它是生成一系列整数的便捷方式。range
对象最大的优势在于,无论它代表的数字范围有多大,它始终只占用少量内存。这使得 range
在需要大量整数序列时,比 list
或 tuple
更加高效。
语法:
range(stop)
: 生成从 0 开始,到stop - 1
的整数序列。range(start, stop[, step])
: 生成从start
开始,到stop - 1
的整数序列,步长为step
。
>>> range(10)
range(0, 10)
>>> list(range(10)) # 将 range 对象转换为 list,方便查看
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]
range()
函数常与 for
语句联用,控制循环执行的次数,并提供每次循环的索引值。
示例 #1
打印从 0 到 20 的 5 的倍数。
代码
for i in range(5): # 循环 5 次,i 的值分别为 0, 1, 2, 3, 4
print(i * 5) # 打印 i 乘以 5 的结果
输出
0
5
10
15
20
示例 #2
打印从 2 到 5 的所有整数(包含 2 和 5)。
代码
for i in range(2, 6): # 循环从 2 到 5,i 的值分别为 2, 3, 4, 5
print(i)
输出
2
3
4
5
示例 #3
打印 2 到 10 之间的所有奇数。
代码
for i in range(3, 10, 2): # 从 3 开始,到 9 结束,步长为 2
print(i)
或者:
for i in range(2, 10):
if i % 2 != 0: # 判断 i 是否为奇数
print(i)
输出
3
5
7
9
示例 #4
找出字符串 "python programming"
中所有字母 o
出现的索引位置。
代码
s = "python programming"
for i in range(len(s)): # 循环遍历字符串 s 的所有索引
if s[i] == "o": # 如果 s[i] 的字符是 'o'
print(i) # 打印索引 i
输出
4
9
动手实践
现在,让我们通过几个实际的编程问题来巩固 for
循环的运用。
1. 计算复利
编写一个程序,计算在给定本金、年利率和投资年限下,所能获得的复利总额。
代码
principal = float(input("输入本金金额: "))
rate = float(input("输入年利率: "))
years = int(input("输入投资年限(年): "))
amount = principal # 初始金额等于本金
for year in range(years): # 循环遍历每一年
amount += rate * amount / 100 # 计算每年的利息,并加到总金额上
interest = amount - principal # 计算总利息
print("应付总利息:", interest)
输出
输入本金金额: 500000
输入年利率: 5
输入投资年限(年): 3
应付总利息: 78812.5
2. 计算阶乘
正整数 n
的阶乘(表示为 n!
)等于所有小于或等于 n
的正整数的乘积。 例如,5! = 5 × 4 × 3 × 2 × 1 = 120
。 编写一个程序,计算给定正整数 n
的阶乘 (假设 n
大于 0)。
代码
n = int(input("输入 n: "))
factorial = 1 # 阶乘的初始值为 1
for i in range(1, n + 1): # 从 1 循环到 n
factorial *= i # 将每个数字乘到 factorial 上
print("n! :", factorial)
输出
输入 n: 6
n! : 720
通过这些例子,相信你已经对 for
循环有了更深入的理解。 掌握 for
循环,你就能轻松地处理各种重复性的任务,让你的代码更加简洁高效!