要介绍的最后一个控制流概念,是如何终止程序。当程序执行到指令的底部时,
总是会终止。但是,通过调用 sys.exit()函数,可以让程序终止或退出。因为这个函数在 sys 模块中,所以必须先导入 sys,才能使用它。
打开一个新的文件编辑器窗口,输入以下代码。保存为 exitExample.py:
import sys
while True:
print('Type exit to exit.') response = input()
if response == 'exit': sys.exit()
print('You typed ' + response + '.')
在 IDLE 中运行这个程序。该程序有一个无限循环,里面没有 break 语句。结束该程序的唯一方式,就是用户输入 exit,导致 sys.exit()被调用。如果 response 等于
exit,程序就会中止。因为 response 变量由 input()函数赋值,所以用户必须输入 exit,才能停止该程序。
2.10 小结
通过使用求值为 True 或 False 的表达式(也称为条件),你可以编写程序来决
定哪些代码执行,哪些代码跳过。可以在循环中一遍又一遍地执行代码,只要某个条件求值为 True。如果需要跳出循环或回到开始处,break 和continue 语句很有用。
这些控制流语句让你写出非常聪明的程序。还有另一种类型的控制流,你可以通过编写自己的函数来实现。这是下一章的主题。
2.11 习题
1.布尔数据类型的两个值是什么?如何拼写?
2.3 个布尔操作符是什么?
3.写出每个布尔操作符的真值表(也就是操作数的每种可能组合,以及操作的结果)。
4.以下表达式求值的结果是什么?
(5 > 4) and (3 == 5)
not (5 > 4)
(5 > 4) or (3 == 5)
not ((5 > 4) or (3 == 5))
(True and True) and (True == False) (not False) or (not True)
5.6 个比较操作符是什么?
6.等于操作符和赋值操作符的区别是什么?
7.解释什么是条件,可以在哪里使用条件。
8.识别这段代码中的 3 个语句块:
spam = 0
if spam == 10: print('eggs') if spam > 5:
print('bacon') else:
print('ham')
print('spam')
print('spam')
9.编写代码,如果变量 spam 中存放 1,就打印Hello,如果变量中存放 2,就打印Howdy,如果变量中存放其他值,就打印 Greetings!
10.如果程序陷在一个无限循环中,你可以按什么键? 11.break 和 continue 之间的区别是什么?
12.在 for 循环中,range(10)、range(0, 10)和 range(0, 10, 1)之间的区别是什么? 13.编写一小段程序,利用 for 循环,打印出从 1 到 10
的数字。然后利用 while
循环,编写一个等价的程序,打印出从 1 到 10 的数字。
14.如果在名为 spam 的模块中,有一个名为 bacon()的函数,那么在导入 spam
模块后,如何调用它?
附加题:在因特网上查找 round()和 abs()函数,弄清楚它们的作用。在交互式环境中尝试使用它们。