循环
要计算 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 进程。