要点概括:

LoopStatement-contents

1.for 语句

for 循环可以遍历任何序列,可以是一个列表或者一个字符串,如下所示:

1
2
3
a = ['banana', 'apple', 'microsoft']
for element in a:
    print(element)

输出结果如下:

1
2
3
banana
apple
microsoft

再看另外一个例子,该例子用于求列表元素的总和,如下所示:

1
2
3
4
5
b = [20, 10, 5]
total = 0
for e in b:
    total += e  # 也可以写成 total = total + e
print(total)

输出结果如下:

1
35

2.range()函数

range()函数用于生成数字序列,一般用在for循环中,它由三种形式:

(1)不指定区间,如下所示:

1
2
for i in range(5):
    print(i)

输出结果如下:

1
2
3
4
5
0  # 默认从0开始
1
2
3
4

(2)指定区域范围,但不包括最右侧的数,如下所示:

1
2
for i in range(5, 10):
    print(i)

输出结果如下:

1
2
3
4
5
5
6
7
8
9  #从结果可以看出,不包括10

此外,range(5)range(0, 5)作用相同。

(3)指定步长(增量),如下所示:

1
2
for i in range(1, 10, 2): # 步长为2
    print(i)

输出结果如下:

1
2
3
4
5
1
3
5
7
9

此外,还可以用range()函数创建一个列表,如下所示:

1
2
a = list(range(1, 5))
print(a)

输出结果如下:

1
[1, 2, 3, 4]

下面用range()求序列的总和,如下所示:

1
2
3
4
total = 0
for i in range(1, 5):
    total += i
print(total)

输出结果如下:

1
10

下面用range()函数求序列中能被3整除的元素之和,如下所示:

1
2
3
4
5
total = 0
for i in range(1, 8):
    if i % 3 == 0:
        total += i
print(total)

输出结果如下:

1
9  # 在1到7的序列中,能被3整除的有3和6

好了,对于列表a = ['banana', 'apple', 'microsoft'],我现在想输出一行banana,两行apple,三行microsoft,该如何做到呢?如下所示:

1
2
3
4
5
6
7
a = ['banana', 'apple', 'microsoft']
for i in range(len(a)):  # 0, 1, 2
    for j in range(i + 1):
        # i = 0 -> j = 0
        # i = 1 -> j = 0, 1
        # i = 2 -> j = 0, 1, 2
        print(a[i])

输出结果如下:

1
2
3
4
5
6
banana
apple
apple
microsoft
microsoft
microsoft

3.while 语句

while语句的一般形式为:

1
2
3
4
5
while condition:
    statement1
    statement2
    statement3
    ......

首先判断条件是True还是False,若为True,则执行statement语句块,若为False,则不执行statement语句内容。

下面的例子实现了1+2+3+4的功能,如下所示:

1
2
3
4
5
6
total = 0
j = 1
while j < 5:
    total += j
    j += 1
print(total)

输出结果如下:

1
10
  • 首先根据total = 0,j = 1。因为1 < 5成立,所以total = 1,j = 2
  • 然后根据total = 1,j = 2。又因为2 < 5成立,所以total = 3,j = 3
  • 其次根据total = 3,j = 3。又因为3 < 5成立,所以total = 6,j = 4
  • 再次根据total = 6,j = 4。又因为4 < 5成立,所以total = 10,j = 5
  • 最后根据total = 10,j = 5。又因为4 < 5不成立,所以最终total = 10

下面用于求列表中所有大于0的元素的和,如下所示:

1
2
3
4
5
6
7
given_list = [5, 4, 4, 3, 1, -2, -3, -5]
total = 0
i = 0
while given_list[i] > 0:  # given_list[i]用于取出列表当中索引为i的元素
    total += given_list[i]
    i += 1
print(total)

输出结果如下:

1
17

下面用len()方法对上面的功能进行改写,len()方法用于求列表的元素个数,如下所示:

1
2
3
4
5
6
7
given_list = [5, 4, 4, 3, 1, -2, -3, -5]
total = 0
i = 0
while i < len(given_list) and given_list[i] > 0:
    total += given_list[i]
    i += 1
print(total)

输出结果如下:

1
17

再来,下面实现求列表given_list = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7]中负数元素的和,如下所示:

1
2
3
4
5
6
7
given_list = [7, 5, 4, 4, 3, 1, -2, -3, -5, -7]
total = 0
j = len(given_list) - 1  # 这里len(given_list)为10
while given_list[j] < 0:  # 列表索引从0到9
    total += given_list[j]
    j -= 1
print(total)

输出结果如下:

1
-17

4.break 语句

break语句可以跳出forwhile的循环体,如下所示:

1
2
3
4
5
6
7
given_list = [5, 4, 4, 3, 1, -2, -3, -5]
total = 0
for element in given_list:
    if element <= 0:
        break
    total += element
print(total)

输出结果如下:

1
17

可以看到,如果列表中的元素小于等于0,则跳出for循环,也就不执行total += element语句了。

再看一个带有while语句的例子,如下所示:

1
2
3
4
5
6
7
8
9
given_list = [5, 4, 4, 3, 1, -2, -3, -5]
total = 0
i = 0
while True:
    total += given_list[i]
    i += 1
    if given_list[i] <= 0:
        break
print(total)

输出结果如下:

1
17

5.continue 语句

continue语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环,如下所示:

1
2
3
4
for letter in 'Hello abc':  # 第一个实例
    if letter == 'o':  # 字母为o时跳过输出
        continue
    print('当前字母 :', letter)

输出结果如下:

1
2
3
4
5
6
7
8
当前字母 : H
当前字母 : e
当前字母 : l
当前字母 : l
当前字母 :  
当前字母 : a
当前字母 : b
当前字母 : c