【Python 基础】控制流 - 1

news2024/9/20 14:56:12

控制流

你已经知道了单条指令的基本知识。程序就是一系列指令。但编程真正的力量不仅在于运行(或“执行”)一条接一条的指令,就像周末的任务清单那样。根据表达式求值的结果,程序可以决定跳过指令,重复指令,或从几条指令中选择一条运行。实际上,你几乎永远不希望程序从第一行代码开始,简单地执行每行代码,直到最后一行。“控制流语句”可以决定在什么条件下执行哪些 Python 语句。

这些控制流语句直接对应于流程图中的符号,我将提供示例代码的流程图。下图展示了一张流程图,内容是如果下雨怎么办。按照箭头构成的路径,从开始到结束:
在这里插入图片描述
在流程图中,通常有不止一种方法从开始走到结束。计算机程序中的代码行也是这样。流程图用菱形表示这些分支节点,其他步骤用矩形表示。开始和结束步骤用带圆角的矩形表示。

但在学习流程控制语句之前,首先要学习如何表示这些 yes 和 no 选项。同时你也需要理解,如何将这些分支节点写成 Python 代码。要做到这一点,让我们先看看布尔值、比较操作符和布尔操作符。

布尔值

虽然整型、浮点型和字符串数据类型有无数种可能的值,但“布尔”数据类型只有两种值:TrueFalse。Boolean(布尔)的首字母大写,因为这个数据类型是根据数学家 George Boole 命名的。在作为 Python 代码输入时,布尔值 True 和 False不像字符串,两边没有引号,它们总是以大写字母 T 或 F 开头,后面的字母小写。

在交互式环境中输入下面内容,其中有些指令是故意弄错的,它们将导致出错信息:
在这里插入图片描述
像其他值一样,布尔值也用在表达式中,并且可以保存在变量中。如果大小写不正确,,或者试图使用 True 和 False 作为变量名,Python 就会给出错误信息。

比较操作符

“比较操作符”比较两个值,求值为一个布尔值。下表列出了比较操作符:

操作符含义
==等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于

这些操作符根据给它们提供的值,求值为 True 或 False。现在让我们尝试一些操作符,从==和!=开始:
在这里插入图片描述
如果两边的值一样, ==(等于)求值为 True。如果两边的值不同, !=(不等于)
求值为 True。 == 和 != 操作符实际上可以用于所有数据类型的值
在这里插入图片描述
请注意,整型或浮点型的值永远不会与字符串相等。表达式 42 == '42’求值为False 是因为,Python 认为整数 42 与字符串’42’不同。

另外,<、>、<=和>=操作符仅用于整型和浮点型值。
在这里插入图片描述

布尔操作符

3 个布尔操作符(and、or 和 not)用于比较布尔值。像比较操作符一样,它们将这些表达式求值为一个布尔值。让我们仔细看看这些操作符,从 and 操作符开始。

二元布尔操作符

and 和 or 操作符总是接受两个布尔值(或表达式),所以它们被认为是“二元”操作符。如果两个布尔值都为 True,and 操作符就将表达式求值为 True,否则求值为 False。在交互式环境中输入某个使用 and 的表达式,看看效果。
在这里插入图片描述
“真值表”显示了布尔操作符的所有可能结果:

表达式求值为
True and TrueTrue
True and FalseFalse
False and TrueFalse
False and FalseFalse

另外,只要有一个布尔值为真,or 操作符就将表达式求值为 True。如果都是 False,所求值为 False:
在这里插入图片描述
可以在 or 操作符的真值表中看到每一种可能的结果:

表达式求值为
True or TrueTrue
True or FalseTrue
False or TrueTrue
False or FalseFalse

not 操作符

和 and 和 or 不同,not 操作符只作用于一个布尔值(或表达式)。not 操作符求值为相反的布尔值:
在这里插入图片描述
就像在说话和写作中使用双重否定,你可以嵌套 not 操作符,虽然在真正的程序中并不经常这样做。

下表展示了 not 的真值表:

表达式求值为
not TrueFalse
not FalseTrue

混合布尔和比较操作符

既然比较操作符求值为布尔值,就可以和布尔操作符一起,在表达式中使用。

回忆一下,and、or 和 not 操作符称为布尔操作符是因为,它们总是操作于布尔值。虽然像 4 < 5 这样的表达式不是布尔值,但可以求值为布尔值。在交互式环境中,尝试输入一些使用比较操作符的布尔表达式:
在这里插入图片描述
计算机将先求值左边的表达式,然后再求值右边的表达式。知道两个布尔值后,它又将整个表达式再求值为一个布尔值。你可以认为计算机求值(4 < 5)和(5 < 6)的过程,如图:
在这里插入图片描述
也可以在一个表达式中使用多个布尔操作符,与比较操作符一起使用:
在这里插入图片描述
和算术操作符一样,布尔操作符也有操作顺序。在所有算术和比较操作符求值后,Python 先求值 not 操作符,然后是 and 操作符,然后是 or 操作符。

控制流的元素

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

条件

你前面看到的布尔表达式可以看成是条件,它和表达式是一回事。“条件”只是在控制流语句的上下文中更具体的名称。条件总是求值为一个布尔值,True 或 False。控制流语句根据条件是 True 还是 False,来决定做什么。几乎所有的控制流语句都使用条件。

代码块

一些代码行可以作为一组,放在“代码块”中。可以根据代码行的缩进,知道代码块的开始和结束。代码块有 3 条规则:

  1. 缩进增加时,代码块开始
  2. 代码块可以包含其他代码块
  3. 缩进减少为零,或减少为外面包围代码块的缩进,代码块就结束了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1916654.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线性代数|机器学习-P22逐步最小化一个函数

文章目录 1. 概述2. 泰勒公式3. 雅可比矩阵4. 经典牛顿法4.1 经典牛顿法理论4.2 牛顿迭代法解求方程根4.3 牛顿迭代法解求方程根 Python 5. 梯度下降和经典牛顿法5.1 线搜索方法5.2 经典牛顿法 6. 凸优化问题6.1 约束问题6.1 凸集组合 Mit麻省理工教授视频如下&#xff1a;逐步…

实验-ENSP实现防火墙区域策略与用户管理

目录 实验拓扑 自己搭建拓扑 实验要求 实验步骤 整通总公司内网 sw3配置vlan 防火墙配置IP 配置安全策略&#xff08;DMZ区内的服务器&#xff0c;办公区仅能在办公时间内&#xff08;9: 00- 18:00)可以访问&#xff0c;生产区的设备全天可以访问&#xff09; 配置nat策…

26.Labview波形图、XY图、强度图使用精讲

我们如何使用Labview显示曲线或者制作出下面这种我们想要的曲线并随着我们输入值的变化而变化呢&#xff1f; 本文详细讲解一下每种波形图的使用方式&#xff0c;帮助大家深入了解波形图的使用技巧。 文章中的所有程序已上传到下面链接中&#xff0c;下载地址(建议先转存)&am…

利用量子信息推进计算

利用量子信息推进计算 编译 李升伟 我们重点介绍 2024 年美国物理学会 3 月会议上关于量子计算和量子算法的热烈讨论&#xff0c;并邀请能够显著推动量子信息科学领域向前发展的论文提交。 美国物理学会 (APS) 三月会议可以说是世界上最大的年度物理学会议之一&#xff0c;今…

N32G45XVL-STB之lvgl的应用实例

目录 概述 1 硬件介绍 1.1 ST7796-LCD 1.2 MCU IO与LCD PIN对应关系 1.3 MCU IO与Touch PIN对应关系 2 N32G45x移植 LVGL 2.1 移植步骤 2.2 注意点 2.2.1 UI刷新函数 2.2.2 主函数中调用 3 LVGL的应用Demo 3.1 功能描述 3.2 代码实现 3.3 测试 N32G45XVL-STB之lv…

为Linux设置GRUB密码

正文共&#xff1a;999 字 11 图&#xff0c;预估阅读时间&#xff1a;1 分钟 我们前面介绍了如何恢复root密码&#xff08;CentOS 7.9遗忘了root密码怎么办&#xff1f;&#xff09;&#xff0c;虽然简单好用&#xff0c;但是可能会被不法分子利用&#xff0c;造成root密码以及…

Elasticsearch文档_id以数组方式返回

背景需求是只需要文档的_id字段&#xff0c;并且_id组装成一个数组。 在搜索请求中使用 script_fields 来整理 _id 为数组输出&#xff1a; POST goods_info/_search?size0 {"query": {"term": {"brand": {"value": "MGC"…

防火墙图形化界面策略和用户认证(华为)

目录 策略概要认证概要实验拓扑图题目要求一要求二要求三要求四要求五要求六 策略概要 安全策略概要&#xff1a; 安全策略&#xff08;Security Policy&#xff09;在安全领域具有双重含义。宏观上&#xff0c;安全策略指的是一个组织为保证其信息安全而建立的一套安全需求、…

通过图像高频信息保留图像细节,能保留多少细节-Comfyui

&#x1f9e8;前情提要 如果还不了解comfyui中图像高频信息保留细节的内容&#xff0c;可以参考上一篇文章&#xff1a; 图像中高频信息、低频信息与ComfyUI中图像细节保留的简单研究-CSDN博客 这次主要是简单测试下保留图像细节&#xff0c;能保留到什么程度&#xff1b; …

自建搜索引擎-基于美丽云

Meilisearch 是一个搜索引擎&#xff0c;主程序完全开源&#xff0c;除了使用官方提供的美丽云服务&#xff08;收费&#xff09;进行对接之外&#xff0c;还可以通过自建搜索引擎来实现完全独立的搜索服务。 由于成本问题&#xff0c;本博客采用自建的方式&#xff0c;本文就…

HybridCLR原理中的重点总结

序言 该文章以一个新手的身份&#xff0c;讲一下自己学习的经过&#xff0c;大家更快的学习HrbirdCLR。 我之前的两个Unity项目中&#xff0c;都使用到了热更新功能&#xff0c;而热更新的技术栈都是用的HybridCLR。 第一个项目本身虽然已经集成好了热更逻辑&#xff08;使用…

【排序 - 冒泡排序】

当我们谈论经典的排序算法时&#xff0c;冒泡排序&#xff08;Bubble Sort&#xff09;往往是最先被提及的一种。尽管它在实际应用中不太常见&#xff0c;但冒泡排序的简单易懂&#xff0c;有助于理解排序算法的基本原理和思想。 冒泡排序的基本原理 冒泡排序是一种基础的交换…

Git的基本知识点 + GitBash安装Pacman + Git命令含有中文,终端输出中文乱码

Git的基本知识点&#xff1a;整理自以下作者的文章繁华似锦Fighting的文章https://www.jianshu.com/nb/49854893另外还补充了git ls-file、.gitignore 等内容&#xff0c;涉及具体操作&#xff0c;还有命令总结。简略版可以看以上作者的文章&#xff0c;详细版可以看网盘里面的…

【企业级监控】源码部署Zabbix与监控主机

Zabbix企业级分布式监控 文章目录 Zabbix企业级分布式监控资源列表基础环境一、LNMP环境搭建&#xff08;在zbx主机上&#xff09;1.1、配置Yum仓库1.1.1、下载阿里云的仓库文件1.2.2、安装PHP7的仓库1.2.3、生成Mariadb10.11的仓库文件1.2.4、快速重建Yum缓存 1.2、安装PHP7.4…

Golang | Leetcode Golang题解之第228题汇总区间

题目&#xff1a; 题解&#xff1a; func summaryRanges(nums []int) (ans []string) {for i, n : 0, len(nums); i < n; {left : ifor i; i < n && nums[i-1]1 nums[i]; i {}s : strconv.Itoa(nums[left])if left < i-1 {s "->" strconv.It…

数学建模美赛经验小结

图片资料来自网络所听讲座&#xff0c;感谢分享&#xff01;

《C++设计模式》状态模式

文章目录 一、前言二、实现一、UML类图二、实现 一、前言 状态模式理解最基本上的我觉得应该也是够用了&#xff0c;实际用的话&#xff0c;也应该用的是Boost.MSM状态机。 相关代码可以在这里&#xff0c;如有帮助给个star&#xff01;AidenYuanDev/design_patterns_in_mode…

Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce

章节内容 上节我们完成了&#xff1a; Sqoop 介绍Sqoop 下载配置环境等Sqoop 环境依赖&#xff1a;Hadoop、Hive、JDBC 等环境补全 背景介绍 这里是三台公网云服务器&#xff0c;每台 2C4G&#xff0c;搭建一个Hadoop的学习环境&#xff0c;供我学习。 之前已经在 VM 虚拟机…

javaweb图书商城系统带万字文档网上书城java项目java课程设计java毕业设计

文章目录 图书商城系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档&#xff08;9.9&#xffe5;带走&#xff09; 图书商城系统 一、项目演示 网上书城 二、项目介绍 语言&#xff1a;java 数据库&#xff1a;…

如何用 Python 远程控制 Windows 服务器?

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 在信息时代的洪流中&#xff0c;掌握一门编程语言已经成为一项必备技能。Python&#xff0c;这门以简洁、易学、强大著称的编程语言&#xff0c;更是成为无数开发者的大宝剑。今天&…