在Python的流程控制的核心在于利用布尔逻辑去控制流程,其中主要包含了3个语句,以if为关键词的if结构,以for为关键词的for循环,以while为关键词的while循环。后文将分别对布尔逻辑、代码块、if结构(分支结构)、for循环、while循环进行介绍。先用一张流程图描述一下流程控制的概念:
True和False
需要注意的有:
(1)首字母大写;
(2)不能作为变量名,
操作符 | 含义 |
---|---|
== | 等于 |
!= | 不等于等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
比较运算符计算结果为布尔值,如下:
>>> 42 == 42
>>> 42 == 99
True
False
>>> 2 != 3
True
>>> 2 != 2
False
这里着重讲一下==和=的区别
包括三个运算符,and,or 以及not,其中and和or作用两个布尔值或表达式之前,not作用于一个布尔值和表达式之间。
用法参见表:
表达式 | 结果 |
---|---|
True and True | True |
True and False | False |
False and True | False |
False and False | False |
True or True | True |
True or False | True |
False or True | True |
False or False | False |
not True | False |
not False | True |
将比较运算符和布尔运算符混合使用即是布尔逻辑表达式,看看例子:
>>> (4 < 5) and (5 < 6)
True
>>>
还是用代码去理解:
name = 'Mary'
password = 'swordfish'
if name == 'Mary':
print('Hello Mary')
if password == 'swordfish':
print('Access granted.')
else:
print('Wrong password.')
这里有三个代码块,第一个if下面的缩进,第二个if下面的缩进以及else下面的缩进。
语法规则:
if condition:
clause #if子句
实例:
if name == 'Alice':
print('Hi, Alice.')
语法规则:
else :
clause #if子句
实例如下:
name = 'Bob'
if name == 'Alice':
print('Hi, Alice.')
else:
print('Hello, stranger.')
语法规则:
elif condition:
clause #if子句
实例如下:
name = 'Bob'
age = 5
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
实例:
name = 'Bob'
age = 30
if name == 'Alice':
print('Hi, Alice.')
elif age < 12:
print('You are not Alice, kiddo.')
else:
print('You are neither Alice nor a little kid.')
while condition:
clause #while子句
Note:
当while后的条件计算为True时一直循环,循环过程为执行完代码块后又回到代码块的第一行继续执行代码。
代码演示:
spam = 0
while spam < 5:
print('Hello, world.')
spam = spam + 1
执行结果为:
Hello, world.
Hello, world.
Hello, world.
Hello, world.
Hello, world.
当在while循环中使用break时,循环立刻停止。在使用 while True: 循环时很有用,比如应用于输入正确用户名的场景下。
while True:
print('Please type your name.')
name = input()
if name == 'your name':
break
print('Thank you!')
用于在执行代码块时立即回到循环起点,一般放在循环中间的位置。
如下代码:
while True:
print('who are you?')
name=input()
if name!='Joe':
continue
print('Hello,Joe.What is the password?(It is a fish)')
password=input()
if password=='swordfish':
break
print('Access Granted.')
如果你只想执行代码块中一部分且让其达到条件时继续执行可以用continue。
for valuein collection:
代码示意:
print('My name is')
for i in range(5):
print('Jimmy Five Times (' + str(i) + ')')
执行结果:
My name is
Jimmy Five Times (0)
Jimmy Five Times (1)
Jimmy Five Times (2)
Jimmy Five Times (3)
Jimmy Five Times (4)
range( )是一个在for循环中十分重要的内置函数,在这里再讲一下它的特点:
代码示意:
for i in range(5, -1, -1):
print(i)
执行结果:
5
4
3
2
1
0
print('My name is')
i = 0
while i < 5:
print('Jimmy Five Times (' + str(i) + ')')
i = i + 1
对比for循环的例子
除了嵌入式函数之外,我们还要用到很多标准库中的函数,或者外部模块中的函数,这些函数需要用import来导入模块。
先这样吧,关于布尔值还有一个布尔值可以等于其他值的问题,等更完其他部分有时间再更。