2.4 计算机能循环
1.for循环
循环用于重复执行一些程序块,在Python中,循环有for和while两种,我们先来看for循环。
从2.3节的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。隶属于循环结构的、需要重复的程序会被缩进,比如:
for a in [3,4.4,"life"]:
print(a) # 依次打印列表里的各个元素
这个循环就是每次从列表[3,4.4,"life"] 中取出一个元素,然后将这个元素赋值给 a,之后执行隶属于for的程序,也就是调用print()函数,把这个元素打印出来。可以看到,for的一个基本用法是在in后面跟一个序列:
for 元素 in 序列:
statement
序列中元素的个数决定了循环重复的次数。示例中有3个元素,所以print()会执行3次。也就是说,for循环的重复次数是确定的。for循环会依次从序列中取出元素,赋予给紧跟在for后面的变量,也就是上面示例中的 a 。因此,尽管执行的语句都相同,但由于数据发生了变化,所以相同的语句在三次执行后的效果也会发生变化。
从序列中取出元素,再赋予给一个变量并在隶属程序中使用,是for循环的一个便利之处。但有的时候,我们只是想简单地重复特定的次数,不想建立序列,那么我们可以使用Python提供的range()函数:
for i in range(5):
print("Hello World!") # 打印五次"Hello World!"
程序中的5向range()函数说明了需要重复的次数。因此,隶属于for的程序执行了5次。这里,for循环后面依然有一个变量 i ,它为每次循环起到了计数的功能:
for i in range(5):
print(i, "Hello World! ") # 打印序号和"Hello World!"
可以看到,Python中range()提供的计数也是从0开始的,和表的下标一样。我们还看到print()的新用法,就是在括号中说明多个变量,用逗号分开。函数print()会把它们都打印出来。
我们看一个for循环的实用例子。我们之前用元组记录了房贷的逐年利率:
interest_tuple = (0.01, 0.02, 0.03, 0.035, 0.05)
假如有50万元的房贷,且本金不变,那么每年要还的利息有多少呢?用for循环计算:
total = 500000
for interest in interest_tuple:
repay = total * interest
print("每年的利息:", repay)
2.while循环
Python中还有一种循环结构,即while循环。while的用法是:
i = 0
while i < 10:
print(i)
i = i + 1 # 从0打印到9
while后面紧跟着一个条件。如果条件为真,则while会不停地循环执行隶属于它的语句。只有条件为假时,程序才会停止。在while的隶属程序中,我们不断改变参与条件判断的变量 i ,直到它变成10,以至于还不满足条件而终止循环。这是while循环常见的做法。否则,如果while的条件始终为真,则会变成无限循环。
一旦有了无限循环,程序就会不停地运行下去,直到程序被打断或电脑关机。但有时,无限循环也是有用处的。很多图形程序中就有无限循环,用于检查页面的状态等。如果我们开发一个无限抢票的程序,这样的无限循环听起来也不错。无限循环可以用简单暴力的方法写出来:
while True:
print("Hello World!")
总之,循环实现了相同代码的重复执行,如图2-3所示。
图2-3 循环
3.跳过或终止
循环结构还提供了两个有用的语句,可以在循环结构内部使用,用于跳过或终止循环。
continue #跳过循环的这一次执行,进行下一次的循环操作
break # 停止执行整个循环
下面的例子中使用了continue:
for i in range(10):
if i == 2:
continue
print(i) # 打印0、1、3、4、5、6、7、8、9,注意跳过了2。
当循环执行到 i 为2的时候,if条件成立,触发continue,不打印此时的 i ,程序直接进行下一次循环,把3赋值给 i ,继续执行for的隶属语句。
continue只是跳过某次循环,而break要暴力得多,它会中止整个循环。
for i in range(10):
if i == 2:
break
print(i) # 只打印0和1
当循环执行到 i = 2
的时候,if条件成立,触发break,整个循环停止。程序不再执行for循环内部的语句。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论