设为首页 加入收藏

TOP

第七章 用户输入和while语句(四)
2017-10-10 08:26:22 】 浏览:7050
Tags:用户 输入 while 语句
to end the program. "

message = "" ——(2)
while message != 'quit': ——(3)
message = input(prompt)
print(message)
在(1)处,我们定义了一条消息,告诉用户他有两个选择:要么输入一条消息,要么输入退出值(这里为'quit')。接下来,我们创建了一个变量——message
用于存储用户输入的值。我们将变量message的初始值设置为空字符串"",让Python首次执行while代码时有可供检查的东西。Python首次执行while语句时,
需要将message的值与'quit'进行比较,但此时用户还没有输入。如果没有可供比较的东西,Python将无法运行程序。为解决这个问题,我们必须给变量message
指定一个初始值。虽然这个初始值只是一个空字符串,但符合要求,让Python能够执行while循环所需的比较。只是message的值不是'quit',这个循环就会不断
运行。
首次遇到这个循环时,message是一个空字符串,因此Python进入这个循环。执行到代码行message = input(prompt)时,Python显示提示消息,并等待用
户输入。不管用户输入是什么,都将存储到变量message中并打印出来;接下来,Python重新检查while语句中的条件。只要用户输入的不是单词'quit',Python
就会再次显示提示消息并等待用户输入。等到用户终于输入'quit'后,Python停止执行while循环,而整个程序也到此结束。
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. Hello everyone
Hello everyone

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. Hello again
Hello again

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. quit
quit
这个程序很好,唯一美中不足的是,它将单词'quit'也作为一条消息打印了出来。为修复这种问题,只需要使用一个简单的if测试:
propmt = "\nTell me something and I will repeat it back to you: "
propmt += '\nEnter "quit" to end the program. '

message = ''
while message != 'quit':
message = input(propmt)
if message != 'quit':
print(message)
这个程序与上面程序的区别是,这个程序在打印的时候进行了一次判断,判断在什么样的条件下才允许打印,什么样的情况下不允许打印。
现在,程序在显示消息前做简单的检查,仅在消息不是退出值时才打印它:
Tell me something and I will repeat it back to you:
Enter "quit" to end the program. Hello everyone!
Hello everyone!

Tell me something and I will repeat it back to you:
Enter "quit" to end the program. Hello again.
Hello again.

Tell me something and I will repeat it back to you:
Enter "quit" to end the program. quit

7.2.3 使用标志
在前一个示例中,我们让程序在满足指定条件时就执行特定的任务。但在更复杂的程序中,很多不同的事件都会导致程序停止运行;在这种情况下,该怎么
办呢?
例如,在游戏中,多种事情都可能导致游戏结束,如玩家一艘飞船都没有了或者要保护的城市被摧毁了。导致程序结束的事件有很多时,如果在一条while
语句中检查所有这些条件,将即复杂又困难。
在要求很多条件都满足才能继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。整个变量被称为标志,充当了程序的交通信号灯,
我们可让程序在标志为True时继续运行,并在任何事件导致标志的值为False时让程序停止运行。这样,在while语句中就只需检查一个条件——标志的当前值是
否为True,并将所有测试(是否发生了应将标志设置为False的事件)都放在其他地方,从而让程序变得更为整洁。
下面来在前一节的程序parrot.py中添加一个标志。我们把这个标志命名为active(可给它指定任何名称),它将用于判断程序是否应继续运行:
prompt = "\nTell me something and I will repeat it back to you: "
prompt += "\nEnter 'quit' to end the program. "

active = True
while active:
message = input(prompt)

if message == 'quit':
active = False
else:
print(message)

我们将变量active设置成了True,让程序最初处于活动状态。这样做简化了while语句,因为不需要在其中做任何比较——相关的逻辑由程序的其他部分
处理。只要变量active为True,循环就将继续运行。
在while循环中,我们在用户输入后使用一条if语句来检查变量message的值。如果用户输入的是'quit',我们就将变量active设置为False,这将导致
while循环不在执行。如果用户输入的不是'quit',我们就将输入作为一条消息打印出来。
这个程序的输出与前一个示例相同。在前一个示例中,我们将条件测试直接放在了while语句中,而在这个程序中,我们使用了一个标志来指出程序是否处于
活动状态,这样如果要添加测试(如elif语句)以检查是否发生了其他导致active变为False的事件,将很容易。在复杂的程序中,如很多事件都会导致程序停止
运行的游戏中,标志很有用:在其中的任何一个事件导致活动标志变成False时,主游戏循环将退出,此时可显示一条游戏结束消息,并让用户选择是否要重新玩
标志事件可能有时候很有用,然而不断如何使用,我们一定要记得,如何开启while循环,以及如何退出这个循环,不能让while循环变成死循环,一直不停
的运行,这样就没有太多的意义了。

7.2.4 使用break退出循环
立即退出while循环,不再运行循环中余下的代码,也不管条件测试的结果如何,可使用break语句。break语句用于控制程序流程,可使用它来控制
哪些代码行将执行,哪些代码行不执行,从而让程序按我们的要求执行要执行的代码。
例如,来看一个让用户指出他到过哪些地方的程序。在这个程序中,我们可以在用户输入'quit'后使用break语句立即退出while循环:
prompt = '\nPlease enter the name of a city yo
首页 上一页 1 2 3 4 5 6 下一页 尾页 4/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python基础-简介一 下一篇一个小型的文本分类系统-python(..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目