精通python100天——第三天:控制流

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)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
if

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)……

执行流程图如下:
while flow
我们写个例子,让数字从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))

执行结果如下:

1100 之和为: 5050

4.3、for 语句

for 循环可以遍历任何可迭代对象,如一个列表、一个字符串或一个数组等
for循环的一般格式如下:

for <variable> in <sequence>:
    <statements>

流程图如下
for flow
我们写个例子,使用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语句代码执行过程来解释:
while flow
总结:

  • 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篇。

猜你喜欢

转载自blog.csdn.net/chen565884393/article/details/128289665