什么是条件控制语句?
写代码的时候需要对一些场景进行判断,根据判定结果去做对应的事情。条件控制语句就是通过一条或多条语句的执行结果(True或者False)来决定执行后续的代码。
为什么要用条件控制语句?
通过条件控制,可以帮助你的代码去判定应该做什么。让对的代码做对的事情,达到自己想要的目的。通过判定,可让目标更加明确,减少不必要的错误。
怎么使用条件判断?
条件判断的流程简单来说可以看下图
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
先来看看哪一句是真的,怎么判断?
真假判断1
# and or not 用这3个来判断和、或、非
>>> a = 0
>>> b = 1
>>> c = 2
# and
>>> b and c # 判断and两端是不是都是真,都是真的话返回最后一个真的值,否则返回第一个假的值。
2
>>> c and b # 这里b和c 都是非0非空,所以都是真的,返回的就是后面的那个值。
1
>>> a and b # a的值是0,所以为假。在and判断中有假的话会返回第一个假的值。
0
# or
>>> b or c # 判断or两侧有没有真,遇到真的值就返回,不在继续向后判断,否则到最后,返回最后的值。
1
>>> c or b
2
>>> a or b or c # a为假,继续向后判断。所以返回第一个为真的b。
1
# not
>>> not a # not判断条件是否为假,这里a=0,是假的,所以返回True。
True
>>> not b # b不是假的,所以返回False。
False
>>> not c
False
# 大小判断 <>
>>> a < b < c # 0 < 1 < 2,可以看成 a<0 and b
True
>>> a < b and b < c
True
# 等于、不等于判断 ==,!=
>>> a == b
False
>>> a != b
True
>>> a != a
False
>>> c >= b # 大于等于
True
# 快速判定真假
>>> bool(a)
False
>>> bool(b)
True
>>> bool() # 什么都没有,就是空,所以判定是假
False
# 其他一些判断示例
>>> 1 and True
True
>>> 0 and True
0
>>> False and 0
False
>>> False and 1
False
>>> None == True
False
>>> None == False
False
真假判断2
is和==可以来判断两端是否相等,那区别在哪儿呢?
>>> a = 1
>>> b = a
>>> c = 1
>>> a is b
True
>>> a == b
True
>>> a is c
True
>>> a == c
True
# 这样使用,看上去没有区别。
>>> id(a),id(b),id(c) # id()可以查看对象在内存中的标识,这里看到,abc是一样的。
(8791044563344, 8791044563344, 8791044563344)
>>> d = 999
>>> e = d
>>> f = 999
>>> d == e
True
>>> d is e
True
>>> d == f
True
>>> d is f
False
>>> e is f
False
# 这里就出现不一样了!我们来看下id()
>>> id(d),id(e),id(f)
(47379152, 47379152, 47380208) # f的id不一样了!
# == 的判断是比较两端的值,两端相等的话就返回真。
# is 的判断是比较两端的id值,id值相等的话返回真。
# 为什么后面id值会不一样?这跟python的内存管理机制有关,比较复杂这里就不讲了。
# 再从列表来看看
>>> a1 = [1,2,3]
>>> b1 = a1
>>> c1 = a1[:]
>>> a1
[1, 2, 3]
>>> b1
[1, 2, 3]
>>> c1
[1, 2, 3] # 3个列表数值是一样的。
>>> a1 == b1
True
>>> a1 is b1
True
>>> a1 == c1
True
>>> a1 is c1 # 这个判断就不一样了,应该是id值不同了。
False
>>> id(a1),id(b1),id(c1) # 果然c1的id跟ab不一样
(47839176, 47839176, 47852680)
真假判断3
in 和 not in 判断,他们叫成员运算符,用来测试实例中包含了一系列的成员,包括字符串,列表或元组。
# 字符串成员判断
>>> a = 'ab'
>>> b = 'ac'
>>> c = 'abcd'
>>> a in c # 'ab'在字符串'abcd'中
True
>>> b in c # 'ac'不在字符串'abcd'中
False
>>> a = 1
>>> b = 9
>>> c = [1,2,3,4]
# 判断数字成员是否在列表中
>>> a in c
True
>>> b in c
False
>>> b not in c
True
>>> dic = {'a':1,'b':2,'c':3}
>>> 'a' in dic # 判断字典中的key成员是否存在
True
>>> 'd' in dic
False
判断的优先级
前面说过
and是判断两端是不是都是真,都是真的话返回最后一个真的值,否则返回第一个假的值。
or是判断两侧有没有真,遇到真的值就返回,不在继续向后判断,否则到最后,返回最后的值。
当他们同时出现时,谁先谁后呢?来看一下。
>>> a = True
>>> b = False
>>> c = False
>>> a or b and c
True
# 如果按照从左到右的顺序来看,or判断应该返回a的True,在跟后面and判断,应该返回False才对。这里
返回的是True,那看来应该是先去做and判断了。
>>> (a or b) and c # 验证一下,加个()让前面先做,这次从左到右了,返回了False
False
>>> a and b or c # 先and,得出False 再跟c做or,最后返回False。
False
云服务器精选秒杀 - 腾讯云cloud.tencent.com