6、可变不可变类型和运算符以及流程控制之if判断
一、可变不可变类型
1.1、什么是可变不可变类型
可变类型:在id不可变的情况下,变量值可以改变,说明原值是可以改变的。例如列表、字典。
不可变类型:变量值变了,id也变了,证明是产生了新的值,没有改变原值。例如整型、浮点型、字符串。
1.2、验证
1.2.1、整型int是不可变类型
a=1
print(id(a))
a=2
print(id(a))
1.2.2、浮点型float是不可变类型
a=1.3
print(id(a))
a=1.4
print(id(a))
1.2.3、字符串是不可变类型
a='123'
print(id(a))
a='345'
print(id(a))
总结:整型int、浮点型float、字符串str都被设计成一个整体,不可变类型。
1.2.4、列表list是可变类型
a=['1','2','3']
print(id(a))
a[0]='4'
print(id(a))
1.2.5、字典dict是可变类型
a={'b':1,'c':2}
print(id(a))
a['b']=3
print(id(a))
总结:列表list和字典dict是可变类型,字典的key必须是不可变类型通常为字符串,value可以为任意类型。
1.2.6、布尔类型为不可变类型
二、条件
2.1、什么是条件
条件是两个事物发生联系时必须发生的性质。
2.2、为什么要有条件
希望计算机能够相认一样通过条件,关联出结果。
2.3、怎么使用条件
计算机中通常使用比较运算符来关联事物。例如:age=18。
三、运算符
3.1、逻辑运算
逻辑运算符用于连接多个条件,并进行判断,会返回Ture或者False
3.1.1、not
逻辑非,是将下一个条件的结果进行取反,与紧跟在后面的那个条件是不可分割的。
3.1.2、and
逻辑与,是将左右两个条件进行连接,两个条件都是Ture,结果才是Ture。
3.1.3、or
逻辑或,试讲左右两个条件进行连接,连个条件只要有一个是真的,结果就是真的。
3.1.4、优先级
在单独一种运算符时,从做到右依次运算;
在不同运算符号时,按照not>and>or的顺序进行运算。
3.1.5、偷懒原则:and的左右两边只要有一个为False,另一个不用判断,输出结果直接为false,如果两个都是Ture,输出结果是第二个数值。
or的两边只要有一个Ture,另一个结果就不用判断,输出结果为第一个数值,两个结果都是Flase,输出False。
3.1.6、举例
res=(3>4 and (not 4>3)) or (1==3 and 'x' == 'x') or 3 >3
Flase False False True False
3.2、成员运算符 in
print( 'a' in 'hallo world' )
print('a' in {'a':1,'b':2})
判断一个字符是否在一个字符串中,也可以判断key是否在字典中。也可以用not in 代表不存在。
3.3、身份运算符
is 用来判断id是否相等。
四、流程控制之if判断
流程控制就是控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前使用的从上到下依次运行就是顺序结构)、分支结构(使用if进行判断)、以及循环结构(使用while或者for)
4.1、什么是分支结构
根据条件的不同走向去执行不同的选择。
4.2、为什么要有分支结构
让计算机能够根据条件,去执行设定不同的结果,像人一样去判断。
4.3、怎么使用if分支结构
if 条件一:
代码一
代码二
。。。
elif 条件一:
代码一
代码二
。。。
else :
代码一
代码二
4.4、示范
如果:成绩>=90,那么:优秀
如果:成绩>=80且<90,那么:良好
如果:成绩>=70且<80,那么:普通
如果:成绩>=60且<70,那么:及格
其他情况,不合格。
score =input('请输入你的成绩:')
score=int(score)
if score>=90:
print('优秀')
elif score>=80:
print('良好')
elif score>=70:
print('普通')
elif score >=60:
print('及格')
else:
print('不及格')