(四)Python控制结构(条件结构)

程序中的语句默认会按照自上而下的顺序逐条执行,但通过一些特定的语句可以更改语句的执行顺序,使之产生跳跃、回溯等现象,进而灵活地控制程序的执行流程。

控制结构是编程中用于控制程序执行流程的语句,程序的三种基本控制结构为:顺序结构、分支结构和循环结构。 

  • 顺序结构:程序按代码书写顺序执行

  • 条件结构:根据条件判断选择执行路径

  • 循环结构:重复执行特定代码块

当做一个任务的时候,总是可以通过三种控制结构完成。比如“做饭”这件事情,我可能按部就班的备菜,这就是顺序结构,我一勺又一勺的舀米直到觉得足够了,这就是循环结构。如果饭熟了我就要盛出来,否则就要等待,这是选择结构。

顺序结构不再过多赘述,就是一行代码执行完就执行下一行啦。程序不会跳几行执行,也不会返回去重复执行。

1.条件结构

条件结构翻译过来,事实上就是语文里面的如果.....那么....否则....那么...这种句式。凡是这种句式都可以写成条件结构的代码。

1.1单分支if语句

if语句是最简单的条件语句,如果.....那么....

该语句由关键字if、判断条件和冒号组成,其语法格式如下:

if 条件表达式:     代码段

这个条件表达式就是由各种各样的运算符(常用的是比较、逻辑、成员运算符),与变量或数据构成的一个条件表达式(比如3>1),这个表达式只有两种结果,要么成立,要么不成立

  • 如果成立,这个表达式会返回布尔值True(真),反之返回False(假)。
  • 当if后面的条件成立或者说返回True的时候,我们就执行if下面的这个代码块
  • 这段代码块看起来和if有一些缩进,是的,有4个空格的缩进,要非常严肃的对待这个缩进,少一个空格我们的代码都会报错。这个缩进让里面的代码看起来像是被if这一语句锁住(包裹)了一样,因为只有满足了条件我们才能打开这个开关。

# 基本if语句
age = 18
if age >= 18:print("您已成年,可以进入")print("欢迎光临!")

注意不要漏掉条件后面的英文冒号。只要不是字符串里面的内容,Python代码中其他符号全都是英文的

那条件不成立怎么办?程序不会永远停在这儿吧,当然不。生活中总会遇到不如意的事,但我们还要向前看,过好我们的人生。所以代码会跳过不合适的这段顺序执行后面的代码啦。

# 基本if语句
age = 17
if age >= 18:    #条件不成立print("您已成年,可以进入")      #不执行print("欢迎光临!")             #不执行
print('--------------')   #这段与if是对齐的,不属于if包裹的代码段,所以顺序执行
print('程序结束')          #顺序执行

现在试着写一个代码吧:使用if语句实现一个考试成绩评估功能的程序:如果考试成绩不低于60分,那么将此成绩评估为考试及格,假设小明的考试成绩为88分,输出小明的成绩评估结果。

别光看啦,动手练练。

score = 88
if score >= 60:                           print("考试及格!")

你看写代码是不是有点像做小学的数学应用题,先把已知条件列出来,再去进行判断、计算等等。

1.2双分支if...else...

if...else...:如果....那么....否则....那么...

这个特别像走到一个二岔路口,让你选择一个路去走(注意是二选一)。

说实话,平时生活中遇到双分支的情况还真不少。比如期末考试成绩大于等于60的话就及格了。否则就要补考了。上代码!!

# if-else语句
score = 85
if score >= 60:print("恭喜,考试及格!")
else:print("很遗憾,需要补考")

我们这里关注一下if后面是跟了条件的(最后提醒一次,别忘了冒号),else后面没跟条件,只跟了冒号。这是为啥呢?因为当这种句式出现的时候else就表示除了if条件里面的情况,其他所有的情况。所以else后面不需要再单独把条件列出来了。

上述代码翻译过来就是,如果分数>=60,考试及格(else下的语句不再执行),其他所有的情况(其实也就是分数<60)都需要补考。

1.3多分支if...elif...else...

又回到考试这个话题了,我们经常在教务网看到自己成绩的一个等级,比如考90-100的为优秀,80-89的为良好,70-79的为中等.......,那我们怎么根据成绩把这个等级打印出来呢?

很明显上述问题以及不是一个简单的二岔路了,可能是四岔路、五岔路甚至更多。这时候就可以用到我们的多分支语句了。

if...elif...else...如果....那么....否则如果....那么....否则....那么...

猜一猜哪个后面要跟条件,哪个不用跟。(看见如果if这俩字了,后面一定需要跟条件)

语法格式:

if 条件表达式1: 代码段1
elif 条件表达式2:代码段2
……
elif 条件表达式n:代码段n
else: 代码段n+1

【实战】根据成绩打印等级

score = 74
if 90 <= score <= 100:print("优秀")
elif 80 <= score <= 89:print("良好")
elif 70 <= score <= 79:print("中等")
elif 60 <= score <= 69:print("及格")
else:print("不及格")

总结一下:

对于三分支及以上的分支:

  • if、elif后面都要带条件,条件与条件都是互斥的
  • elif可以写多个但是后面必须把条件写清楚
  • 可以不写else语句(比如可以把代码最后else:换成elif score>=0:也是可以的),写了就代表除了上述所有情况以外的情况。

1.4嵌套条件

如果说图a是单分支if语句,b图是if else语句,c图是多分支结构,那么嵌套条件就是下面这种情况

也就是说需要先满足1的条件,确定走左侧主路后,再继续判断条件2,进一步确定走哪条支路

【实战】计算当月天数

一年有12个月份,每个月份的总天数具有一定的规律,1、3、5、7、8、10、12月份有31天;4、6、9、11月份有30天;2月份的情况稍微复杂一些,闰年的2月份有29天,平年的2月份有28天。

year = 2020   
month = 2       
#成员运算符in,可以判断某个变量的值或数据在不在列表的元素里
if month in  [1, 3, 5, 7, 8, 10, 12]: print(f"{year}年{month}月有 31 天")
elif month in [4, 6, 9, 11]:   print(f"{year}年{month}月有 30 天")
elif month == 2:        if year % 400 == 0 or year % 4 == 0 and year % 100 != 0:  print(f"{year}年{month}月有 29 天")else:print(f"{year}年{month}月有 28 天")

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

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

相关文章

血缘元数据采集开放标准:OpenLineage Guides 使用 Apache Airflow® 和 OpenLineage + Marquez 入门

OpenLineage 是一个用于元数据和血缘采集的开放标准&#xff0c;专为在作业运行时动态采集数据而设计。它通过统一的命名策略定义了由作业&#xff08;Job&#xff09;、运行实例&#xff08;Run&#xff09;和数据集&#xff08;Dataset&#xff09; 组成的通用模型&#xff0…

FPGA|Quartus II 中使用TCL文件进行引脚一键分配

在FPGA设计过程中&#xff0c;合理的引脚分配是确保硬件功能正确实现的关键步骤之一。Quartus II 提供了通过 TCL&#xff08;Tool Command Language&#xff09;脚本自动化引脚分配的功能&#xff0c;这不仅可以大大提高设计效率&#xff0c;还能够确保引脚分配的精确性和可重…

【Docker/Redis】服务端高并发分布式结构演进之路

目录 概述 常见概念 基本概念 应用&#xff08;Application&#xff09;/ 系统&#xff08;System&#xff09; 模块&#xff08;Module&#xff09;/ 组件&#xff08;Component&#xff09; 分布式&#xff08;Distributed&#xff09; 集群&#xff08;Cluster&#x…

【Excel】将一个单元格内​​的多行文本,​​拆分成多个单元格,每个单元格一行​​

​​所有文本都堆积在“prefix”列顶部的同一个单元格里&#xff08;很可能是B10单元格&#xff09;&#xff0c;并且它们是用空格分隔的&#xff0c;而不是换行符。​​因此&#xff0c;您不需要处理换行符&#xff0c;而是需要​​按“空格”进行分列&#xff0c;并且将分列后…

新手SEO操作第一步

内容概要 网站优化对于新手而言&#xff0c;常常感觉无从下手。别担心&#xff0c;这篇文章就是为你量身打造的入门指南。我们将从最基础也是最重要的关键词研究开始讲起&#xff0c;手把手教你如何精准找到目标用户搜索的词。掌握了关键词&#xff0c;接下来就是如何创作出搜索…

【高阶数据结构】秘法(一)——并查集:探索如何高效地管理集合

前言&#xff1a; 前面我们已经学习了简单的数据结构&#xff0c;包括栈与队列、二叉树、红黑树等等&#xff0c;今天我们继续数据结构的学习&#xff0c;但是难度上会逐渐增大&#xff0c;在高阶数据结构中我们要学习的重点是图等 目录 一、并查集的原理 二、并查集的基本操作…

spring boot 整合AI教程

1、pom.xml配置<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4…

基于SpringBoot2+Vue2开发的储物柜管理系统

角色 管理员&#xff1a;管理系统、用户&#xff0c;管理储物柜用户&#xff1a;借用、归还储物柜&#xff0c;报修故障 技术栈 后端&#xff1a;Springboot2, JWT, PageHelper前端&#xff1a;Vue2数据库&#xff1a;MySQL 核心功能 提供智能储物柜管理&#xff0c;包括用户注…

uniapp中输入金额的过滤(只允许输入数字和小数点)

一、完整代码&#xff1a; <template><view class"numberIndex" :style"{ paddingTop: navbarHeight px }"><view class"custom-navbar" :style"{ paddingTop: statusBarHeight px }"><view class"navbar…

系统科学核心概念辨析及其在人工智能领域的应用研究:一个整合性分析框架

摘要&#xff1a;本文旨在系统性地梳理和辨析系统科学中的核心概念——结构、功能与层级。文章首先追溯系统思想的理论源流&#xff0c;确立其作为一种超越还原论的整体性研究范式。在此基础上&#xff0c;深度剖析系统结构的内在构成&#xff08;组分、框架、动态性&#xff0…

Ubuntu环境下删除Docker镜像与容器、配置静态IP地址

删除Docker镜像与容器删除容器&#xff1a;要删除特定的Docker容器&#xff0c;首先需要停止该容器&#xff1a;docker stop <container_id_or_name>然后可以使用以下命令删除它&#xff1a;docker rm <container_id_or_name>如果要强制删除正在运行的容器&#xf…

零样本视觉模型(DINOv3)

DINOv3是Meta于2025年8月14日发布的第三代自监督视觉基础模型&#xff0c;通过17亿张无标注图像训练&#xff0c;参数规模最大达70亿&#xff0c;首次在密集预测任务中全面超越弱监督模型&#xff0c;成为计算机视觉领域的里程碑。其核心突破在于无需人工标注即可生成高分辨率密…

【机器学习入门】5.2 回归的起源——从身高遗传到线性模型的百年演变

提到 “回归”&#xff0c;很多刚入门的同学会觉得它是个抽象的数学概念&#xff0c;但你可能想不到&#xff0c;这个术语的诞生&#xff0c;竟然源于 19 世纪一位生物学家对 “身高遗传” 的研究。回归分析从 “观察生物现象” 出发&#xff0c;逐步发展成机器学习中预测连续值…

轻型载货汽车变速器设计cad+设计说明书

摘 要 变速器是汽车重要的传动系组成&#xff0c;在较大范围内改变汽车行驶速度的大小和汽车驱动轮上扭矩的大小。变速器能在发动机旋转方向不变的前提下&#xff0c;使汽车倒退行驶&#xff0c;而且利用挡位可以中断动力的传递。所以变速器的结构设计的合理性直接影响到汽车动…

如何对嵌入式软件进行单元测试

ceedling就是一款嵌入式软件测试框架。ceedling是一个用ruby语言编写的C语言自动化测试框架&#xff0c;它集成了Cmock、Unity和Cexception等多个开源项目。在整个ceedling框架中&#xff0c;使用unity进行代码测试&#xff0c;使用CMock生成模拟函数&#xff0c;使用CExceptio…

通义万相Wan2.2-S2V-14B:AI视频生成的革命性突破与实践指南

一张图片+一段音频=电影级数字人视频?这不是魔法,是开源AI技术带来的现实。 近日,阿里巴巴通义万相团队开源了Wan2.2-S2V-14B模型,仅在短短几天内就引发了AI视频生成领域的震动。这个仅需**一张静态图片**和**一段音频**就能生成影视级质量视频的模型,正在改变我们对AI视…

基于 HTML、CSS 和 JavaScript 的智能图像锐化系统

目录 1 前言 2 技术实现 2.1 HTML&#xff1a;构建系统骨架​ 2.2 CSS&#xff1a;打造视觉与交互体验​ 2.3 JavaScript&#xff1a;实现核心锐化逻辑​ 3 代码解析 3.1 数据存储与初始化 3.2 图像加载流程 3.3 锐化算法核心&#xff1a;卷积计算​ 3.4 下载功能实现…

(MySQL)分布式锁

在分布式系统中&#xff0c;多个进程可能会同时对同一资源进行操作&#xff0c;如果没有同步机制&#xff0c;就会造成数据不一致问题。为了避免这种情况&#xff0c;需要分布式锁。Redis 是常见的实现方式&#xff0c;但在某些场景下&#xff0c;我们也可以使用 MySQL 来实现分…

基于RS-485接口的芯片的FPGA驱动程序

1.简介ADM3485E 是一款 3.3V 低功耗数据收发器&#xff0c;具有 15kV 的 ESD&#xff08;静电放电&#xff09; 保护&#xff0c;专为多点总线传输线上的半双工通信设计。它支持平衡数据传输&#xff0c;符合 TIA/EIA 标准 RS-485 和 RS-422 的要求。作为一款半双工收发器&…

SQLSERVER关键字:N

在 SQL Server 中&#xff0c;单独的 N 并不是一个 “关键字”&#xff0c;但它作为前缀有特殊含义 —— 用于标识字符串为 Unicode 字符串&#xff08;对应 NVARCHAR、NCHAR 等 Unicode 数据类型&#xff09;。具体作用当字符串前加 N 前缀时&#xff0c;SQL Server 会将该字符…