今日内容
- 可变不可变类型
- 逻辑运算符
- 身份运算符
- 什么是条件,什么可以当作条件
- 流程控制
正课
可变不可变类型
将数据类型以可变不可变进行区分
- 可变类型:值改变,id不变,证明改的是原值
- 不可变类型:值改变,id也变了,证明与原来的值解绑,产生了新的值,证明原值是不可以修改的
不可变类型
- 整型,浮点型(整型,浮点型是一个不可分割的整体,所有操作都是产生了新的值,于原值没有关系)
- 字符串
- 元组
- 在容器中进行修改内存的地址,该容器本身并没有挪动,不代表其是不可变
可变类型
- 列表类型
- 字符串类型
关于字典补充
- 定义,{}内勇斗好分隔开多个key:value,其中value可以是任意类型,但是key必须是不可变类型,理论上整型和浮点型也可也作key
可变类型:不可哈希;不可变类型:可哈希
逻辑运算
and,or,not
用来连接多个条件,进行运算得到结果
什么是条件?
-
显示布尔值
- 比较运算符结果
- 直接的布尔值 True / False
-
隐式布尔值
所有的值都可以当成条件去用,只有 0 none 空为假,其他都为真
- 0,运算结果为数字;其他数字都为真
'',[],{}
空列表空字典空字符串- none 什么也没有
not,and,or
-
not:将紧跟其后的那个条件结果取反,于其后的条件是一个不可分割的整体
-
and:逻辑与,用来连接左右两个条件,必须两个条件同时为真,最终结果才为真
偷懒原则
-
and运算符在计算到假条件时马上返回假,不计算后面的条件
-
and返回计算最后一次的条件的值
True and 10 # 返回 10
全真为真,一假即假
-
-
or:逻辑或,连接两个条件,两个条件但凡有一个为true,就返回True
- 只要计算到左边条件为真,则不会计算右边的值
- 一真即真,全假为假
优先级
-
如果单独一串and,or连接,则从左到右依次运算即可
-
在and,or,not同时存在的时候,存在优先级:
- not > and > or
把 not 跟后面紧跟的条件连在一起,再把and 两边的条件用括号括起来,再判断or
实际写程序用括号
成员运算符 in
in
- str:判断一个子字符串是否存在一个大字符串中
- list:判断一个元素是否在列表中
- dic:判断一个key是否在字典中
- 元组 / 集合
not in 是否不在其中
身份运算符 is
判断两个值的id 是否相等
if 判断
为什么:为了让计算机具备人的判断条件,依据条件去做不同的事的功能
怎么用:语法
if 条件1:
子代码1
elif 条件2:
子代码块2
else:
子代码块3
子代码块:缩进四个空格,代表同一级别的代码,称之为代码块,同一级别的代码块自上而下依次执行
if 判断可以跟多段elif,但是只运行其中一段,所有条件都不符合,则允许else
流程控制:改变计算机程序运行的顺序
if 判断可以嵌套
牛逼
python 3 可以不用and 连接多个比较运算
if 16 < age <20: