第二章 控制流

控制流语句可以决定在什么条件下执行哪些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
View Code

 

 

and

>>>False and False

False

 

>>>True and False

False
View Code

 

 

or

>>>False or False

False

 

>>>True or False

True
View Code

 

 

4.以下表达式求值得结果是什么?

答:

False

False

True

False

False

True

 

5.6个比较操作符是什么?

答:

==

!=

> 

< 

>=
<=
View Code

 

 

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!')
View Code

 

 

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
View Code

 

 

14.如果在名为spam的模块中,有一个名为bacon()的函数,那么在导入spam模块后,如何调用它?

答:

import spam

 

spam.bacon()
View Code

 

 

 

 

posted @ 2017-06-13 09:22  Mr.hu  阅读(510)  评论(0编辑  收藏  举报