热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2.5控制流的元素条件代码块程序执行控制流语句if语句

2.5控制流的元素控制流语句的开始部分通常是“条件”,接下来是一个代码块,称为“子句”。在开始学习具体的Python控制流语句之前,我将介

2.5    控制流的元素
控制流语句的开始部分通常是“条件”,接下来是一个代码块,称为“子句”。在开始学习具体的Python 控制流语句之前,我将介绍条件和代码块。


2.5.1    条件

你前面看到的布尔表达式可以看成是条件,它和表达式是一回事。“条件”只是在


控制流语句的上下文中更具体的名称。条件总是求值为一个布尔值,True 或False。控制流语句根据条件是True 还是 False,来决定做什么。几乎所有的控制流语句都使用条件。


2.5.2    代码块

一些代码行可以作为一组,放在“代码块”中。可以根据代码行的缩进,知道

代码块的开始和结束。代码块有 3 条规则。
1.缩进增加时,代码块开始。
2.代码块可以包含其他代码块。
3.缩进减少为零,或减少为外面包围代码块的缩进,代码块就结束了。
看一些有缩进的代码,更容易理解代码块。所以让我们在一小段游戏程序中,

寻找代码块,如下所示:

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

第一个代码块➊开始于代码行print('Hello  
Mary'),并且包含后面所有的行。在这个代码块中有另一个代码块➋,它只有一行代码:print('Access 
Granted.')。第三个代码块➌也只有一行:print('Wrong password.')。


2.6    程序执行
在第 1 章的 hello.py 程序中,Python 
开始执行程序顶部的指令,然后一条接一条往下执行。“程序执行”(或简称“执行”)这一术语是指当前被执行的指令。如果将源代码打印在纸上,在它执行时用手指指着每一行代码,你可以认为手指就是程序执行。
但是,并非所有的程序都是从上至下简单地执行。如果用手指追踪一个带有控制流语句的程序,可能会发现手指会根据条件跳过源代码,有可能跳过整个子句。

2.7    控制流语句
现在,让我们来看最重要的控制流部分:语句本身。语句代表了在图 2-1 的流程图中看到的菱形,它们是程序将做出的实际决定。


2.7.1    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.')。图 2-3 展示了这段代码的流程图。

图 2-3    if 语句的流程图


2.7.2  else 语句
if 子句后面有时候也可以跟着 else 语句。只有 if 语句的条件为 False 时,else子句才会执行。在英语中,else  
语句读起来可能是:“如果条件为真,执行这段代码。否则,执行那段代码”。else  语句不包含条件,在代码中,else  语句中包含下面部分:
•    else 关键字;
•    冒号;
•    在下一行开始,缩进的代码块(称为 else 子句)。
回到 Alice  的例子,我们来看看使用 else  语句的一些代码,在名字不是 Alice
时,提供不一样的问候。

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

图 2-4 展示了这段代码的流程图。


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文介绍如何使用 Python 编写程序,检查给定列表中的元素是否形成交替峰值模式。我们将探讨两种不同的方法来实现这一目标,并提供详细的代码示例。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文详细介绍了Java中org.w3c.dom.Text类的splitText()方法,通过多个代码示例展示了其实际应用。该方法用于将文本节点在指定位置拆分为两个节点,并保持在文档树中。 ... [详细]
  • 本文介绍了如何在Python中使用join()方法将列表中的元素连接成一个字符串。join()方法允许用户指定分隔符,从而灵活地生成所需格式的字符串。此外,我们还将探讨一些实际应用中的注意事项和技巧。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • 基因组浏览器中的Wig格式解析
    本文详细介绍了Wiggle(Wig)格式及其在基因组浏览器中的应用,涵盖variableStep和fixedStep两种主要格式的特点、适用场景及具体使用方法。同时,还提供了关于数据值和自定义参数的补充信息。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
author-avatar
小白一枚
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有