第二章 控制流
控制流语句可以决定在什么条件下执行哪些Python语句
布尔值
定义:布尔数据类型只有两种值:True和False
用法:
1.布尔值可以用在表达式中,并且可以保存在变量中
>>>spam = True >>>spam True
2.如果大小写不正确,会报错
3.不能使用True或False作为变量名
比较操作符
定义:'比较操作符'比较两个值,求值为一个布尔值True或False
操作符 含义
== 等于
!= 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
布尔操作符
有3个布尔操作符(and,or和not)用于比较布尔值。
and:
>>>True and False True
or:
>>>True or False True >>>False or False False
not:
>>>not True False
混合布尔和比较操作符
>>>(4<5) and (4<3) False
注意:和数学操作符一样,布尔操作符也有操作顺序。在所有数学和比较操作符求值后,Python的布尔求值顺序:
1.not
2.and
3.or
控制流的元素:
1.条件:几乎所有的控制流语句都使用条件
2.代码块(也称为子句),缩进表示开始和结束,且有3条规则:
a.缩进增加时,代码块开始
b.代码块可以包含其他代码块
c.缩进减少为0,或减少为外面包围代码块的缩进,代码块就结束了
if语句:
- if关键字
- 条件(True或False)
- 冒号
- 在下一行开始,缩进的代码块(称为if子句)
else语句:
定义:只有if语句为False,才执行else子句
用法:如果希望更多的子句被执行。那么就可以使用elif语句
if age > 12: print('dick ') elif age <12: #一旦找到True条件,剩余子句就会自动跳过 print('jacky') else: # 如果希望确保至少一条子句被执行,在最后加上else语句; print("Jane")
最多只有一个子句会执行
while循环语句
spam = 0 if spam < 5: print('hello world') spam +=1 #输出 hello world spam =0 while spam <5: print('hello world') spam+=1 #输出 hello world hello world hello world hello world hello world # 在while循环中,条件总是在每次迭代开始时检查(也就是每次循环执行时)。如果条件为True,子句就会执行,然后,再次检查条件。当条件第一次为False时,while子句就跳过。
break语句
用法:
有一个捷径,让执行提前跳出while循环子句。
while True: print('please type your name:') name = input() if name == 'dick': break print('Thank you!')
解析:
a.程序要求用户输入name,如果用户输入不是dick,那么就一直循环,到if语句判断为False后跳过if子句,让执行到达while循环的末尾。此时,程序执行跳回到while语句的开始,重新检查条件,因为条件是True,所以让用户重新输入,再if判断
b.一旦用户输入dick,if条件为True,就会执行break语句,跳出while循环子句,接着执行print('Thank you!')
continue语句
用法:像break一样,continue语句用于循环内部。如果程序执行遇到continue语句,就会马上跳回到循环开始处,重新对循环条件求值
for循环和range()函数
"类真"和"类假"的值
0,0.0,和''空字符串被认为是False,其他值被认为是True
组成部分:
- for关键字
- 一个变量名
- in关键字
- 调用range()方法,最多传入3个参数
- 冒号
- 从下一行开始,缩退的代码块(称为for的子句)
print('My name is:') for i in range(5): print('dick five times ( ' + str(i)+')') #输出 My name is: dick five times (0) dick five times (1) dick five times (2) dick five times (3) dick five times (4)
#只能在while和for循环内部使用continue和break语句。如果在别处使用这些语句,python就会报错。
range()的开始,停止和步长参数
for i range(12,16,2)
第一个参数是for循环变量开始的值,
第二个参数是上限,但不包含它,也就是循环停止的数字
第三个参数是步长(每次迭代后循环变量增加的值)
导入模块
我们通常使用的是一些python基本函数,也称为”内建函数“像print(),len(),input(),同时python也包括一组模块,称为"标准库",因此在使用前,必须使用import导入该模块
import组成
- import关键字
- 模块的名称
- 可选的更多模块名称,之间用逗号隔开
用sys.exit()提前结束程序
如何终止程序,可以通过调用sys.exit()函数,可以让程序终止或退出。所以必须先导入再使用
import sys while True: print('Type exit to exit!') response = input() if response == 'exit': sys.exit() print('You typed'+ response +'.')
习题:
1.布尔数据类型的两个值是什么?如何拼写?
答:
False和True,使用大写字母T和F
2.3个布尔操作符是什么?
not ,and ,or
3.写出每个布尔操作符的真值表
答:
not:
>>>not False True >>>not True False
and:
>>>False and False False >>>True and False False
or:
>>>False or False False >>>True or False True
4.以下表达式求值得结果是什么?
答:
False
False
True
False
False
True
5.6个比较操作符是什么?
答:
== != > < >= <=
6.等于操作符和赋值操作符的区别是什么?
答:
= 赋值操作符,x=0 ,是将0赋值给x,保存在变量中
而==操作符是用在表达式中,是表示某个变量之间的比较关系,求值为布尔值
7.解释什么是条件,可以在哪里使用条件?
答:条件是表达式,用来判断的,用于控制流语句,求值为一个布尔值,可以在if/for/while中使用条件
8.识别这段代码中的3个语句块。
print('eggs')
if spam > 5:
print('bacon')
else:
print('ham')
print('spam')
答:
if语句中全部内容,以及print('bacon')、print('ham')这两行
9.编写代码,如果变量spam中存放1,就打印Hello,如果变量中存放2,就打印Howdy,如果变量中存放其他值,就打印Greetings!
答:
spam = '' if spam =1: print('Hello') elif spam = 2: print('Howdy') else: print('Greetings!')
10.如果程序陷在一个无限循环中,你可以按什么键?
答:
Ctrl+C
11.break和continue之间的区别是什么?
答:
break是跳出本次循环语句
continue是跳到循环开始处,进行再循环
12.在for循环中,range(10),range(0,10)和range(0,10,1)之间的区别是什么?
答:
range(10)表示0-9
range(0,10) 同上
range(0,10,1)间隔1递增
13.编写一小段程序,利用for循环,打印出从1到10的数字。然后利用while循环,编写一个等价的程序,打印出从1到10的数字。
答:
i = 1 for i in range(11): print(i) 等价于 i = 1 while i < 11: print(i) i+=1
14.如果在名为spam的模块中,有一个名为bacon()的函数,那么在导入spam模块后,如何调用它?
答:
import spam spam.bacon()