循环

120 阅读2分钟

循环

要计算 1+2+3,我们可以直接写表达式:

>>> 1 + 2 + 3 
6 

要计算 1+2+3+...+10,勉强也能写出来。 但是,要计算 1+2+3+...+10000,直接写表达式就不可能了。为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。

Python 的循环有两种,一种是 for...in 循环,依次把 list 或 tuple 中的每 个元素迭代出来,看例子:

names = ['Michael', 'Bob', 'Tracy'] 
for name in names: 
	print(name) 

执行这段代码,会依次打印 names 的每一个元素:

Michael 
Bob 
Tracy 

所以 for x in ...循环就是把每个元素代入变量 x,然后执行缩进块的语句。

再比如我们想计算 1-10 的整数之和,可以用一个 sum 变量做累加:

sum = 0 
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]: 
	sum = sum + x 
	print(sum) 

如果要计算 1-100 的整数之和,从 1 写到 100 有点困难,幸好Python 提供一个 range()函数,可以生成一个整数序列,再通过 list()函数可以转换为 list。比如 range(5)生成的序列是从 0 开始小于 5 的整数:

>>> list(range(5)) 
[0, 1, 2, 3, 4] 

range(101)就可以生成 0-100 的整数序列,计算如下:

sum = 0 
for x in range(101): 
	sum = sum + x 
print(sum) 

请自行运行上述代码,看看结果是不是当年高斯同学心算出的 5050。

第二种循环是 while 循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算 100 以内所有奇数之和,可以用 while 循环

实现:

sum = 0 
n = 99 
while n > 0: 
	sum = sum + n 
	n = n - 2 
print(sum) 

在循环内部变量 n 不断自减,直到变为-1 时,不再满足 while 条件循环退出。

循环是让计算机做重复任务的有效的方法,有些时候,如果代码写得有 问题,会让程序陷入“死循环”,也就是永远循环下去。这时可以用 Ctrl+C 退出程序,或者强制结束 Python 进程。