1.判断语句介绍
判断。就是将已有信息与根据所给出的条件进行对比,如果符合条件则是是,不符合则是否,生活中也有很多判断场景,比如:
火车站安检:
上网吧:
密码判断:
2. if判断语句基本格式介绍
if语句是用来进行判断的,其使用格式如下:
if 要判断的条件: 条件成立时,要做的事情
例1:
age = 30 # 给要判断的变量赋予一个值
print("------if判断开始------")
if age >= 18: # 判断age变量所表示的数值是否大于等于18,也就是是否成年
print("我已经成年了")
print("------if判断结束------")
输出结果(成年):
------if判断开始------
我已经成年了
------if判断结束------
输出结果(未成年):
------if判断开始------
------if判断结束------
这个示例首先为age这个函数赋一个30的值,然后用if判断age是否符合条件,是的话输出“我已经成年了”,否的话没有输出,最后无论判断是与否,都会输出“------if判断结束------”,因为“print("------if判断结束------")”并不在if的缩进内,并不会被if判断结果影响。
注意:因为Python是极度简化的,象C++的判断正确执行代码块会用英文括号扩起,而Python则将其优化掉了,所以Python中需要严格执行缩进以让系统分辨出你的那些是判断语句中的,那些是接下来继续运行的。
例2:
password = 123456 # 定义变量password(密码)
user_input = eval(input("请输入密码:")) # 获取控制台(用户)输入,并赋给变量user_input
if user_input == password: # 判断用户输入是否等于定义的变量密码password
print("用户输入密码正确!")
else:
print("密码错误!")
print("if判断结束")
输出结果(正确):
请输入密码:123456
用户输入密码正确!
if判断结束
输出结果(错误):
请输入密码:123
密码错误!
if判断结束
输出结果(报错):
请输入密码:A
Traceback (most recent call last):
File "D:\PyCharm Community Edition 2023.3.3\示例.py", line 2, in <module>
user_input = eval(input("请输入密码:")) # 获取控制台(用户)输入,并赋给变量user_input
^^^^^^^^^^^^^^^^^^^^^
File "<string>", line 1, in <module>
NameError: name 'A' is not defined
分析原因:因为==(双等于号)不只是比较等号两边的数值是否相等,还比较两者数值类型,input函数不用其他方法进行结果类型转换t默认类型是str字符串类型,而password变量的值是int整型,会直接被判否,所以用eval进行类型转换,str转int(直接用int()转换也行,但eval可以顺带将运行式(加减乘除求余等)算出并转换)。但我输入的值:A是一个不能转换为整型的字符串,所以会报错。
错误信息直译:名称错误:未定义名称“A”
3.if-else的使用
刚刚那串代码,涉及到了一个新的内容:else(翻译:其他的),格式如下:
if 条件: 满足条件时要做的事情1 满足条件时要做的事情2 满足条件时要做的事情3 ...(省略)... else: 不满足条件时要做的事情1 不满足条件时要做的事情2 不满足条件时要做的事情3 ...(省略)...
直接上示例,例1:
chePiano = 1 # 用1代表有车票,0代表没有车票
if chePiano == 1: # 判断
print("有车票,可以上火车")
print("终于可以见到Ta了,美滋滋~~~")
else:
print("没有车票,不能上车")
print("亲爱的,那就下次见了")
输出结果(有车票):
有车票,可以上火车
终于可以见到Ta了,美滋滋~~~
输出结果(没有车票):
没有车票,不能上车
亲爱的,那就下次见了
这个示例将1视为有车票,将其他情况视为没有车票。
4.if-elif-else的使用
elif(翻译:否则如果)很简单,就是判断后再次判断,格式:
if 条件1: 符合条件1需要执行的代码 ...... elif 条件2: 不符合条件1但符合条件2的情况下需要执行的代码 ...... elif 条件3: 即不符合条件1也符合条件2但符合条件3的情况下需要执行的代码 ...... ...... else: 即不符合所有条件的情况下需要执行的代码 ......
解释:
当xxx1满足时,执行事情1,然后整个if结束
当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束
当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if结束
示例1:
score = eval(input("请输入考试成绩:")) # 获取控制台输入并将其赋值给score变量
if score == 100: # 判断
print('本次考试,等级为A+,即为满分')
elif score >= 90 and score < 100:
print('本次考试,等级为A,即为优秀')
elif score >= 80 and score < 90:
print('本次考试,等级为B,即为良好')
elif score >= 70 and score < 80:
print('本次考试,等级为C,即为一般')
elif score >= 60 and score < 70:
print('本次考试,等级为D,即为合格')
elif score >= 0 and score < 60:
print('本次考试,等级为E,即为不合格')
else:
print('输入的成绩不正确!')
输出结果(A+):
请输入考试成绩:100
本次考试,等级为A+,即为满分
输出结果(A):
请输入考试成绩:99
本次考试,等级为A,即为优秀
输出结果(B):
请输入考试成绩:89.5
本次考试,等级为B,即为良好
输出结果(C):
请输入考试成绩:70
本次考试,等级为C,即为一般
输出结果(D):
请输入考试成绩:60
本次考试,等级为D,即为合格
输出结果(E):
请输入考试成绩:59.5
本次考试,等级为E,即为不合格
输出结果(乱输入):
请输入考试成绩:-10
输入的成绩不正确!
提示:判断中,
elif score >= 90 and score < 100:
print('本次考试,等级为A,即为优秀')
像这样的判断代码有很多,意思是判断成绩是不是大于等于90和小于100,其实还可以简化为链式比较,就像这样:
elif 90 <= score < 100:
print('本次考试,等级为A,即为优秀')
这样改成链式比较与之前的代码功能上没有任何区别,只是看着顺眼一点(本人觉得没区别)。
5.if嵌套
接下来就是一个和elif功能差不多(都是再次进行判断)的方法就是嵌套,一种很常见的方法,简单来说,就是将一个if判断嵌套在另一个if判断里,以达到再次判断的效果。
格式示例:
if 条件1: 满足条件1 做的事情1 满足条件1 做的事情2 if 条件2: 满足条件2 做的事情1 满足条件2 做的事情2
附带说明:
外层的if判断,可以更改成if-else判断
内层的if判断,一样的也可以更改成if-else判断
根据实际的开发需求,对其进行选择
示例1:
cheapish = 1 # 用1代表有车票,0代表没有车票
dao_length = 9 # 刀子的长度,单位为cm
if cheapish == 1:
print("有车票,可以进站")
if dao_length < 10:
print("通过安检")
print("终于可以见到Ta了,美滋滋~~~")
else:
print("没有通过安检")
print("刀子的长度超过规定,等待警察处理...")
else:
print("没有车票,不能进站")
print("亲爱的,那就下次见了")
因为有两个if判断,但是是嵌套着的,所以结果有三个,分别是有车票,刀子长度小于10:
有车票,可以进站
通过安检
终于可以见到Ta了,美滋滋~~~
有车票,刀子长度大于10:
有车票,可以进站
没有通过安检
刀子的长度超过规定,等待警察处理...
没有车票(因为没有车票就不会进行下一轮的if判断,便不会有两种结果):
没有车票,不能进站
亲爱的,那就下次见了
6.综合学习——猜拳游戏
需求:
1.从控制台输⼊要出的拳 —— ⽯头(1)/剪⼑(2)/布(3)
2.电脑随机出拳 —— 先假定电脑只会出⽯头,完成整体代码功能
3.⽐较胜负
代码:
player = int(input('请输入:剪刀(1) 石头(2) 布(3):'))
computer = 2 # 固定电脑只能出石头,将电脑computer变量设为2石头
if ((player == 1) and (computer == 3)) or ((player == 2) and (computer == 1)) or ((player == 3) and (computer == 2)):
# 判断,因为剪刀石头布只有三种可能,一种玩家赢,一种平局,还有一种电脑赢。先写好玩家胜利的所有可能,再判断是否一样,就是平局。最后都是算作电脑赢
print('获胜,哈哈,你太厉害了')
elif player == computer:
print('平局,要不再来一局')
else:
print('输了,不要走,洗洗手接着来,决战到天亮')
这样便可以简单的完成,但电脑只会出石头,太过单一。所以,我们便要借用别人做好的库,random来帮我们生成随机数。(以后再细说库)
代码:
import random # 导入random库,只有导入才能使用
player = input('请输入:剪刀(0) 石头(1) 布(2):')
player = int(player)
# 产生随机整数:1、2、3 中的某一个
computer = random.randint(1, 3)
if ((player == 0) and (computer == 2)) or ((player == 1) and (computer == 0)) or ((player == 2) and (computer == 1)):
# 判断,因为剪刀石头布只有三种可能,一种玩家赢,一种平局,还有一种电脑赢。先写好玩家胜利的所有可能,再判断是否一样,就是平局。最后都是算作电脑赢
print('获胜,哈哈,你太厉害了')
elif player == computer:
print('平局,要不再来一局')
else:
print('输了,不要走,洗洗手接着来,决战到天亮')