Python流程控制语句之选择语句

news2024/9/29 11:22:55

前言

在生活中,我们总是要做出许多选择,程序也是一样。比如下面的例子:

  • 如果输入的用户名和密码正确,提示登录成功,否则,提示登录失败。
  • 如果考试成绩大于等于60分,则及格,否则不及格。

以上例子中的判断,就是程序中的选择语句,也称为条件语句,即按照条件选择执行不同的代码片段。Python中选择语句主要有 3 种形式,分别为:if 语句if…else 语句if…elif…else 多分支语句。今天我们就详细来看看这3种选择语句的用法。


一、最简单的 if 语句

Python中使用 if 保留字来组成选择语句,简单的语法格式如下:

if 表达式:
	语句块

如果表达式为真,则执行 “语句块”;如果表达式为假,就跳过 “语句块”,继续执行后面的语句,这种形式的 if 语句相当于汉语里的关联词语 “如果…就…”,其流程图如下图所示:

在这里插入图片描述
接下来看一下 if 语句在代码中的实际应用,代码如下:

score = int(input("请输入学生考试成绩: "))  # 输入学生考试成绩
if score >= 60:  # 如果输入的成绩大于等于60,则执行冒号下面的语句块,否则跳过不执行
    print("恭喜你,考试及格啦!!!")
print("程序执行完毕")  # 最后打印输出"程序执行完毕"

上述代码执行后有两种结果,一种是表达式结果为真(即满足条件),则执行冒号下面的语句块,结果如下图所示:

在这里插入图片描述

另一种是表达式结果为假(即不满足条件),则跳过不执行冒号下面的语句块,结果如下图所示:

在这里插入图片描述

在这里插入图片描述 注意:当表达式结果为假时,程序只是会跳过不执行冒号(:)下面的语句块,但是会继续往下执行代码剩余部分。

讲到这里,有小伙伴可能会有疑虑:我怎么区分哪些是语句块,哪些是正常代码呢?我先把上述代码中的语句块和正常代码给大家标注出来,如下图:

在这里插入图片描述

我们可以看到,正常代码和表达式之间是平等关系,代码开头是没有缩进的,而语句块和表达式之间是隶属关系,在Python中隶属关系是用冒号+缩进表示的。至于代码缩进规则在此就不做详细赘述,还有不明白的小伙伴,可以看我之前的博客【Python语法特点之代码缩进规则】。
在这里插入图片描述 说明:使用if语句时,如果隶属的语句块只有一条语句,那么语句块也可以直接写到冒号 “:” 的右侧。

例如下图代码所示:

在这里插入图片描述


二、if…else 语句

如果遇到只能二选一的条件,比如:我们在面试填写个人简历的时候,性别只能填男或者女。诸如此类的情况在生活中非常多,Python中就提供了 if…else 语句来解决类似问题,其语法格式如下:

if 表达式:
    语句块1
else:
    语句块2

如果表达式为真,则执行 if 后面的语句块,否则,执行 else 后面的语句块,这种形式的选择语句相当于汉语里的关联词语 “如果…否则…”,其流程图如下图所示:

在这里插入图片描述

接下来看一下 if…else 语句在代码中的实际应用,代码如下:

score = int(input("请输入面试者笔试成绩: "))
if score >= 60:
    print("恭喜你,被录用了!!!")
else:
    print("不好意思,你与我们的需求不符。")

代码运行后结果有两种,一种是表达式结果为真,如下:

在这里插入图片描述

一种是表达式结果为假,如下:

在这里插入图片描述

在这里插入图片描述 说明:if…else 语句可以使用条件表达式进行简化。

条件表达式的语法格式如下:

语句块1 if 表达式 else 语句块2

上述语法格式中,语句块1是 if 后面的表达式结果为真时执行,语句块2是表达式结果为假时执行。用法实例如下图代码所示:

在这里插入图片描述

在这里插入图片描述 注意:在使用 else 语句时,else 一定不可以单独使用,它必须和保留字 if 一起使用。

例如下图所示代码就是错误的:

在这里插入图片描述


三、if…elif…else 语句

平时在网上购物时,通常都有多种付款方式供我们选择,比如微信、支付宝、银行卡等等,这时用户就需要从多个选项中选择一个。在开发程序时,如果是遇到多选一的情况,则可以使用 if…elif…else 语句,该语句是一个多分支选择语句。

if…elif…else 语句的语法格式如下:

if 表达式1:
    语句块1
elif 表达式2:
    语句块2
elif 表达式3:
    语句块3

...

else:
    语句块n

如果表达式为真,则执行语句;而如果表达式为假,则跳过该语句,进行下一个 elif 的判断;只有在所有表达式都为假的情况下,才会执行 else 中的语句。if…elif…else 语句的流程如下图所示:

在这里插入图片描述

在这里插入图片描述 注意:if 和 elif 都需要判断表达式的真假,而 else 则不需要判断;另外,elif 和 else 都必须与 if 一起使用,不能单独使用。

接下来看一下 if…elif…else 多分支语句在代码中的实际应用,代码如下:

print("在古希腊神话中,玫瑰集爱情与美丽于一身,所以人们常用玫瑰来表达爱情。")
print("但是不同朵数的玫瑰花代表的含义是不同的。")
print("---------------------------------------------------------")
# 获取用户输入的朵数,并转为整数
num = int(input("输入你想送几朵玫瑰花,小十一会告诉你含义: "))
if num == 1:  # 判断是否为1朵
    print("1朵: 你是我的唯一!!!")
elif num == 3:  # 判断是否为3朵
    print("3朵: I Love You!!!")
elif num == 7:  # 判断是否为7朵
    print("7朵: 我偷偷的爱着你!!!")
elif num == 10:  # 判断是否为10朵
    print("10朵: 十全十美!!!")
elif num == 11:  # 判断是否为11朵
    print("11朵: 一心一意!!!")
elif num == 99:  # 判断是否为99朵
    print("99朵: 天长地久!!!")
elif num == 108:  # 判断是否为108朵
    print("108朵: 求婚!!!")
else:  # 如果上述条件都不满足,则执行下面语句
    print("小十一也不知道了,可以考虑送1朵、3朵、7朵、10朵、11朵、99朵、108朵哦!")

代码运行之后就有多种可能的结果,凡是满足上面任意一个表达式,则会执行所属的语句块,如果均不满足,则会执行else下面的语句块。比如下图运行结果所示:

在这里插入图片描述


四、if 语句的嵌套

前面介绍了 3 种形式的 if 选择语句,这 3 种形式的选择语句之间都可以相互嵌套。

在最简单的 if 语句中嵌套 if…else 语句,形式如下:

if 表达式1:
    if 表达式2:
        语句块1
    else:
        语句块2

在 if…else 语句中嵌套 if…else 语句,形式如下:

if 表达式1:
    if 表达式2:
        语句块1
    else:
        语句块2
else:
    if 表达式3:
        语句块3
    else:
        语句块4

在这里插入图片描述 说明:if 选择语句可以有多种嵌套方式,开发程序时,可以根据自身需要选择合适的嵌套方式,但一定要严格控制好不同级别代码块的缩进量。

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

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

相关文章

在甲骨文云容器实例(Container Instances)上部署firefox

甲骨文云推出了容器实例,这是一项无服务器计算服务,可以即时运行容器,而无需管理任何服务器。 今天我们尝试一下通过容器实例部署firefox。 Step1. 创建容器实例 在甲骨文容器实例页面,单击"创建容器实例"&#xff0c…

[漏洞分析] CVE-2022-2602 io_uring UAF内核提权详细解析

本文首发于华为安全应急响应中心公众号: https://mp.weixin.qq.com/s/w_u0FoiFdU0KM397UXJojw 文章目录漏洞简介环境搭建漏洞原理文件引用计数与飞行计数引用计数飞行计数发送过程scm_send接收过程unix_gc垃圾处理机制io_uring原理(仅限漏洞)io_uring_setupio_urin…

零基础学JavaWeb开发(十六)之 mybatis(2)

5、MyBatis - 映射文件标签 5.1、映射文件的顶级元素 select:映射查询语句 insert:映射插入语句 update:映射更新语句 delete:映射删除语句 sql:可以重用的 sql 代码块 resultMap:最复杂&#xff0c…

11. 集合set类型详解

python3 set类型的使用 1. 基础知识 (1) 集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。集合是一个无序的不重复元素序列。 (2)基本功能是进行成员…

大年初四,Flutter Forward 中国社区直播活动与你不见不散

之前我们预告过,2023 年 1 月 25 日 (年初四),Flutter 团队将在肯尼亚首都内罗毕举办 Flutter Forward 大会,并同时开启线上直播。本次活动将为展示最新的 Flutter 技术更新,包括一个主题演讲,以及多个技术演讲和线上问…

【兔年之兔子走迷宫】 用一个小游戏对回溯法进行实现 | C++

第六章 回溯法 目录 第六章 回溯法 ●前言 ●一、回溯法是什么? 1.简要介绍 ●二、回溯法经典案例——兔子走迷宫游戏 1.具体情况 2.代码展示(C) 3.结果展示 ●总结 前言 简单的来说,算法就是用计算机程序代码来实…

性能监控和工具使用

1、jvm 内存模型 程序计数器 Program Counter Register:  记录的是正在执行的虚拟机字节码指令的地址,  此内存区域是唯一一个在JAVA虚拟机规范中没有规定任何OutOfMemoryError的区 域  虚拟机:VM Stack  描述的是 JAVA 方法执行的内…

Delphi 中.dproj 文件解析(二、详细解析)

上一篇 介绍了Delphi 的各个版本,本文开始分析.dproj文件。.dproj是一个XML文件,里边包含了我们在Delphi开发环境中对项目设置的所有参数(位于IDE:Project -> Options 中),包括并不限于:版本…

LabVIEW查找范例VI

LabVIEW查找范例VILabVIEW拥有数百个范例VI,用户可搜索需要的范例VI并将其整合到自己创建的VI中。除LabVIEW内置的范例VI之外,在ni.com技术支持页中可查看更多的范例VI。用户可根据应用程序的需要对范例进行修改,也可复制并粘贴一个或多个范例…

LC-1824. 最少侧跳次(动态规划)

1824. 最少侧跳次数 难度中等49 给你一个长度为 n 的 3 跑道道路 ,它总共包含 n 1 个 点 ,编号为 0 到 n 。一只青蛙从 0 号点第二条跑道 出发 ,它想要跳到点 n 处。然而道路上可能有一些障碍。 给你一个长度为 n 1 的数组 obstacles &a…

【FPGA】Verilog 实践:狄摩根定律 | 布尔方程 | 1bit 比较器

写在前面:为了解狄摩根定理和布尔函数的行为,我们使用 Verilog 实现狄摩根定律和布尔函数的行为。生成输入信号后,验证通过仿真实现的结果。 Ⅰ. 前置知识 0x00 离散结构:否定量词的狄摩根定律 否定量词的狄摩根定律是&#xf…

基于自适应降噪的深度神经网络对抗图像检测【论文阅读】

近年来,许多研究表明,深度神经网络(DNN)分类器可能会被对抗性示例所欺骗,这种对抗性示例是通过对原始样本引入一些扰动来设计的。据此,提出了一些强大的防御技术。然而,现有的防御技术往往需要修改目标模型或依赖于攻击…

针对容器场景的多功能渗透工具

介绍 CDK是一款为容器环境定制的渗透测试工具,在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP。集成Docker/K8s场景特有的 逃逸、横向移动、持久化利用方式,插件化管理。 下载/植入 将可执行文件投递到已攻入的容器内部开始使用 https://github.c…

浏览器打不开某些网站是什么原因导致,试试用这些方法来解决

不少小伙伴使用一些浏览器浏览网页的时候,发现打不开某些网站,这是什么原因导致的呢?本文讲汇总几个常见的原因,我们可以通过以下几个原因排查,并且使用下文的解决方法可以试试能否打开网站。打不开网站的原因1、浏览器限制如果用…

SpringMVC工作流程

SpringMVC工作流程 1. SpingMVC的常用组件 1)DispatcherServlet 是一种前端控制器,由框架提供。作用:统一处理请求和响应。除此之外还是整个流程控制的中心,由 DispatcherServlet 来调用其他组件,处理用户的请求 2&am…

在甲骨文云容器实例(Container Instances)上部署Oracle Linux 8 Desktop

甲骨文云推出了容器实例,这是一项无服务器计算服务,可以即时运行容器,而无需管理任何服务器。 今天我们尝试一下通过容器实例部署Oracle Linux 8 Desktop。 创建容器实例 在甲骨文容器实例页面,单击"创建容器实例"&am…

【甄选靶场】Vulnhub百个项目渗透——项目五十六:sp-jerome(squid代理,计划任务)

Vulnhub百个项目渗透 Vulnhub百个项目渗透——项目五十六:sp-jerome(文件上传,缓冲区溢出) 🔥系列专栏:Vulnhub百个项目渗透 🎉欢迎关注🔎点赞👍收藏⭐️留言&#x1f4…

微信公众号主体已注销 如何办理账号迁移和公证书?

公众号主体公司已经注销,公众号也可以办理迁移的。而且需要尽快迁移,如果被微信系统检测到主体注销,而公众号还在经营就会要求限期迁移,否则公众号将被冻结。 下面我们就来说一下,主体已注销如何办理公众号迁移。 注&a…

Ubuntu20.04+GLFW搭建OpenGL开发环境

环境 系统:Ubuntu 20.04 桌面环境:X11 OpenGL版本: 3.0 桌面环境怎么看呢?可以在终端输入echo $XDG_SESSION_TYPE 即可,或者查看桌面右上角的Settings->About,查看Windowing System 查看OpenGL版本 使用glxinfo命…

【数据结构】深度剖析栈的各接口功能实现

目录 🍊前言🍊: 🥝一.栈的概述🥝: 1.栈的概念: 2.栈的结构: 🍉 二、栈的各接口功能实现🍉: 1.栈的初始化: 2.压栈:…