【Python编程基础6/6】双向选择的判断

目录

知识回顾

导入

if-else

执行顺序

特性

两种判断语句的对比

就近原则

空值

        定义

非空

定义

在判断语句中的关系

应用场景

练习

Debug

总结


知识回顾

        在上节课中,我们学习了 if 判断,如果布尔表达式成立,就执行后面的代码块。假设,if 判断后面的布尔表达式不成立,我们想要执行另外的代码块,这该怎么办呢?

导入

        在图例中,我们使用了两个 if,来保证对比情况都会有对应的输出。为了更便捷地写出代码,我们可以使用 if-else 来优化这段程序。

if-else

        if 后面的语句是当判断条件成立时,需要执行的操作。else 后面的语句是判断条件不成立时,执行的操作。

        以下栗子中比较了变量 yourScore 和变量 myScore。
        如果 yourScore 大于 myScore,就输出"你的得分比我高"。第7行代码进行 else 判断,否则就输出"你的得分不比我高"。

yourScore = 80
myScore = 90

if yourScore > myScore:
    print("你的得分比我高")
else:
    print("你的得分不比我高")

if判断

        if后面的布尔表达式,在这里不成立。if里面的代码块,也就是第五行代码,不会被执行。

else

        一个关键字 else,如果之前的 if 判断条件不成立,就执行 else 的代码块。

冒号

        在 else 之后使用冒号,表示后续缩进的代码块在判断条件不成立的时候会被执行。

缩进

        缩进生成 else 内的代码块,这里我们还是空四格。

执行顺序

        我们把 if-else 语句的执行顺序,梳理成流程图后,再来整理一下程序运行流程。第一种情况,程序运行到 if 判断时,如果条件为真,执行 if 的代码块。完成后,运行 if-else 后面的代码。

        第二种情况,程序运行到 if 判断时,如果条件为假,程序就直接跳开 if 判断的执行部分,运行 else 的代码块。完成后,运行 if-else 后面的代码。

特性

        if-else 语句有两个特性。第一,else 需与 if 搭配使用,它无法独立出现。必须先有 if,然后才能使用 else,否则程序就会报错。

第二,if 与 else 成互斥关系。互斥关系也就是说,程序不会既执行 if 内的代码块,又执行 else 内的代码块。else 是把 if 判断条件无法囊括的情况全部揽到了自己这里。

两种判断语句的对比

        现在,我们已经学习了两种判断语句 if 和 if-else。if 语句属于单向判断。只要条件成立,就会运行 if 内的代码块;条件不成立,程序就会跳开 if 判断。

        if-else语句属于双向判断。如果 if 的条件不成立,就执行 else 内的代码块。if 和 else 是两个互斥关系,程序只会执行其中的一个

就近原则

        当我们在同时使用 if 和 if-else 语句时,要注意 if 和 else 的关系。例如,下图例中的代码,包含了 2 个 if 判断和 1 个 if-else语句,这三个判断互不影响。
        在这里,else 是与第 3 个 if 搭配成 if-else 语句,与前两个 if 无关。

空值

        在判断语句中,除了使用布尔表达式可以作为条件,还有其他的数据类型也可以作为判断条件。
        思考一下图中代码为什么能够正常运行?
        因为 myAge 被赋值了一个整型 20,所以它被判定为 True,于是程序继续执行了下一步代码。
        在这里,变量myAge就是“非零非空”数据。

        “非零”这个概念比较好理解,数字 0 被判断为False,其他数字(包含正数和负数)都被判断为True。
        “非空”是什么意思呢?要理解“非空”先要理解“空值”这个概念。

        定义

        定义空值,又叫 NULL 值,在 Python 中写作 None。None 是关键字。它代表这个数值不是整型,不是字符串,不是浮点型,表示没有值。
        注意,它和 0 不一样,因为 0 的值是 0,而空值的值是None。

        隐喻:空值就像杯子里的空气,它指代的是杯子里什么都没有装。

非空

        了解了“空值”后,“非空”就更好理解了。当一个变量里有值,并且这个值不是空值,我们就说这个变量非空。非空值可以是整型、字符串、浮点型和布尔数。

定义

        定义:当一个变量里有值,并且这个值不是空值(None),我们就说这个变量“非空”。
同时我们也把所有不是空值的值称为“非空值”。

        隐喻:装有饮料的杯子。

在判断语句中的关系

        布尔表达式和非零非空数据,都可以作为判断语句的条件。在判断语句中,对非零值判断为真;对数字0的判断为假;对 None 的判断为假。

应用场景

        当我们在登录邮箱时,需要输入账号和密码。账号和密码就是“非空”数据,如果输入正确就登录成功。如果忘记输入密码,点击登录按钮,程序就会判断的密码为“空值”,就会提示你“密码不正确”。
        这就是非空和空值最常见的场景。

练习

将变量password设置为None;
如果password为“yequ”,输出“欢迎来到夜曲”;
如果password为空值或者不为“yequ”,输出“密码不正确”。

参考代码1:

password = None
if password == "yequ":
    print("欢迎来到夜曲")
else:
    print("密码不正确")

参考代码2;

password = None
if password == "yequ":
    print("欢迎来到夜曲")
if password == None or password != "yequ":
    print("密码不正确")

运行结果:

Debug

        现在,我们就学习完了 if-else 语句。 大家在刚接触 if-else 判断时,最容易出现以下两种 bug:
1. 语法错误
else 后面的冒号常常被遗漏,这是if-else的固定格式,有冒号程序才知道下面是 else 的代码块。
2. 缩进问题
if 和 else 为互斥关系,else 的代码块需要通过缩进形成。为了保持风格统一,每个缩进用 4 个空格。

总结

        

        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构(二)——线性表(顺序表)

二、线性表 2.1线性表的定义和基本操作 2.1.1 线性表的基本概念 线性表:是具有相同数据类型的 n 个数据元素的有限序列。(Eg:所有的整数按递增次序排列,不是顺序表,因为所有的整数是无限的)其中n为表长,当n0时线性表是一个空表…

kali当中不同的python版本切换(超简单)

kali当中本身就是自带两个python版本的 配置 update-alternatives --install /usr/bin/python python /usr/bin/python2 100 update-alternatives --install /usr/bin/python python /usr/bin/python3 150 切换版本 update-alternatives --config python 0 1 2编号选择一个即可…

人才推荐 | 高级半导体工艺工程师,美国凯斯西储大学电化学博士

编辑 / 木子 审核 / 朝阳 伟骅英才 伟骅英才致力于以大数据、区块链、AI人工智能等前沿技术打造开放的人力资本生态,用科技解决职业领域问题,提升行业数字化服务水平,提供创新型的产业与人才一体化服务的人力资源解决方案和示范平台&#x…

uniapp 云开发笔记

uniapp云开发官方文档https://uniapp.dcloud.io/uniCloud/learning.html 新建 关联云空间 云函数获取用户openID uniCloud API列表https://uniapp.dcloud.io/uniCloud/cf-functions.html#unicloud-api%E5%88%97%E8%A1%A8 自建云函数login event中包含前端传来的参数 uniCloud.…

LeetCode刷题笔记之两数相加【数组】【中等】

两数相加 刷题笔记 🕥日期: 2024/03/09 题目描述: 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同…

mysql 性能优化——磁盘刷脏页性能优化

前言 大家是不是感觉mysql 更新挺快的呀,有没有想过mysql 更新为什么那么快。按道理说,mysql 更新都是先找到这一行数据,然后在去更新。意味着,就有两次磁盘操作,一个是磁盘读,一个是磁盘写。如果真的是这…

使用 SPL 高效实现 Flink SLS Connector 下推

作者:潘伟龙(豁朗) 背景 日志服务 SLS 是云原生观测与分析平台,为 Log、Metric、Trace 等数据提供大规模、低成本、实时的平台化服务,基于日志服务的便捷的数据接入能力,可以将系统日志、业务日志等接入 …

【鸿蒙开发】第十七章 Web组件(一)

1 Web概述 Web组件用于在应用程序中显示Web页面内容,为开发者提供页面加载、页面交互、页面调试等能力。 页面加载:Web组件提供基础的前端页面加载的能力,包括:加载网络页面、本地页面、html格式文本数据。 页面交互&#xff1a…

Python学习之基础语法

一、HelloWorld 二、Python基础语法 2.1 字面量 定义:在代码中,被写下来的固定的值,称之为字面量。 常用的6种值的类型 字符串 Python中,字符串需要用双引号包围; 被双引号包围的都是字符串 666 13.14 "黑马…

YOLOv3: An Incremental Improvement

新网络是YOLOv2、Darknet-19中使用的网络和那些新奇的残余网络之间的混合方法。我们的网络使用连续的3 3和1 1卷积层,但现在也有一些快捷连接,并且明显更大。它有53个卷积层,所以我们叫它Darknet-53。 这个新网络比Darknet19强大得多&#…

misc40

下载附件,发现只有第三个wav文件需要密码,其他都可以看 打开 conversion.txt 二进制转十进制得到202013 开 一张普通的二维码.png,直接扫不出结果。 010查看图片尾部发现 Brainfuck 编码 解码得到: 和谐民主和谐文明和谐和谐和谐…

WebStorm 开启 eslint 自动格式化配置

之后在 ctrl s保存之后,webstorm 都会根据eslint 的规则自动格式化。

缓存雪崩,穿透,击穿

为什么要设置缓存: 有海量并发的业务场景需要,大量的请求涌入关系型数据库,基于磁盘的IO读取效率低下,常用的mysql数据库不易进行扩展维护,容易造成数据库崩溃,从而相关业务崩溃,系统崩溃。 因此…

【C++初阶】第五站:C/C++内存管理 (匹配使用,干货到位)

前言: 本文知识点: 1. C/C内存分布2. C语言中动态内存管理方式3. C中动态内存管理4. operator new与operator delete函数 5. new和delete的实现原理 (干货在此) 6. 定位new表达式(placement-new)7. 常见面试题 目录 C/C内…

spring boot 学习

目录 引言: 一、Spring Boot概述 二、Spring Boot的核心特性 1 自动配置 2 起步依赖 3 内嵌容器 4 监控与管理 三、Spring Boot的入门步骤 1 环境安装 2 创建项建 3 编写代码 1 启动类 2 控制器 3服务 4自动装配 5配置属性 6 JPA实体 4 运行与调试…

Linux网络套接字之UDP网络程序

(。・∀・)ノ゙嗨!你好这里是ky233的主页:这里是ky233的主页,欢迎光临~https://blog.csdn.net/ky233?typeblog 点个关注不迷路⌯▾⌯ 实现一个简单的对话发消息的功能! 目录…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:RotationGesture)

用于触发旋转手势事件,触发旋转手势的最少手指为2指,最大为5指,最小改变度数为1度。 说明: 从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 接口 RotationGesture(value?: …

Oracle SQL优化(读懂执行计划 一)

目录 SQL执行计划的作用示例演示执行计划概念介绍执行计划实例DISPLAY_CURSOR 类型DISPLAY_AWR 类型 指标详解 SQL执行计划的作用 示例演示 执行计划概念介绍 执行计划实例 DISPLAY_CURSOR 类型 DISPLAY_AWR 类型 指标详解

C/C++指针详解

接下来我们来介绍一下什么是指针? 指针其实就是元素存放地址,更加形象的比喻:在酒店中如果你想要去注必须去付费不然不能住,在计算机也同样如此(但是不需要付费哦)每当我们使用一个变量或其他需要申请空间…

三、N元语法(N-gram)

为了弥补 One-Hot 独热编码的维度灾难和语义鸿沟以及 BOW 词袋模型丢失词序信息和稀疏性这些缺陷,将词表示成一个低维的实数向量,且相似的词的向量表示是相近的,可以用向量之间的距离来衡量相似度。 N-gram 统计语言模型是用来计算句子概率的…