要点概括:
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)
|
输出结果如下:
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)
|
输出结果如下:
此外,还可以用range()
函数创建一个列表,如下所示:
1
2
|
a = list(range(1, 5))
print(a)
|
输出结果如下:
下面用range()
求序列的总和,如下所示:
1
2
3
4
|
total = 0
for i in range(1, 5):
total += i
print(total)
|
输出结果如下:
下面用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)
|
输出结果如下:
- 首先根据
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)
|
输出结果如下:
下面用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)
|
输出结果如下:
再来,下面实现求列表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)
|
输出结果如下:
4.break 语句
break
语句可以跳出for
和while
的循环体,如下所示:
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)
|
输出结果如下:
可以看到,如果列表中的元素小于等于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)
|
输出结果如下:
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
|