今天我们来学习双向选择判断。顾名思义,双向就是两种选择选其一,即if----else
。如果If的条件不成立,则执行else
下的语句,否则执行if
下面的语句。显然,它们是互斥
的!下面就让我们来详细看看吧!
文章目录
- 一、要点先知:
- 二、基础讲解:
- 三、拓展讲解:
- 1. 空值:
- 2. 非空:
- 3 空值和非空的应用:
- 4. 注意事项:
- 四、刷题练习;
- 1. 优化代码:
- 2. Jack的行李费:
- 3. 登陆账号:
- 4. 报考飞行员:
一、要点先知:
-
if
后面的语句是当判断条件成立
时,需要执行
的操作。 -
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:
-
语法错误:
else 后面的冒号
常常被遗漏,这是if-else的固定格式,有冒号程序才知道下面是 else 的代码块
。 -
缩进问题:
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("不符合报考条件")