返回介绍

2.4 计算机能循环

发布于 2023-06-02 10:04:35 字数 10910 浏览 0 评论 0 收藏 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文