【Python 基础】控制流 - 2

程序执行

在第1篇的 hello.py 程序中,Python 开始执行程序顶部的指令,然后一条接一条往下执行。“程序执行”(或简称“执行”)这一术语是指当前被执行的指令。如果将源代码打印在纸上,在它执行时用手指指着每一行代码,你可以认为手指就是程序执行。

但是,并非所有的程序都是从上至下简单地执行。如果用手指追踪一个带有控制流语句的程序,可能会发现手指会根据条件跳过源代码,有可能跳过整个子句。

控制流语句

现在,让我们来看最重要的控制流部分:语句本身。语句代表了在下图的流程图中看到的菱形,它们是程序将做出的实际决定。
在这里插入图片描述

if 语句

最常见的控制流语句是 if 语句。if 语句的子句(也就是紧跟 if 语句的语句块),将在语句的条件为 True 时执行。如果条件为 False,子句将跳过。

在英文中,if 语句念起来可能是:“如果条件为真,执行子句中的代码。”在 Python中,if 语句包含以下部分:

  • if 关键字;
  • 条件(即求值为 True 或 False 的表达式);
  • 冒号;
  • 在下一行开始,缩进的代码块(称为 if 子句)。
    例如,假定有一些代码,检查某人的名字是否为 Alice(假设此前曾为 name赋值):
if name == 'Alice':
	print('Hi, Alice.')

所有控制流语句都以冒号结尾,后面跟着一个新的代码块(子句)。语句的 if子句是代码块,包含 print(‘Hi, Alice.’)。

下图展示了这段代码的流程图:
在这里插入图片描述

else 语句

if 子句后面有时候也可以跟着 else 语句。只有 if 语句的条件为 False 时,else子句才会执行。在英语中,else 语句读起来可能是:“如果条件为真,执行这段代码。否则,执行那段代码”。else 语句不包含条件,在代码中,else 语句中包含下面部分:

  • else 关键字;
  • 冒号;
  • 在下一行开始,缩进的代码块(称为 else 子句)

回到 Alice 的例子,我们来看看使用 else 语句的一些代码,在名字不是 Alice时,提供不一样的问候:

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

下图展示了这段代码的流程图:
在这里插入图片描述

elif 语句

虽然只有 if 或 else 子句会被执行,但有时候可能你希望,“许多”可能的子句中有一个被执行。elif 语句是“否则如果”,总是跟在 if 或另一条 elif 语句后面。它提供了另一个条件,仅在前面的条件为 False 时才检查该条件。在代码中,elif 语句总是包含以下部分:

  • elif 关键字;
  • 条件(即求值为 True 或 False 的表达式);
  • 冒号;
  • 在下一行开始,缩进的代码块(称为 elif 子句)

让我们在名字检查程序中添加 elif,看看这个语句的效果:

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

这一次,检查此人的年龄。如果比 12 岁小,就告诉他一些不同的东西。可以在下图中看到这段代码的流程图:
在这里插入图片描述
如果 age < 12 为 True 并且 name == 'Alice’为 False,elif 子句就会执行。但是,如果两个条件都为 False,那么两个子句都会跳过。“不能”保证至少有一个子句会被执行。如果有一系列的 elif 语句,仅有一条或零条子句会被执行。一旦一个语句的条件为 True,剩下的 elif 子句会自动跳过。例如,打开一个新的文件编辑器窗口,输入以下代码,保存为 vampire.py:

if name == 'Alice':
	print('Hi, Alice.')
elif age < 12:
	

相关推荐

  1. git版本控制基础工作

    2024-07-11 21:28:04       29 阅读
  2. Python】(一)复习重点——控制

    2024-07-11 21:28:04       27 阅读
  3. Python面试整理-Python中的控制语句

    2024-07-11 21:28:04       18 阅读
  4. python控制语句-1.2

    2024-07-11 21:28:04       36 阅读
  5. python控制语句-2.1

    2024-07-11 21:28:04       38 阅读
  6. C# 学习笔记2-控制与类型转换

    2024-07-11 21:28:04       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 21:28:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 21:28:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 21:28:04       58 阅读
  4. Python语言-面向对象

    2024-07-11 21:28:04       69 阅读

热门阅读

  1. Qt常用基础控件总结—表格控件(QTableWidget类)

    2024-07-11 21:28:04       23 阅读
  2. pudb: Python的图形化调试器

    2024-07-11 21:28:04       25 阅读
  3. 派森学长带你学python—字符串

    2024-07-11 21:28:04       21 阅读
  4. DP学习——设计模式怎么来的?

    2024-07-11 21:28:04       18 阅读
  5. 7.10飞书一面

    2024-07-11 21:28:04       17 阅读
  6. wpf 不同 DataContext 之间的通讯

    2024-07-11 21:28:04       21 阅读
  7. 状态同步和帧同步原理细节

    2024-07-11 21:28:04       22 阅读
  8. easy-poi实现动态列(标题)、多sheet导出excel

    2024-07-11 21:28:04       23 阅读
  9. null empty

    2024-07-11 21:28:04       17 阅读
  10. C++反射的实现方式

    2024-07-11 21:28:04       21 阅读
  11. Visual Studio Code:深度解析与开发者的新宠

    2024-07-11 21:28:04       24 阅读
  12. 减法原则的定义

    2024-07-11 21:28:04       18 阅读
  13. 实现基于Zookeeper的分布式协调服务

    2024-07-11 21:28:04       22 阅读
  14. ios的info.plist 配置

    2024-07-11 21:28:04       24 阅读