1、布尔值
学习控制流我们必先熟悉布尔值,但 “布尔”数据类型非常简单,只有两种值:True和False,注意它们都是以大写字母开头,我们在交互式环境中试试吧
(base) C:\Users\Administrator>python
Python 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> result = True
>>> result
True
>>> result = False
>>> result
False
>>> result = true
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'true' is not defined
>>>
能看出来将True和False赋值给result,都是正常的,当用小写字母开头赋值,就会报错,提示没有定义。
2、比较操作符
“比较操作符” 比较两个值,结果为一个布尔值。比较结果成立则为True,不成立则为False,和上一讲的数学运算一样,也是从左到右
比较操作符列表
操作符 | 含义 |
---|---|
== | 等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
我们也在交互式环境中试试吧
(base) C:\Users\Administrator>python
Python 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> "hello" == "hello"
True
>>> "hello" == "world"
False
>>> "hello" != "world"
True
>>> 6 < 9
True
>>> 5 > 3
True
>>> 6 <= 6
True
>>> 6 >= 7
False
>>>
3、布尔操作符
and、 or 和 not这 3 个布尔操作符。 像比较操作符一样,它们将表达式求值为一个布尔值。让我们看看这些操作符的真值表
and操作符的真值表
表达式 | 结果 |
---|---|
True and True | True |
True and False | False |
False and True | False |
False and False | False |
总结:and操作符,只有两边都为True结果才为True,否则 为False
我们在交互式环境中尝试一下
(base) C:\Users\Administrator>python
Python 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> first = True
>>> second = True
>>> first and second
True
>>> first = False
>>> first and second
False
>>> second = False
>>> first and second
False
>>>
or操作符的真值表
表达式 | 结果 |
---|---|
True or True | True |
True or False | True |
False or True | True |
False or False | False |
总结:or操作符,只要一边为True结果都为True,否则 为False
我们在交互式环境中尝试一下
(base) C:\Users\Administrator>python
Python 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> one = True
>>> two = True
>>> one or two
True
>>> one = False
>>> one or two
True
>>> two = False
>>> one or two
False
>>>
not操作符的真值表
表达式 | 结果 |
---|---|
not True | False |
not False | True |
总结:not操作符,将布尔值取反,原来值是True的结果为False,原来值是False的结果为True
我们在交互式环境中尝试一下
(base) C:\Users\Administrator>python
Python 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> first = True
>>> first = not first
>>> first
False
>>> first = not first
>>> first
True
>>>
4、控制流
控制流语句的开始部分通常是“条件”, 接下来是一个代码块,称为“子句”,条件是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
4.1、if 语句
最常见的控制流语句是 if 语句,它的一般形式如下:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
- 如果 “condition_1” 为 True 将执行 “statement_block_1” 块语句
- 如果 “condition_1” 为False,将判断 “condition_2”
- 如果"condition_2" 为 True 将执行 “statement_block_2” 块语句
- 如果 “condition_2” 为False,将执行"statement_block_3"块语句
注意:
1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
我们写一个简单的例子
# -*- coding: utf-8 -*-
def dog_age():
age = int(input("请输入你家狗狗的年龄: "))
print("")
if age <= 0:
print("你是在逗我吧!")
elif age == 1:
print("相当于 14 岁的人。")
elif age == 2:
print("相当于 22 岁的人。")
elif age > 2:
human = 22 + (age - 2) * 5
print("对应人类年龄: ", human)
input("点击 enter 键退出")
if __name__ == '__main__':
dog_age()
运行结果如下
请输入你家狗狗的年龄: 6
对应人类年龄: 42
点击 enter 键退出
4.2、while 循环
while 语句的一般形式:
while 判断条件(condition):
执行语句(statements)……
执行流程图如下:
我们写个例子,让数字从1加到100
# -*- coding: utf-8 -*-
def accumulation():
n = 100
summing = 0
counter = 1
while counter <= n:
summing = summing + counter
counter += 1
return summing
if __name__ == '__main__':
result = accumulation()
print("1 到 %d 之和为: %d" % (100, result))
执行结果如下:
1 到 100 之和为: 5050
4.3、for 语句
for 循环可以遍历任何可迭代对象,如一个列表、一个字符串或一个数组等
for循环的一般格式如下:
for <variable> in <sequence>:
<statements>
流程图如下
我们写个例子,使用for语句来遍历列表
# -*- coding: utf-8 -*-
def iterate():
sites = ['red', 'green', 'blue', 'yellow', 'white', 'black']
for site in sites:
print("循环列表中的颜色 " + site)
print("完成循环!")
if __name__ == '__main__':
iterate()
运行结果为
循环列表中的颜色 red
循环列表中的颜色 green
循环列表中的颜色 blue
循环列表中的颜色 yellow
循环列表中的颜色 white
循环列表中的颜色 black
完成循环!
4.3.1、range()函数
如果你需要遍历数字序列,可以使用内置range()函数。它会生成数列,例如
>>>for i in range(5):
... print(i)
...
0
1
2
3
4
你也可以使用range指定区间的值:
>>>for i in range(5,9) :
print(i)
5
6
7
8
range()函数可以有第三个参数。 前两个参数分别是起始值和终止值, 第三个参数是“步长”。 步长是每次迭代后循环变量增加的值
>>>for i in range(0, 10, 3) :
print(i)
0
3
6
9
其中的参数3即为步长,如果步长为负数,循环计数逐渐减少,而不是增加,例如 range(5, -1, -1)来, 结果将从 5 降至 0
4.4、break 和 continue 语句
使用while语句代码执行过程来解释:
总结:
- break 语句可以跳出 for 和 while 的循环体
- continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
break实例:
# -*- coding: utf-8 -*-
def break_example():
for letter in 'HelloWorld': # 第一个实例
if letter == 'W':
break
print('当前字母为 :', letter)
var = 10 # 第二个实例
while var > 0:
print('当前变量值为 :', var)
var = var - 1
if var == 5:
break
if __name__ == '__main__':
break_example()
结果输出为
当前字母为 : H
当前字母为 : e
当前字母为 : l
当前字母为 : l
当前字母为 : o
当前变量值为 : 10
当前变量值为 : 9
当前变量值为 : 8
当前变量值为 : 7
当前变量值为 : 6
continue 实例:
# -*- coding: utf-8 -*-
def continue_example():
for letter in 'HelloWorld': # 第一个实例
if letter == 'W': # 字母为 W 时跳过输出
continue
print('当前字母 :', letter)
var = 10 # 第二个实例
while var > 0:
var = var - 1
if var == 5: # 变量为 5 时跳过输出
continue
print('当前变量值 :', var)
if __name__ == '__main__':
continue_example()
结果输出为:
当前字母 : H
当前字母 : e
当前字母 : l
当前字母 : l
当前字母 : o
当前字母 : o
当前字母 : r
当前字母 : l
当前字母 : d
当前变量值 : 9
当前变量值 : 8
当前变量值 : 7
当前变量值 : 6
当前变量值 : 4
当前变量值 : 3
当前变量值 : 2
当前变量值 : 1
当前变量值 : 0
5、导入模块
模块的导入和使用我写了一篇很详细的博文,《趣味学python——第二话:包、模块、语句及注解》,请参阅
6、提前结束程序
要介绍的最后一个控制流概念, 是如何终止程序。 当程序执行到指令的底部时,总是会终止。但是, 通过调用 sys.exit()函数, 可以让程序终止或退出。因为这个函数在 sys 模块中,所以必须先导入 sys, 才能使用它。打开一个新的文件编辑器窗口, 输入以下代码。
# -*- coding: utf-8 -*-
import sys
def exit_example():
while True:
print('Type exit to exit.')
response = input()
if response == 'exit':
sys.exit()
print('You typed ' + response + '.')
if __name__ == '__main__':
exit_example()
该程序有一个无限循环,里面没有 break 语句。结束该程序的唯一方式,就是用户输入 exit, 导致 sys.exit()被调用。如果 response 等于 exit, 程序就会中止。因为 response 变量由 input()函数赋值,所以用户必须输入exit, 才能停止该程序。
好了 今天的课程就到这里了,后面更新的节奏为一周1到2篇。