第九次博客

一、while循环

之前已经简单介绍过while循环了,这里是介绍一下while循环的一些其他用法和功能。

1.while循环最简单的用法:拿来数数,比如从零数到五:

>>> number=0
>>> while number<=5:
    print(number)
    number+=1

    
0
1
2
3
4
5
2.while循环可以让用户选择何时退出:我们在其中定义了一个退出值,只要用户输入的是这个值,程序就会退出:

>>> message=""
>>> while message!='quit':
    message=input()
    print(message)

    
star
star
quit
quit
>>>

这里我们将变量message 的初始值设置为空字符串"" ,让Python首次执行while 代码行时有可供检查的东西。Python首次执行while 语句时,需要 将message 的值与'quit' 进行比较,但此时用户还没有输入。如果没有可供比较的东西,Python将无法继续运行程序。为解决这个问题,我们必须给变量message 指定一个 初始值。虽然这个初始值只是一个空字符串,但符合要求,让Python能够执行while 循环所需的比较。

但是这个程序有个小问题,就是最后输入的'quit'也被打印出来了,解决很简单,用一个if测试就行了:

>>> message=""
>>> while message!='quit':
    message=input()
    if message!='quit':
        print(message)

        
star
star
quit
>>>

3.使用标志:在前一个示例中,我们让程序在满足指定条件时就执行特定的任务。但在更复杂的程序中,很多不同的事件都会导致程序停止运行;在这种情况下,该怎么办呢?在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志。你可让程序在标志 为True 时继续运行,并在任何事件导致标志的值为False 时让程序停止运行。这样,在while 语句中就只需检查一个条件——标志的当前值是否为True ,并将所有测试(是 否发生了应将标志设置为False 的事件)都放在其他地方,从而让程序变得更为整洁。就比如这样:

>>> active=True
>>> while active:
    message=input()
    if message=='quit':
        active=False
    else:
        print(message)

        
star
star
shy
shy
quit
>>>

4.使用break退出循环:要立即退出while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break 语句。break 语句用于控制程序流程,可使用它来控制哪些代码行将执行, 哪些代码行不执行,从而让程序按你的要求执行你要执行的代码。如:
>>> while True:
    message=input()
    if message=='quit':
        break
    else:
        print(message)

        
star
star
shy
shy
quit
>>>

5.在循环中使用continue:要返回到循环开头,并根据条件测试结果决定是否继续执行循环,可使用continue 语句,它不像break 语句那样不再执行余下的代码并退出整个循环。例如,来看一个从1数 到10,但只打印其中奇数的循环:

>>> number=0
>>> while number<10:
    number+=1
    if number%2==0:
        continue
    print(number)

    
1
3
5
7
9
>>>

对这个程序大家肯定会有更好的方法,这里我只是为了向大家展示continue的用法,大家不要介意。

二、使用while循环来处理列表和字典

1.在列表中移动元素:假设有一个列表,其中包含新注册但还未验证的网站用户;验证这些用户后,如何将他们移到另一个已验证用户列表中呢?一种办法是使用一个while 循环,在验证用户的同时 将其从未验证用户列表中提取出来,再将其加入到另一个已验证用户列表中。方法如下:

# 首先,创建一个待验证用户列表

>>>unconfirmed_users = ['alice', 'brian', 'candace']

 #  创建一个用于存储已验证用户的空列表

>>> confirmed_users = []

 # 验证每个用户,直到没有未验证用户为止 

 #  将每个经过验证的列表都移到已验证用户列表中

>>> while unconfirmed_users: 

              current_user = unconfirmed_users.pop()     

              print("Verifying user: " + current_user.title()) 

              confirmed_users.append(current_user)

 # 显示所有已验证的用户

        print("\nThe following users have been confirmed:")

        for confirmed_user in confirmed_users:

               print(confirmed_user.title())

Verifying user: Candace

Verifying user: Brian

Verifying user: Alice

The following users have been confirmed:

Candace

Brian

Alice

2.删除包含特定值的所有列表函数:我们可以使用函数remove() 来删除列表中的特定值,这之所以可行,是因为要删除的值在列表中只出现了一次。如果要删除列表中所有包含特定值的元素,该怎么办 呢?要删除所有这些元素,可不断运行一个while 循环,直到列表中不再包含特定值。如下:

>>> s=[1,2,3,4,1,2,1]
>>> print(s)
[1, 2, 3, 4, 1, 2, 1]
>>> while 1 in s:
    s.remove(1)

    
>>> print(s)
[2, 3, 4, 2]
>>>

注意:在使用while循环是要避免无限循环,每个while 循环都必须有停止运行的途径,我们可以设定特定的程序让while后面的条件不成立或者使用break退出循环。

上一篇:nginx 基础


下一篇:程序格式、缩进、行注释、段注释