进行逻辑判断,是生活中常见的行为。同样,在程序中,进行逻辑判断也是最为基础的功能,一个逻辑判断的流程非常简单,我们有一个判断的条件,那么他无非给我们返回两个结果,是或者否,是的话有是的操作,否的话也有否的操作,那这就是一个最为简单的逻辑判断的行为了。
习惯看视频的同学可以看这个免费教程:
https://www.bilibili.com/video/BV1ZK411Q7uX/?vd_source=704fe2a34559a0ef859c3225a1fb1b42&wxfid=o7omF0RELrnx5_fUSp6D59_9ms3Y
为什么学习判断语句
判断在程序中广泛应用,如果没有它,我们生活中的非常多的操作都难以实现。比如下面这些:
那么这一系列功能的实现呢,也都是基于程序中的判断功能,判断是程序最基础,最核心的,逻辑功能。
布尔类型和比较运算符
学习目标
-
掌握布尔类型用于表示:真和假
-
掌握比较运算符用于计算:真和假
布尔类型
进行判断,只有2个结果:是或者否。程序中,如何描述:是或否呢?答案是使用:布尔类型。 Python中常用的有6种值(数据)的类型:
布尔类型的定义
布尔类型的字面量:
-
True 表示真(是、肯定)
-
False 表示假(否、否定)
定义变量存储布尔类型数据: 变量名称 = 布尔类型字面量 布尔类型不仅可以自行定义,同时也可以通过计算得来。 也就是使用比较运算符进行比较运算得到布尔类型的结果。
比较运算符
那什么叫做比较运算符,什么又叫比较运算呢?我们看下面一个例子:
result = 10 >5
print(f"10>5的结果是:{result},类型是:{type(result)}")
输出的结果是:
10>5的结果是:True,类型是:<class 'bool'>
可以看到它的值是True表示真,也就是10大于5是成立,同时它的类型是bool类型。
再看一个例子:
在这个运算里面,我们所使用到的大于号就是所谓的比较运算符了,我们可以通过比较运算符去做值的比较来完成bool的结果。
bool_1 = True
bool_2 = False
print(f"bool_1变量的内容是:{bool_1}, 类型是:{type(bool_1)}")
print(f"bool_2变量的内容是:{bool_2}, 类型是:{type(bool_2)}")
输出结果:
bool_1变量的内容是:True, 类型是:<class 'bool'>
bool_2变量的内容是:False, 类型是:<class 'bool'>
在Python中比较运算符主要有6类:
运算符 | 描述 | 示例 |
---|---|---|
== | 判断内容是否相等,满足为True,不满足为False | 如a=3,b=3,则(a == b) 为 True |
!= | 判断内容是否不相等,满足为True,不满足为False | 如a=1,b=3,则(a != b) 为 True |
> | 判断运算符左侧内容是否大于右侧满足为True,不满足为False | 如a=7,b=3,则(a > b) 为 True |
< | 判断运算符左侧内容是否小于右侧满足为True,不满足为False | 如a=3,b=7,则(a < b) 为 True |
>= | 判断运算符左侧内容是否大于等于右侧满足为True,不满足为False | 如a=3,b=3,则(a >= b) 为 True |
<= | 判断运算符左侧内容是否小于等于右侧满足为True,不满足为False | 如a=3,b=3,则(a <= b) 为 True |
那么基于这6个运算符我们就可以去做非常丰富的内容的比较了,通过内容的比较,去完成bool结果的获取。
if语句的基本格式
学习目标
-
掌握逻辑判断语句(if)的基本语法格式
-
掌握布尔类型数据,在判断语句中的作用
if判断语句
-
生活中的判断:
在生活中如果要进行判断的话,流程还是非常简单的,我们有一个假定条件,如果他成立的话,我们就会做一些动作。
比如:如果小美喜欢我,明天我就去表白,那么在这里面小美是否喜欢我,这是一个判断的条件,如果它成立的话,那么我明天去表白就是相应的动作了。
-
程序中的判断:
那在程序中如何做呢,其实也非常的简单,Python通过if语句来去完成逻辑判断。看一下语法:
if 要判断的条件:
条件成立时,要做的事情
有一些细节同学们千万要注意:
-
“if 要判断的条件” 后的冒号不要丢;
-
条件成立时,要做的事情 前要有4个空格缩进
看一下下面实例的变量:
# 定义变量
age = 3
# 进行判断
if age >= 18:
print("我已经成年了")
运行一下的话,不会输出任何结果,因为if语句的条件不成立。
那我们来继续再看下方的代码,在这个代码里面,同样是对年龄进行了判断:
age = 18
print(f"今年我已经{age}岁了")
if age >= 18:
print("我已经成年了")
print("即将步入大学生活") # 当if判断条件结果时,当True时,代码会被执行,为False时,代码不会执行
print("时间过的真快呀")
如果我们的判断成立,当age为18时,下面两个print都会输出:
今年我已经18岁了
我已经成年了
即将步入大学生活
时间过的真快呀
那通过这个代码我们会发现,在if的成立条件之后呢,我们可以不仅仅只写一条代码,其实你可以写任意多的代码,想写多少都写多少,但一定要注意,要有4个空格做缩进。
当age为10时,它是不是满足成年的条件,所以说里面的两个printer不会输出。
今年我已经10岁了
时间过的真快呀
但你会发现“时间过得真快啊”最后这个print它依旧是输出了的,这就是我们所说的缩进,前面没有缩进,它和这个if是同级的,那就说明下面这个print,它根本不受if的影响。
而if里的两个print语句,因为他们前面有4个空格缩进,所以说在归属上,它们属于这个if条件,是受到它的条件控制的,那我们如果将age设置为10的时候,你会发现这个条件是不是不成立了,然后我已经成年了,即将步入大学生活,这句话就没有打印出来。
if语句的注意点
最后再强调以下两个注意点:
第一,我们的逻辑判断,比如说age >= 18,这是一个比较运算。 所以说我们if能够运行的前提是你的判断语句的结果,必须是bool类型,True或者False。
第二,冒号千万不要忘记,否则代码就会报错同时,执行条件前面的4个空格缩进也不要忘记。
age = 18
print(f"今年我已经{age}岁了")
if age >18:
print("我已经成年了")
print("即将步入大学生活")
print("时间过的真快")
练习案例:成年人判断
结合前面学习的input输入语句,完成如下案例:
-
通过input语句,获取键盘输入,为变量age赋值。(注意转换成数字类型)
-
通过if判断是否是成年人,满足条件则输出提示信息,如下:
欢迎来到黑马儿童游乐场,儿童免费,成人收费。
请输入你的年龄:30
您已成年,游玩需要补票10元。
祝您游玩愉快。
写入完成
提示:您已成年,需要补票的信息输出,来自if判断 参考代码如下:
# 获取键盘输入
age = int(input("请输入你的年龄:"))
# 通过if判断是否是成年人
if age >= 18:
print("您已成年,游玩需要买票,10元.")
print("祝您游玩愉快")
if else 语句
学习目标
-
掌握if else 语句的组合用法
if满足条件会执行相应的代码语句,如果不满足呢?有没有不满足的情况下,可供执行的代码呢?,if else 语句可以实现。
if else语句
-
生活中的判断
在生活中,我们经常会有如下的判断:如果满足条件,我就做什么事情;否则,我就去做另一件事情。比如,如果小美喜欢我,明天我就去表白。如果条件不成立,我就去追求。你会发现,满足条件和不满足条件都有对应的行为。
程序的判断
那这个行为放到代码中如何实现呢,我们通过if else 的组合使用了。
我们看一下基础语法:
首先还是先写上 if ,带上判断的条件带上冒号。在条件满足的时候,我们在里面写上要做的事情。
然后在下面跟if同级的地方我们再写上一个else,表示否则的意思,然后带上一个冒号。在里面我们写上,不满足条件时要做的事情。
那通过这样的语句代码呢,我们就会发现,如果条件满足了,我们就执行if里面的代码,那如果条件不满足,我们就执行else里面的代码,这样不管条件满不满足,我们都会有对应的策略。
if条件:
满足条件时要做的事情1
满足条件时要做的事情2
满足条件时要做的事情3
...(省略)...
else:
不满足条件时要做的事情1
不满足条件时要做的事情2
不满足条件时要做的事情3
...(省略)...
我们在下面呢,同样是刚刚做的幼儿园的案例。
在案例中呢我们对年龄进行判断,如果你满足成年的话我输出:你已成年,游玩需要补票,那如果你不满足的话,我在底下输出:您未成年,可以免费游玩。
那么在这里面这句话条件成立会执行,这句话条件不成立它会执行。
那所以这是一个简单的if else,也就是如果成立或者不成立,代码还是比较简单的:
print("欢迎来到黑马儿童游乐场,儿童免费,成人收费。")
age=int(input("请输入你的年龄:"))
if age >18:
print("您已成年,游玩需要补票10元。") #条件成立时执行
else:
print("您未成年,可以免费游玩。") # 条件不成立时执行
print("祝您游玩愉快。")
if else语句注意点
首先,我们会发现对于else来说,不需要写判断条件,因为判断条件在if里面就已经写好了,只有在条件不成立的时候,我们就需要进入到else去执行,所以它不需要条件。
第二,if和else末尾的冒号,千万不要忘记了,同时我们else代码块,同样需要4个空格作为缩进哦,这一点和if是一模一样的。
print("欢迎来到黑马儿童游乐场,儿童免费,成人收费。")
age=int(input("请输入你的年龄:"))
if age >18:
print("您已成年,游玩需要补票10元。")
else: # else,不需要判断条件
print("您未成年,可以免费游玩。") # 同样需要4个空格,作为代码的缩进哦
print("祝您游玩愉快。")
练习案例:我要买票吗
案例需求:
通过input语句获取键盘输入的身高
判断身高是否超过120cm,并通过print给出提示信息。
欢迎来到黑马动物园。
请输入你的身高(cm):111
您的身高未超出120cm,可以免费游玩。
祝您游玩愉快。
写入完成
欢迎来到黑马动物园。
请输入你的身高(cm):111
您的身高未超出120cm,可以免费游玩。
祝您游玩愉快。
参考代码:
# 定义键盘输入获取身高数据
height = int(input("请输入你的身高(cm):"))
# 通过if进行判断
if height > 120:
print("您的身高超出120CM,需要买票,10元。")
else:
print("您的身高低于120CM,可以免费游玩。")
print("祝您游玩愉快")
if elif else
学习目标:
-
掌握if elif else语句进行多条件判断的语法
某些场景下,判断条件不止一个,可能有多个。这种需求能用Python实现吗? 那肯定是可以的,if elif else 语句就可以实现。
if else语句
-
生活中的判断
在生活中,我们就会有多条件判断的场景。
比如我有一个条件,如果满足了我会做某个动作,如果这个条件不满足,我还会判断第2个条件,那如果第2个条件不满足,我还会有第3个第4个,第n个条件去判断。除非这些条件通通都不满足,最后我会进入最后一步。
我们举一个实际的案例:如果小美喜欢我,明天我就去表白,如果小美不喜欢我,我还有第二个选择,或者小田喜欢我,我明天也可以去表白,如果她俩都不喜欢我,那我就会选择最后一项,我就去追求小新了。
所以说条件判断,你会发现他有两个条件或者多个条件,小美喜欢我或者说小田喜欢我,只要有一个满足就可以,如果都不满足,我会有不满足的动作。
-
程序中的判断
那在程序中如何去完成呢,也比较简单:
我们来看下语法,我们通过if,来写上条件1,然后写上条件1满足应该做的事情。
如果条件1不满足怎么办,我们可以通过一个叫做elif的语法,通过这个关键字我们可以写条件2,然后写上条件2满足应该做的事。
条件2不满足,我们还可以继续写无数个elif,写到条件n,然后条件n应该做的事情,从上到下挨个匹配,那如果这些条件通通都不满足,最终会进入到else去执行,这是执行逻辑,还是比较简单的。
if 条件1:
条件1满足应做的事情
条件1满足应做的事情
e1if 条件2:
条件2满足应做的事情
条件2满足应做的事情
elif 条件N:
条件N满足应做的事情
条件N满足应做的事情
else:
所有条件都不满足应做的事情
所有条件都不满足应做的事情
if elif else语句
继续来看我们的黑马动物园的代码,首先我们会做出第一个判断,如果你的身高小于120,你可以免费游玩。
如果你的身高不满足要求怎么办,我会做第二个判断,如果你的VIP级别大于3,也可以免费游玩。
如果你身高高于120,同时VIP级别也小于3,所有条件都不满足,就需要买票了,那这是一个简单的多条件的应用,我们来看代码:
print("欢迎来到黑马动物园。")
height=int(input("请输入你的身高(cm):"))
vip_level=int(input("请输入你的vip级别(1~5):"))
if height < 120:
print("您的身高小于120CM,可以免费游玩。")
elif vip_level > 3:
print("您的vip级别大于3,可以免费游玩。")
else:
print("不好意思,所有条件都不满足,需要购票10元。")
print("祝您游玩愉快。")
if elif else语句注意点
刚刚呢我们完成了代码的演示,现在我们来看看它的使用注意项了。
首先第一点,我们的elif可以组合多个使用,比如说示例代码中,写了两个elif,它又多了一个条件,如果今天是1号那么同样可以免费,这个看起来挺好玩的。
print("欢迎来到黑马动物园。")
height=int(input("请输入你的身高(cm):"))
vip_level=int(input("请输入你的vip级别(1~5):"))
day=int(input("请输入今天的日期(1~30):"))
if height < 120:
print("您的身高小于120CM,可以免费游玩。")
elif vip_level > 3:
print("您的vip级别大于3,可以免费游玩。")
elif day == 1:
print("今天是1号免费日,可以免费游玩。")
else:
print("不好意思,所有条件都不满足,需要购票10元。")
print("祝您游玩愉快。")
elif的语句可以写多个,这个同学们已经见识到了。 那我们再来看下一个注意点,这个判断呢,他是互斥并且有顺序的,什么顺序呢,从上到下挨个匹配,我们在图中给他加入了编号。
-
满足1(如图编号)将不会理会2和3
-
满足2,将不会理会3
-
1、2、3均不满足,进入else
else也可以省略不写,效果等同3个独立的if判断。
print("欢迎来到黑马动物园。")
height=int(input("请输入你的身高(cm):"))
vip_level=int(input("请输入你的vip级别(1~5):"))
day=int(input("请输入今天的日期(1~30):"))
if height < 120:
print("您的身高小于120CM,可以免费游玩。")
elif vip_level > 3:
print("您的vip级别大于3,可以免费游玩。")
elif day ==1:
print("今天是1号免费日,可以免费游玩。")
else:
print("不好意思,所有条件都不满足,需要购票10元。")
print("祝您游玩愉快。")
条件判断之后,如果进入到里面去执行的话,我们的执行语句他们前面的空格,一样不可以省略哦,这个不管是我们的if还是elif还是else是四个空格的缩进,都是需要的,所以这一点千万要注意好。
刚刚的代码,其实写得有点啰嗦,我们可以将这个input语句,直接集成到条件判断中。 我们这个if里面没有写变量小于120,而是直接写上input,转换成int之后直接和120去对比,这样的话呢,我们可以让代码简洁一下,还可以少写几行,代码看起来是非常清爽的。
print("欢迎来到黑马动物园。")
if int(input("请输入你的vip级别(1~5):")) < 120:
print("您的身高小于120CM,可以免费游玩。")
elif int(input("请输入今天的日期(1~30):")) > 3:
print("您的vip级别大于3,可以免费游玩。")
elif int(input("请输入你的身高(cm):")) == 1:
print("今天是1号免费日,可以免费游玩。")
else:
print("不好意思,所有条件都不满足,需要购票10元。")
print("祝您游玩愉快。")
练习案例:猜猜心里数字
练习
-
定义一个变量,数字类型,内容随意。
-
基于input语句输入猜想的数字,通过if和多次elif的组合,判断猜想数字是否和心里数字一致。
请输入第一次猜想的数字:1
不对,再猜一次:2
不对,再猜最后一次:3
Sorry,全部猜错啦,我想的是:10
写入完成
参考代码:
# 定义一个变量数字
num = 5
# 通过键盘输入获取猜想的数字,通过多次if 和 elif的组合进行猜想比较
if int(input("请猜一个数字:")) == num:
print("恭喜第一次就猜对了呢")
elif int(input("猜错了,再猜一次:")) == num:
print("猜对了")
elif int(input("猜错了,再猜一次:")) == num:
print("恭喜,最后一次机会,你猜对了")
else:
print("Sorry 猜错了")
判断语句的嵌套
学习目标
-
掌握Python判断语句的终极用法:嵌套使用
有很多场景,不仅仅是多个并列条件,还会有满足前置条件才会二次判断的多层判断需求。对这种需求,嵌套判断语句可以实现。
判断语句的嵌套
在日常生活中或者说在程序中呢,我们会有很多的场景,他们不仅仅是多个并列的条件,还会有满足前置条件,才会进行二次判断。
那么对于这种判断需求,我们可以使用嵌套判断语句。什么叫嵌套判断语句呢?在生活中非常多的场景是有层次的判断,比如说我们先有一个外层的判断,当它满足之后呢他还会有内层的判断,那么如此往复下来,我们这个层次可以是一层,两层多层等等,那么这些判断的条件呢,也会非常地复杂。
对于现实中这种非常复杂的需求,我们就可以去自由地组合,if elif else
等等,来去完成特定需求的要求,那这种自由组合的形式,以及分有多个层次的形式,我们就把它叫做判断语句的嵌套了。 我们首先来看一下它的基础语法:
if 条件1:
满足条件1做的事情1
满足条件1做的事情2
if 条件2:
满足条件2做的事情1
满足条件2做的事情2
如上图,第二个if,属于第一个if内,只有第一个if满足条件,才会执行第二个if。
嵌套的关键点在于空格缩进。通过空格缩进,来决定语句之间的层次关系。我们来看一看简单的嵌套代码,还是我们的黑马动物园的案例:
我们首先判断一下身高,如果大于120表示不可以免费的,但是呢我们在里面又写了个if,如果你的身高超出了不能免费,那么我再判断一下,你VIP级别是否大于3 ,那么如果大于3的话,哪怕你的身高不满足,我同样可以让你玩,但如果你的VIP级别不满足,那么你还是需要补票的。如果你的身高小于120,那么直接就可以免费游玩了。
所以说我们这个简单的嵌套代码呢,它是有两个层次的,当第一个条件满足之后才会去执行第二个条件,那就是说如果你的身高小于120,你根本就不需要看VIP级别直接免费,但当你身高超过的时候,我们就看看你的VIP级别,是否满足条件了,这就是两层也就是多层次的嵌套了。
print("欢迎来到黑马动物园。")
if int(input("输入你的身高:")) >120:
print("你的身高大于120cm,不可以免费")
print("不过如果你的vip等级高于3,可以免费游玩")
if int(input("请告诉我你的vip级别:"))>3:
print("恭喜你,你的vip级别大于3,可以免费游玩。")
else:
print("Sorry,你需要补票,10元。")
else:
print("欢迎你小朋友,可以免费游玩。")
如上,判断有2层:
-
当外层if满足条件(图中编号1)时,才会执行内层if判断(图中编号2)
-
当外层if(编号1)不满足,直接执行外层esle
自由组合嵌套,需求如下:公司要发礼物,条件是:
-
必须是大于等于18岁小于30岁的成年人
-
同时入职时间需满足大于两年,或者级别大于3才可领取
-
• if elif else 可以自由组合
• 满足缩进的要求即可
if age >= 18:
print("成年人符合,继续判断")
if age < 30:
print("年龄达标继续判断")
if year > 2:
print("小于30岁的成年人且入职超过2年,满足条件,可以领取")
else:
print("Sorry,年龄符合,但入职时间不足")
elif level >3:
print("级别大于3的成年人可直接领取礼物")
else:
print("您的年龄过大或级别小于等于3,不可领取")
else:
print("Sorry,未成年不可领取礼物")
总结:
1.嵌套判断语句可以用于多条件、多层次的逻辑判断
2.嵌套判断语句可以根据需求,自由组合if elif else来构建多层次判断
3.嵌套判断语句,一定要注意空格缩进,Python通过空格缩进来决定层次关系
实战案例
学习目标
-
通过逻辑判断语句,完成猜数字的案例代码编写
案例需求:
定义一个数字(1~10,随机产生),通过3次判断来猜出来数字
案例要求:
import random
num = random.randint(1,10)
print(num)
-
数字随机产生,范围1-10
-
有3次机会猜测数字,通过3层嵌套判断实现
-
每次猜不中,会提示大了或小了
提示,通过如下代码,可以定义一个变量num,变量内存储随机数字。
"""
演示判断语句的实战案例:终极猜数字
"""
# 1. 构建一个随机的数字变量
import random
num = random.randint(1, 10)
guess_num = int(input("输入你要猜测的数字:"))
# 2. 通过if判断语句进行数字的猜测
if guess_num == num:
print("恭喜,第一次就猜中了")
else:
if guess_num > num:
print("你猜测的数字大了")
else:
print("你猜测的数字小了")
guess_num = int(input("再次输入你要猜测的数字:"))
if guess_num == num:
print("恭喜,第二次猜中了")
else:
if guess_num > num:
print("你猜测的数字大了")
else:
print("你猜测的数字小了")
guess_num = int(input("第三次输入你要猜测的数字:"))
if guess_num == num:
print("第三次猜中了")
else:
print("三次机会用完了,没有猜中。")