在Python中,for和while循环非常灵活,但偶尔遇到的一些问题可能让你禁不住想:如果这 些循环的功能更强些就好了。例如,假设你要在用户根据提示输入单词时执行某种操作,并在用 户没有提供单词时结束循环。为此,一种办法如下:
word = 'dummy'
while word:
word = input('Please enter a word: ')
# 使用这个单词做些事情:
print('The word was', word)
这些代码的运行情况如下:
Please enter a word: first
The word was first
Please enter a word: second
The word was second
Please enter a word:
这与你希望的一致,但你可能想使用单词做些比打印它更有用的事情。然而,如你所见,这 些代码有点难看。为进入循环,你需要将一个哑值(未用的值)赋给word。像这样的哑值通常昭 示着你的做法不太对。下面来尝试消除这个哑值。
word = input('Please enter a word: ')
while word:
# 使用这个单词做些事情:
print('The word was ', word)
word = input('Please enter a word: ')
哑值消除了,但包含重复的代码(这样也不好):需要在两个地方使用相同的赋值语句并调 用input。如何避免这样的重复呢?可使用成例while True/break。
while True:
word = input('Please enter a word: ')
if not word: break
# 使用这个单词做些事情:
print('The word was ', word)
while True导致循环永不结束,但你将条件放在了循环体内的一条if语句中,而这条if语句 将在条件满足时调用break。这说明并非只能像常规while循环那样在循环开头结束循环,而是可 在循环体的任何地方结束循环。if/break行将整个循环分成两部分:第一部分负责设置(如果使 用常规while循环,将重复这部分),第二部分在循环条件为真时使用第一部分初始化的数据。
虽然应避免在代码中过多使用break(因为这可能导致循环难以理解,在一个循环中包含多 个break时尤其如此),但这里介绍的技巧很常见,因此大多数Python程序员(包括你自己)都能 够明白你的意图。








暂无数据