Python第6课 返回课程目录

在上节课中,我们学习了 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-else 语句的执行顺序,梳理成流程图后,再来整理一下程序运行流程。

第一种情况,程序运行到 if 判断时,如果条件为真,执行 if 的代码块。

完成后,运行 if-else 后面的代码。

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

完成后,运行 if-else 后面的代码。

代码小结

使用if-else的格式

答案:B
答案:A

A 选项正确。

本题中if的判断条件满足,所以会输出“大于0”。

else后的语句因前面的if判断条件已经成立,所以就不会再执行。

C 选项正确。

if 条件不成立,不会执行 if 的代码块;程序执行else的代码块。

完成后继续运行代码,格式化输出这是数字9。

题目:

给一个变量 myHeight 赋值171。给变量 yourHeight 赋值181。

如果变量 myHeight小于变量 yourHeight ,就输出”I am shorter than you”。否则的话,输出”I am not shorter than you”。

myHeight = 171
yourHeight = 181
if myHeight < yourHeight:
    print("I am shorter than you")
else:
    print("I am not shorter than you")

题目

有一个三角形,a 边为 3,b 边为 4,斜边 c 边为 5。

编写一段代码,将边长 3、4、5 分别赋值给变量 a、b、c。

使用 if-else 语句,如果三条边长满足勾股定理(a*a+b*b=c*c),输出”这是直角三角形”,否则,输出”这不是直角三角形”。

a = 3
b = 4
c = 5
if a*a+b*b==c*c:
    print("这是直角三角形")
else:
    print("这不是直角三角形")

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 无关。

D选项正确。

本题进行了3次if判断,并且彼此之间的判断互不影响。

而number三个if条件都不满足,故执行else的代码块。

答案:C

题目:

用程序来判断,今天去哪玩?

将”晴天”赋值给变量weather,如果今天是”晴天”,就输出”我们去爬山”;
否则,就输出”我们宅在家”;

weather = "晴天"
if weather == "晴天":
    print("我们去爬山")
else:
    print("我们宅在家")

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

思考一下图中代码为什么能够正常运行?

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

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

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

“非空”是什么意思呢?要理解“非空”先要理解“空值”这个概念。

空值 Null

定义

空值,又叫 NULL 值,在 Python 中写作 None。None 是关键字。

它代表这个数值不是整型,不是字符串,不是浮点型,表示没有值。

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

隐喻

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

D选项不像空值。

因为A是空抽屉,B是空眼镜盒,C是空碗。只有D是装有内容物的杯子,所以它最不像“空值”。

D 选项错误。

空值不是不存在,是没有值


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

当一个变量里有值,并且这个值不是空值,我们就说这个变量非空。

非空值可以是整型、字符串、浮点型和布尔数。

非空 Non-null

定义

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

同时我们也把所有不是空值的值称为“非空值”。

隐喻

装有饮料的杯子。

C选项不像非空。

因为A是装有衣服的箱子,B是装有眼镜的眼镜盒,D是装有饮料的杯子。只有C是没有装任何东西的抽屉,所以它最不像非空

D 选项错误。

当一个变量里有值,并且这个值不是空值,我们就说这个变量“非空”。


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

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

C 选项正确。
在第一个 if 判断中,对None的判断为假,程序不会执行print(f”我的得分是{myScore}”)。

B 选项正确。

在第一个 if 判断中,对数字0的判断为假,程序不会执行print(f”我的得分是{myScore}”)。


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

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

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

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

题目:

将变量password设置为None;

如果password为“yequ”,输出“欢迎来到夜曲”;

如果password为空值或者不为“yequ”,输出“密码不正确”。

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

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

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

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

本节课学习了双向选择的判断。

我们来总结一下本课的知识点:

题目

一、

设置一个常数n=786,判断其奇偶性。 如果n为偶数,输出”n为偶数”,否则,输出”n为奇数”。

提示:偶数取模等于0,奇数取模等于1

n = 786
if n % 2 == 0:
    print("n为偶数")
else:
    print("n为奇数")

题目:

是否回本

一批货物进价(bid)为200/件,售价(price)为300/件,进了10件货,卖了8件,回本了么?

提示:如果纯利润(profit)大于等于零,则输出“回本了”;否则输出“没有回本”。

bid = 200
price = 300
profit = price * 8 - bid * 10
if profit >= 0:
    print("回本了")
else:
    print("没有回本")

题目:

使用else简化代码

为了更快捷的写出代码,今天我们学习了如何使用 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")

1 打赏
未经允许不得转载:杨哥视界 » Python第6课 返回课程目录
分享到

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏