《人生苦短——我学Python》条件判断->双向选择(if--else)

今天我们来学习双向选择判断。顾名思义,双向就是两种选择选其一,即if----else。如果If的条件不成立,则执行else下的语句,否则执行if下面的语句。显然,它们是互斥的!下面就让我们来详细看看吧!


在这里插入图片描述


文章目录

  • 一、要点先知:
  • 二、基础讲解:
  • 三、拓展讲解:
    • 1. 空值:
    • 2. 非空:
    • 3 空值和非空的应用:
    • 4. 注意事项:
  • 四、刷题练习;
    • 1. 优化代码:
    • 2. Jack的行李费:
    • 3. 登陆账号:
    • 4. 报考飞行员:


一、要点先知:

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

  2. else 后面的语句是判断条件不成立时,执行的操作。

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

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

👇让我们通过下面这两张图片再来巩固一下:

  • 第一种情况,程序运行到 if 判断时,如果条件为执行 if 的代码块。完成后,运行 if-else 后面的代码。
    在这里插入图片描述

  • 第二种情况,程序运行到 if 判断时,如果条件为,程序就直接跳开 if 判断的执行部分,运行 else 的代码块。完成后,运行 if-else 后面的代码。
    在这里插入图片描述

✨如果你已经有了一定的编程基础(比如C,C++,Java等等),相信第二部分的内容将对你作用不大,可以自行跳过,直接进入第三部分。


二、基础讲解:

if-else 语句有两个特性。

  • 第一,else 需与 if 搭配使用,它无法独立出现。

    • 必须先有 if,然后才能使用 else,否则程序就会报错。
  • 第二,if 与 else 成互斥关系。

    • 互斥关系也就是说,程序不会既执行 if 内的代码块,又执行 else 内的代码块。

else 是把 if 判断条件无法囊括的情况全部揽到了自己这里

在这里插入图片描述


三、拓展讲解:

在判断语句中,除了使用布尔表达式可以作为条件,还有其他的数据类型也可以作为判断条件。

myAge=20
if(myAge):# 执行相应的操作
else:# 执行相应的操作

想想为啥这个if条件是成立的?

  • 因为 myAge 被赋值了一个整型 20,所以它被判定为 True,于是程序继续执行了下一步代码。

在这里,变量myAge就是“非零非空”数据。

非零”这个概念比较好理解,数字 0 被判断为False,其他数字(包含正数和负数)都被判断为True

那非空又是啥意思呢?


1. 空值:

定义:空值,又叫 NULL 值,在 Python 中写作 None
(None 是关键字)

  • 它代表这个数值不是整型,不是字符串,不是浮点型,表示没有。
  • 隐喻:空值就像杯子里的空气,它指代的是杯子里什么都没有装。

⚠️注意:它和 0 不一样,因为 0 的值是 0,而空值的值是None。


2. 非空:

了解了“空值”后,“非空”就更好理解了。

定义:当一个变量里有值,并且这个值不是空值(None),我们就说这个变量“非空”

  • 非空值可以是整型、字符串、浮点型和布尔数。
  • 同时我们也把所有不是空值的值称为“非空值”。

隐喻:装有饮料的杯子。


3 空值和非空的应用:

布尔表达式和非零非空数据,都可以作为判断语句的条件。

在判断语句中,对非零值判断为真;对数字0的判断为假;对 None 的判断为假。

当我们在登录邮箱时,需要输入账号和密码。

账号和密码就是“非空”数据,如果输入正确就登录成功。

如果忘记输入密码,点击登录按钮,程序就会判断的密码为“空值”,就会提示你“密码不正确”。

这就是非空和空值最常见的场景。


4. 注意事项:

现在,我们就学习完了 if-else 语句。 同学们在刚接触 if-else 判断时,最容易出现以下两种 bug:

  1. 语法错误
    else 后面的冒号常常被遗漏,这是if-else的固定格式,有冒号程序才知道下面是 else 的代码块

  2. 缩进问题
    if 和 else 为互斥关系,else 的代码块需要通过缩进形成。为了保持风格统一,每个缩进用 4 个空格。


四、刷题练习;

1. 优化代码:

为了更快捷的写出代码,今天我们学习了如何使用 if-else 来优化程序。

下面我们就来试试吧,使用 if-else 来简化以下的代码:

a = -3
if a > 0:print("这个数字大于0")
if a <= 0:print("这个数字小于等于0")

示例代码如下:

a=-3
if a> 0 :print("这个数字大于0")
else :print("这个数字小于等于0")

2. Jack的行李费:

Jack要出国留学,带了三个行李,分别是 8.5 公斤,6 公斤,8 公斤。

飞机免费托运限额为 20 公斤,超出的部分每公斤交 20 元的运费,那么Jack需要交运费吗,如果需要的话交多少运费?

答案示例:
如果需要交运费则输出“需要交x元”
如果不需要交运费则输出“不需要补运费”

示例代码如下:

a=8.5
b=6
c=8
z=a+b+c
if z>20 :x=(z-20)*20print(f"需要交{x}元")
else :print("不需要补运费")

3. 登陆账号:

登录CSDN时需要输入账户名(username)和密码(password)。

现在路飞想要登录CSDN,账户名为"lufei",可是他忘记密码为"onepiece"。于是没有输入密码就点击了登录,请输出此时系统的提示。

系统的判定是这样的:
如果账户名和密码都正确,系统会提示“登录成功”;
否则,系统会提示“请输入正确的账号和密码”。

请编写代码模拟不同输入情况下系统的运行并输出路飞的系统提示结果。

示例代码如下:

username="lufei"
password=None
if username=="lufei" and password=="onepiece" :print("登录成功")
else :print("请输入正确的账号和密码")

4. 报考飞行员:

小夜的男同学今年20岁,身高175,他想要报考飞行员,飞行员的要求是年龄在17到27岁之间,身高在169到185之间,小夜的同学满足报考条件么?

示例代码如下:

age=20
height=175
if 17<=age<=27 and 169<=height<=185 :print("符合报考条件")
else :print("不符合报考条件")

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

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

相关文章

springboot自定义表格(动态合并单元格)

一、需求展示&#xff08;一个订单多个商品&#xff0c;商品数量不限订单行合并&#xff09; 二、技术选型&#xff08;jxls自定义模板&#xff09; <!-- 版本具体看官网Release&#xff0c;这里我们使用 2.13.0 --><dependency><groupId>org.jxls</group…

【数学建模竞赛】数据预处理知识总结1——数据清洗

数据预处理是什么 在数学建模赛题中&#xff0c;官方给所有参赛选手的数据可能受到主观或客观条件的影响有一定的问题&#xff0c;如果不进行数据的处理而直接使用的话可能对最终的结果造成一定的影响&#xff0c;因此为了保证数据的真实性和建模结果的可靠性&#xff0c;需要…

day 47 | ● 392.判断子序列 ● 115.不同的子序列

392.判断子序列 如果用dp判断true or false无法满足&#xff0c;所以dp用来表示以下标i-1为结尾的字符串s&#xff0c;和以下标j-1为结尾的字符串t&#xff0c;相同子序列的长度 func isSubsequence(s string, t string) bool {dp : make([][]int, len(s) 1)for i : 0; i &…

Redis基本了解

Redis 基于内存进⾏存储&#xff0c;⽀持 key-value 的存储形式&#xff0c;底层是⽤ C 语⾔编写的。 基于 key-value 形式的数据字典&#xff0c;结构⾮常简单&#xff0c;没有数据表的概念&#xff0c;直接⽤键值对的形式完成数据的管理&#xff0c;Redis ⽀持 5 种数据类型…

8月《中国数据库行业分析报告》已发布,聚焦数据仓库、首发【全球数据仓库产业图谱】

为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况&#xff0c;从2022年4月起&#xff0c;墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》&#xff0c;持续传播数据技术知识、努力促进技术创新与行业生…

Ceph BlueStore 和双写问题

论开源分布式存储&#xff0c;Ceph大名鼎鼎。用同一个存储池融合提供块存储、对象存储、集群文件系统。在国内有近年使用量迅速攀升。 大型公司内部研发云虚拟化平台&#xff0c;常使用开源方案Openstack或者Kubernetes&#xff0c;配套的为虚机或容器提供块存储的开源方案&am…

Linux centos7 bash编程(循环与条件判断)

在编程训练中&#xff0c;循环结构与条件判断十分重要。 根据条件为真为假确定是否执行循环。 有时&#xff0c;根据条件的真假结果&#xff0c;决定执行哪些语句&#xff0c;这就是分支语句。 为了训练分支语句与循环语句&#xff0c;我们设计一个案例&#xff1a; 求一组…

编译OpenWrt内核驱动

编译OpenWrt内核驱动可以参考OpenWrt内部其它驱动的编写例程&#xff0c;来修改成自己需要的驱动 一、OpenWrt源代码获取与编译 1.1、搭建环境 下载OpenWrt的官方源码&#xff1a; git clone https://github.com/openwrt/openwrt.git1.2、安装编译依赖项 sudo apt update -…

计算机视觉主要任务

计算机视觉&#xff1a;使用计算机及相关设备对生物视觉的一种模拟。 主要包含6大任务&#xff0c;图像分类&#xff0c;目标检测&#xff0c;目标跟踪&#xff0c;语义分割&#xff0c;实例分割&#xff0c;影像重构。 图像分类&#xff1a;根据图像信息中所反映的不同特征&am…

设计模式-6--装饰者模式(Decorator Pattern)

一、什么是装饰者模式&#xff08;Decorator Pattern&#xff09; 装饰者模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你在不修改现有对象的情况下&#xff0c;动态地将新功能附加到对象上。这种模式通过创建一个包装类&#xff0c;…

什么是malloxx勒索病毒,服务器中malloxx勒索病毒了怎么办?

Malloxx勒索病毒是一种新型的电脑病毒&#xff0c;它通过加密用户电脑中的重要文件数据来威胁用户&#xff0c;并以此勒索钱财。这种病毒并不是让用户的电脑瘫痪&#xff0c;而是以非常独特的方式进行攻击。在感染了Malloxx勒索病毒后&#xff0c;它会加密用户服务器中的数据&a…

神经网络NLP基础 循环神经网络 LSTM

用的时候&#xff0c;只关心token的输入&#xff0c;以及hidden state就好了 sequence的length是多少&#xff0c;lstm的cell的数量就是多少 LSTM BI-LSTM stacked lstm GRU 实现