下面是一个条件判断的基础结构:
if 条件语句:
print('条件为 真 运行这里')
else:
print('条件为 假 运行这里')
第一行,if 后接条件语句 并以 : 号结尾
第二行,进行缩进(一般缩进4字符,Pycharm会自动帮忙缩进,且可在右下角控制缩进字符。)并写入当第一行编写条件满足的情况下(条件语句为True)需执行的语句。
第三行,else: 表示当以上条件不满足时
第四行,进行缩进(整个代码中缩进字符数需保持一致),并编写当条件不满足时执行的语句。
那么,条件语句这里就涉及到1.1中的布尔类型(bool)了。
布尔类型与比较运算介绍:
比较运算符有以下几种:
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
比较运算的结果是一个bool值(True或False)
举例:
print(10 > 100) 结果时 False
print(10 < 100) 结果时 True
除了比较运算的结果会产生布尔值,python中的某些函数返回的也是布尔值。
另外在条件判断中,None(空)值、空字符串、空列表等为False,其他值均为True
例如:通过bool()进行类型转换。将值转换为布尔类型。
结合到条件判断里面就是:
a = 100
b = 50
if a < b:
print('a是小于b的')
else:
print('a不小于b')
我们改一下 a 的值 再看看?
也就是说,当 条件语句结果为 真 时,会执行 if 下的语句,esle后的语句不会执行;当条件语句为 假 时,if 下的语句不执行,仅执行esle后的。
再看一个例子:
a = 10
b = 50
if a < b:
c = b - a # 条件为 真 执行
else:
c = b * a # 条件为 假 执行
print(c)
这个例子中,条件满足时,我们定义一个名为 c 的变量,将 b - a 的值赋值给他;条件不满足时 将 b * a 的结果 赋值给它;
此时的条件语句结果,为真 第九行 判断语句外的print()函数打印的 c值 为 40(b-a的结果)
我们改变以下a:
此时的条件语句结果为假,对应 print()的结果就是3500(b * a的结果)
这种赋值的方式有一种简单的写法(三元运算符)。
a = 70
b = 50
c = b - a if a < b else b * a
print(c)
结果和上方的写法是相同的。
if 与 else 之间的 是条件语句,如果这个条件为真,将 if 前的值赋值给变量,如果条件为假,则将else后的值赋值给变量。
条件判断的关键字:
and 关键字:
if 条件语句1 and 条件语句2:
print('条件1 与 条件2 均为真')
else:
print('条件语句为假')
第一行,由 条件语句1 和 条件语句2 中间以 and 关键字连接。共同组成了这个 if 的条件语句。and 关键字,需要在 条件语句1 和 条件语句2 同时为真时,结果为真。否则为假。
举例1:
举例2:
举例3:
a = 70
b = 50
if a < 100 and b < 100:
print('a b 均小于100')
else:
print('a b 不满足均小于100的条件')
修改 a 值
or 关键字
区别于 and(前后条件语句均为真,返回真,否则假),or 关键字仅需要 前或后某一项为真,则返回真,前或后均为假,才返回假。
举例:
修改 b 值 使 or 前后均为假:
is,not 关键字
is:是
not:非
in:在.....之内
举例1(不使用关键字):判断一个值是否非空
a = None
if a:
print('a非空')
else:
print('a为None或空字符串、空列表') # 上面有讲到
举例2(单用 not 反转布尔值):判断一个值是否非空
a = None
if not a: # 此时的 a 的布尔值为 False , not False(非假)则为True(真)
print('a为None或空字符串、空列表')
else:
print('a非空')
举例3(单用 is ):判断一个值是否非None
a = None
if a is None: # 如果 a 是 None(空)值
print('a是None(空)值')
else:
print('a非空')
举例4(is,not 连用):判断一个值是否非None
(注意下,和上一个只有细微的差别)
a = None
if a is not None: # 如果 a 不是 None(空)值
print('a 不是None(空)值')
else:
print('a 为空')
in 关键字
举例1(单用 in ):判断一个字符串是否在另一个字符串中
a = '123456789abcdefg'
b = '234'
if b in a: # 如果 字符串 b 在 a 中。
print('字符串 b 在 a 中')
else:
print('字符串 a 不包含 b')
举例2(单用 in ):判断一个值是否在一个列表中。
a = [123, '234', 'test', None, False]
b = '234'
if b in a: # 如果 b 在 列表 a 中
print('b 在 列表 a 中')
else:
print('b 不在 列表 a 中')
举例3(单用 in ):判断一个值是否在一个字典的键中。
a = {
'name': '小明',
'age': 18,
'family': ['明爸', '明妈'],
22: '22'
}
b = 'name'
if b in a.keys(): # 如果 b 在 字典 a 的 键 中
# 此处的 .keys() 可以省略,.keys()用于获取字典的所有键。
# .keys() 返回的是一个类似 list 的值。
print('b 在 字典 a 的 键 中')
else:
print('b 不在 字典 a 的 键 中')
举例4( not in 连用 表示 不在...之内):判断一个字符串是否不在另一个字符串中
a = '123456789abcdefg'
b = '234'
if b not in a: # 如果 字符串 b 不在 a 中。
print('字符串 b 不在 a 中')
else:
print('字符串 a 包含 b')
多重条件判断:
当 if 后的 条件不成立时,可 使用 elif (else if 的简写,两种都可以)另写一个“同级”条件进行判断,从而减少 if 嵌套。
a = 80
if a >= 100: # 条件1 如果 a 大于等于 100
print('a >= 100')
elif a >= 50: # 条件2 当 条件1 为假时执行 如果 a 大于等于 50
print('100 > a >= 50')
elif a >= 0: # 条件3 当 条件1,2 为假时执行 如果 a 大于等于 0
print('50 > a >= 0')
else: # 上述所有条件均为假时执行
print('a < 0')
本章结束