1:可变、不可变类型
-
可变类型:值改变,id不变,原值可以被修改
可变类型包括:list,dict
l = [111,222,333] print(id(l)) l[0] = 444 print(l) print(id(l)) # l中的第一个内容被修改,但两个结果id是相同的
dic = {'k1':111,'k2':222}
print(id(dic))
dic['k1'] = 3333333333
print(dic)
print(id(dic)) # dic中的'k1'被修改,但是两个结果的id是相同的
# 补充
# 定义:{}内用逗号分隔开多key:value,
# 其中value可以是任意类型
# 但是key必须是不可变类型
-
不可变类型:值改变,id也变了,原值不可被修改
int、float、str是不可变类型
x=10 print(id(x)) x=11 print(id(x)) x=3.1 print(id(x)) x=3.2 print(id(x)) x="abc" print(id(x)) x='gggg' print(id(x)) # 三个类型的两个结果值改变了并且两个结果的id也不相同 结论:int、float、str都被设计成了不可分割的整体,不能够被改变
2、什么是条件?什么可以当做条件?为何要要用条件?
- 显式布尔值:比较运算符、True、False
- 隐式布尔值:所有数据类型,其中0、None、空为假
3:逻辑运算符:用来
-
not、and、or的基本使用
# not:把紧跟其后的那个条件结果取反 print(not 16 > 13) print(not True) print(not False) print(not 10) print(not 0) print(not None) print(not '') 结果: False False True False True True True False # and:逻辑与,and用来链接左右两个条件,两个条件同时为True,最终结果才为真 print(True and 10 > 3) print(True and 10 > 3 and 10 and 0) print( 10 > 3 and 10 and 0 and 1 > 3 and 4 == 4 and 3 != 3) 结果: True 0 0 # 运算中条件全部为真则为真,一个条件为假则为假 # or:逻辑或,or用来链接左右两个条件,两个条件但凡有一个为True,最终结果就为True,个条件都为False的情况下,最终结果才为False print(3 > 2 or 0) print(3 > 4 or False or 3 != 2 or 3 > 2 or True) 结果: True True
-
区分优先级:not > and > or
# 如果单独就只是一串and链接,或者说单独就只是一串or链接,按照从左到右的顺讯依次运算即可(偷懒原则) # 如果是混用,则需要考虑优先级了 res=3>4 and not 4>3 or 1==3 and 'x' == 'x' or 3 >3 print(res) res=(3>4 and (not 4>3)) or (1==3 and 'x' == 'x') or 3 >3 print(res) 结果: False False
4、成员运算符
-
in:某一个对象包含于另一个对象中
print("egon" in "hello egon") # 判断一个字符串是否存在于一个大字符串中 print("e" in "hello egon") # 判断一个字符串是否存在于一个大字符串中 print(11 in [111,222,33]) # 判断元素是否存在于列表 结果: True True False #判断key是否存在于字典 print(111 in {"k1":111,'k2':222}) print("k1" in {"k1":111,'k2':222}) 结果: False True #not in print("egon" not in "hello egon") # 推荐使用 print(not "egon" in "hello egon") # 逻辑同上,但语义不明确,不推荐 结果: True True
5、身份运算符
-
is:判断两个值的id是否相等
x = 10 y = 11 l = [x,5] print(x is y) print(x is l[0]) 结果: False True
6、流程控制之if判断
-
什么是流程控制
流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(用到if判断)、循环结构(用到while与for)。
-
分支结构
1.什么是分支结构:
分支结构就是根据条件判断的真假去执行不同分支对应的子代码
2.为什么用分支结构?
人类某些时候需要根据条件来决定做什么事情,比如:如果今天下雨,就带伞
所以程序中必须有相应的机制来控制计算机具备人的这种判断能力
-
如何用分支结构
1.使用if语句来实现
if 条件1: # 如果条件1的结果为True,就依次执行:代码1、代码2,...... 代码1 代码2 ...... elif 条件2: # 如果条件2的结果为True,就依次执行:代码3、代码4,...... 代码3 代码4 ...... elif 条件3: # 如果条件3的结果为True,就依次执行:代码5、代码6,...... 代码5 代码6 ...... else: # 其它情况,就依次执行:代码7、代码8,...... 代码7 代码8 ...... # 注意: # 1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行 # 2、条件可以是任意表达式,但执行结果必须为布尔类型 # 在if判断中所有的数据类型也都会自动转换成布尔类型 # 2.1、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False # 2.2、其余均为True
2.if应用
# 如果我大于22岁我就可以结婚 age = 25 if age > 22: print("我可以结婚了") # 如果:成绩>=90,那么:优秀 # 如果成绩>=80且<90,那么:良好 # 如果成绩>=70且<80,那么:普通 # 其他情况:很差 score=input('>>: ') score=int(score) if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 70: print('普通') else: print('很差')
# if嵌套 # 如果我大于22岁我就可以结婚,如果结婚了,那我很幸福,没结婚我就不幸福 age = 25 is_marry = True if age > 22: if is_marry: print("我很幸福") else: print("我不幸福")