7.2while循环简介
for 循环用于针对集合中的每个元素都执行一个代码块,而while 循环则不断运行,直到指定的条件不满足为止。
7.2.1 使用while循环
可使用while循环来数数。例如,下面的while循环从1数到5;
current_number = 0
while current_number <= 5:
print(current_number)
current_number += 1
上面的while 循环:只要current_number小于或等于5,就接着运行这个循环。循环中的代码打印current_number的值,再使用current_number += 1(代码:current_number =current_number+ 1的简写)将其值加1.
输出:0
1
2
3
4
5
例如,游戏中使用while循环,确保玩家在想玩时不断运行,并在玩家想退出时停止运行。
7.2.2让用户选择何时退出
可以使用while循环让程序在用户原意时不断运行,如下面的程序parrot.py所示,我们在其中定义了一个退出值,只要用户输入的不是这个值,程序就接着运行。
prompt = "\nTell me something,and I will repeat it back to you:"
prompt +="\nEnter 'quit' to end the program. "
message = ""
while message != 'quit':
message = input(prompt)
print(message)
上文定义了一条提示消息,告诉用户有两个选择:要么输入一条消息,要么输入退出值。接下来,创建变量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. 554
554
Tell me something,and I will repeat it back to you:
Enter 'quit' to end the program. 558
558
Tell me something,and I will repeat it back to you:
Enter 'quit' to end the program. quit
quit
很容易发现,他将单词 quit 也作为一条消息打印出来了,为修复这种问题,只需要使用一个简单的if 测试:
prompt = "\nTell me something,and I will repeat it back to you:"
prompt +="\nEnter 'quit' to end the program. "
message =""
while message != 'quit':
message = input(prompt)
if message !='quit':
print(message)
这样就会仅在消息不是退出值时才打印他。
7.2.3使用标志
在更复杂的程序中,很多不同的事件会导致程序停止运行。
例如,有多种事件可能导致游戏停止运行,如玩家失去所有的飞船、时间已用完,或者要保护的城市被摧毁。导致程序结束的事件有很多时,如果在一条while语句中检查所有的这些条件,将十分复杂。
在要求很多条件都满足的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量称为标志(flage),可以让程序在ture时继续运行,并在任何事件导致标志的值为false时停止运行。这样,在while语句就只需要检查一个条件:标志的当前值是否为ture,然后将其所有其他测试都放在其他地方,从而让程序更简洁。
下面在前一节的程序中添加一个标志,将其命名为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)
祝大家一战上岸!