本章大纲
布尔类型
布尔表达式
布尔操作符
01:布尔说明
python布尔常用变量是 True 和False来表示,注意大小写;
运算符 <>== 等返回的类型就是bool类型;
布尔类型通常在if 和while语句中应用
02:布尔类型(bool)
- 真假 对错
- 只有两种取值
- True (真,对)
- False(假,错)
03:关系运算符(> < == !=)
①数值比较:
print(3!=1) # True
'== 表示值/内容相等
是否同一个对象?-----用id()---is
举例:c = 257 d =257
c is d False
②字符串比较
print('abc' > 'b') 字符串比较:对应位置的字符的ascii值大小 a=97 A=65
③in -----在。。。里面
1、前者是后者的一个元素
2、前者是后者的连续一段
str = 'abcd'
print('a' in str) True
in ---列表
1、前者是后者的一个元素
alist = 【10,20,30,【100,200】】
print(10 in alist)
print(10,20 in alist) False
04:条件组合
①且---and
一假为假,全真为真
第一个条件为真,第二个条件一定执行
print(3>1 and 2==1)
② 或--or
一真为真,全假为假
第一个条件为真,后面条件不执行
def func():
print('我执行了')
print(3>1 or func()) # True
③ not 取反
优先级:not>and>or
not 1 > 2 or 4>3 False
05:引申
python的赋值,深拷贝和浅拷贝的区别
①赋值---指向,引用操作
alist = [10,20,30]
blist = alist
print(id(alist))
print(id(alist))
blist,append(40)
alist=[10,20,30,40]
blist=[10,20,30,40]
②浅拷贝--拷贝的不够彻底
1,可以拷贝出父级列表--这个父级列表跟源数据不是同一个
2,子列表是同一个对象
import copy #模块
alist = [10,20,30,[100,200]]
blist = copy.copy(alist)
blist,append(40)
alist=[10,20,30,[100,200],40]
blist=[10,20,30,[100,200],40]
③深拷贝--很深的拷贝--彻底的拷贝
内外层列表都独立,不是同一个对象
import copy #模块
alist = [10,20,30,[100,200]]
blist = copy.deepcopy(alist)
blist,append(40)
alist=[10,20,30,[100,200]]
blist=[10,20,30,[100,200],40]
06:练习题
1、一个变量a定义如下 a = ['this', 'test', 4.56, ['inner', 'list']] 下面的表达式结果为False的有()
A.'this' in a
B. 'test' in a
C. 't' in a
D.'inner' in a
答案是D
2、下面表达式结果为False的有
A.(2 >1 or 3> 4) and 5> 4
B. 2 > 1 or (3>4 and 5> 4)
C.1> 2 or (3>4 and 5>4 )
D.(1>2 or 3> 4 ) and 5> 4
答案是CD
判断:
1、和算术表达式一样,我们可以用括号,来提升布尔表达式的运算优先级
正确
2、比较(英文)字符串的大小,是根据ASCII码的大小来决定的,ASCII大的认为值是大的
正确
3、if 语句成立后面要执行的代码块,缩进必须是4个空格
错误
4、下面的代码,解释器运行时,如果条件1未True,后面条件2条件3解释器都不会执行做判断
正确
5、下面的两种代码写法,执行效果是相同的
正确
6、下面的代码一,和代码二是等价的
正确