Python理论2 Flow Control

流程控制

在Python的流程控制的核心在于利用布尔逻辑去控制流程,其中主要包含了3个语句,以if为关键词的if结构,以for为关键词的for循环,以while为关键词的while循环。后文将分别对布尔逻辑、代码块、if结构、for循环、while循环进行介绍。先用一张流程图描述一下流程控制的概念:
Python理论2 Flow Control

布尔逻辑

布尔值

TrueFalse
需要注意的有:
(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
>>> 

运算过程如下:
Python理论2 Flow Control

代码块

语法规则

  • 始于缩进(一般为一个Tab)
  • 一个代码块中可以包含其他的代码块
  • 结束于缩进减少为零(对象为本代码块)

还是用代码去理解:

name = 'Mary'
password = 'swordfish'
if name == 'Mary':
    print('Hello Mary')
    if password == 'swordfish':
        print('Access granted.')
    else:
        print('Wrong password.')

这里有三个代码块,第一个if下面的缩进,第二个if下面的缩进以及else下面的缩进。

if结构

if

语法规则:

  • 关键词if
  • 条件(一个布尔逻辑表达式,计算结果为True或False)
  • 冒号
  • 另起一行,缩进的代码块(这里是if子句)
if condition:
	clause        #if子句

实例:

if name == 'Alice':
    print('Hi, Alice.')

实例流程图如下:
Python理论2 Flow Control

else

语法规则:

  • 关键词else
  • 冒号
  • 另起一行,缩进的代码块(这里是else子句)
  • 无法独立于if存在
else :
	clause        #if子句

实例如下:

name = 'Bob'
if name == 'Alice':
    print('Hi, Alice.')
else:
    print('Hello, stranger.')

实例流程图如下:
Python理论2 Flow Control

elif

语法规则:

  • 关键词elif
  • 条件(一个布尔逻辑表达式,计算结果为True或False)
  • 冒号
  • 另起一行,缩进的代码块(这里是elif子句)
  • 无法独立于if存在
elif condition:
	clause        #if子句

实例如下:

name = 'Bob'
age = 5
if name == 'Alice':
    print('Hi, Alice.')
elif age < 12:
    print('You are not Alice, kiddo.')

实例流程图如下:
Python理论2 Flow Control

if elif else联用及个人心得

  • if 机构中仅if可以独立存在
  • elif 和 else可以和if一起独立存在,也可相互连用
  • 三者使用时缩进相同

实例:

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.')

实例流程图:
Python理论2 Flow Control

while循环

语法

  • 关键词while
  • 条件(一个布尔逻辑表达式,计算结果为True或False)
  • 冒号
  • 另起一行,缩进的代码块(这里是while子句)
 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.

代码流程图演示:
Python理论2 Flow Control

break

当在while循环中使用break时,循环立刻停止。在使用 while True: 循环时很有用,比如应用于输入正确用户名的场景下。

while True:                        
    print('Please type your name.')
    name = input()                  
    if name == 'your name':        
        break                   
print('Thank you!')              

代码流程图如下:
Python理论2 Flow Control

continue

用于在执行代码块时立即回到循环起点,一般放在循环中间的位置。
如下代码:

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。

代码流程图如下:
Python理论2 Flow Control

for循环

语法

  • 关键词while
  • 变量
  • in
  • range( )字符串列表字典,这里跟while循环区别开
  • 冒号
  • 另起一行,缩进的代码块(这里是while子句)

代码示意:

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)

代码流程图:
Python理论2 Flow Control

range( )

range( )是一个在for循环中十分重要的内置函数,在这里再讲一下它的特点:

  • 可以传递给他三个整数range(a,b,c)
  • a和b代表它的范围
  • c代表步长
  • a,b,c都可以为负数
  • c的默认值为1
  • a的默认值为0

代码示意:

for i in range(5, -1, -1):
    print(i)

执行结果:

5
4
3
2
1
0

for循环与while循环的异同与个人理解

  • while循环条件是布尔逻辑表达式,其结果是布尔值True或者False
  • for循环是变量在一个范围里
  • for循环也可以用while循环写,不过要在while循环前给变量并将这个变量放在布尔逻辑表达式中,在其代码块中利用迭代器改变变量的值,如下:
print('My name is')
i = 0
while i < 5:
    print('Jimmy Five Times (' + str(i) + ')')
    i = i + 1

对比for循环的例子

导入模块的方法 import

除了嵌入式函数之外,我们还要用到很多标准库中的函数,或者外部模块中的函数,这些函数需要用import来导入模块。

语法

  • import 模块1,模块2,模块3 (当然你也可以只导入一个))
  • form 模块 import 函数

累死了,先这样吧,关于布尔值还有一个布尔值可以等于其他值的问题,等更完其他部分有时间再更。