Skip to content

迭代:for

迭代语句,也称为循环语句 (Looping statements),允许重复执行一个代码块。

Python 提供了 forwhile 语句来执行迭代。

for 语句可用于迭代序列(list, string, tuple, range)的项。它也可以用于迭代无序序列,如 setdict

这个过程可以用下面的流程图来演示:

Python 代码流中的迭代

让我们通过一些代码示例来演示如何使用 for 语句迭代序列。

列表迭代

代码

python
cars = ["现代", "本田",
        "福特", "丰田",
        "宝马", "大众"]
for make in cars:
    print(make)

输出

现代
本田
福特
丰田
宝马
大众

元组迭代

代码

python
cars = ("现代", "本田",
        "福特", "丰田",
        "宝马", "大众")
for make in cars:
    print(make)

输出

现代
本田
福特
丰田
宝马
大众

字符串迭代

代码

python
name = "python"
for char in name:
    print(char)

输出

p
y
t
h
o
n

Range 迭代

range 类型表示一个不可变的数字序列,通常用于 for 循环中,以循环特定次数。range 对象无论表示的范围有多大,始终占用相同(少量)的内存,这是它相对于普通 listtuple 的优势。

语法: range(stop)range(start, stop[, step])

python
>>> range(10)
range(0, 10)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 10, 2))
[1, 3, 5, 7, 9]

range() 函数广泛用于 for 语句中,以控制迭代次数并提供每次迭代的索引值 (i)。

示例 #1

打印从 0 到 20 的 5 的倍数。

代码

python
for i in range(5):
    print(i*5)

输出

0
5
10
15
20

示例 #2

打印从 2 到 5 的所有整数,包括边界值。

代码

python
for i in range(2, 6):
    print(i)

输出

2
3
4
5

示例 #3

打印 2 到 10 之间的所有奇数。

代码

python
for i in range(3, 10, 2):
    print(i)

或者

python
for i in range(2, 10):
    if i % 2 != 0:
        print(i)

输出

3
5
7
9

示例 #4

打印 python programming 中所有 o 出现的索引。

代码

python
s = "python programming"
for i in range(len(s)):
    if s[i] == "o":
        print(i)

输出

4
9

练习

让我们看一些使用 for 迭代语句的编程问题。

1. 复利

编写一个程序,计算给定本金、利率(年复利)和总时间(年)应支付的总复利。

代码

python
prin = float(input("输入本金金额: "))
rate = float(input("输入年利率: "))
time = int(input("输入贷款期限(年): "))

amt = prin
for n in range(time):
    amt += rate*amt/100

print("应付总利息:", amt - prin)

输出

输入本金金额: 500000
输入年利率: 5
输入贷款期限(年): 3
应付总利息: 78812.5

2. 阶乘

正整数 n 的阶乘,表示为 n!,是所有小于或等于 n 的正整数的乘积。 n! = n×(n-1)×(n-2)...3×2×1 编写一个程序,为给定的 n 计算 n!(假设 n 大于 0)。

代码

python
n = int(input("输入 n: "))

factorial = 1
for i in range(1, n+1):
    factorial *= i

print("n! :", factorial)

输出

输入 n: 6
n! : 720