目录
1、布尔值(补充)
2、可变、不变类型
3、赋值运算符:(补充)
4,、身份运算is与==
5、if 判断
一、布尔值(补充)
布尔类型、只有两个值True和Fales
1,显示的布尔值
直接定义布尔类型的变量值
tag = True
print(tag,type(tag))
通常是通过比较运算得到的布尔值的
print(10>3)
print(“egon” == “egon”)
隐式的布尔值
隐式的布尔值为False的数据类型有:0, None,空(空字符串、空类型、空布尔值)
111111 and 222222
布尔值用于条件
print(bool(0))
print(bool(None))
print(bool(""))
print(bool("[]"))
1 and 2 or not 3
算到那个输出就是谁
print(1 or 3)
print(1 and 3)
print(0 and 2 and 1)
print(0 and 3 or 1 or 4)
print(0 or False and 1)
二、可变、不变类型
1,可变类型 列表 字典
在值改变的情况下,id号不变,也就是说内存地址不变,证明就是在改变原来内存空间中的值,既原值可变
不可变类型
在值改变的情况下,id号也跟着变了,也就是说内存地址变了,证明不是在改原来内存空间中的值,而是申请了新的内存空间,及产生了新的值,既原值不可变。
例子:
x=10.3
print(id(x))
x=11.4
print(id(x))
x=“abc”
print(id(x))
x=“aBc”
print(id(x))
l1=[111,“aaa”] #列表改值不可变
print(id(l1))
l1[0]=222
print(id(l1))
dic={‘k1’:111,‘k2’:222}
print(id(dic))
dic[‘k1’] = “abc”
print(dic)
print(id(dic))
字典的value可以是任意类型,但是字典的key必须是不可变类型(字符串类型)
dic={1111111:“abc”,“k2”:“def”,3.1:‘aaa’}
print(dic[1111111])
下面写法推荐使用列表替代
dic={0:‘geon’,1:“egon1”,2:“egon3”}
print(dic[0])
print(dic[1])
print(dic[-1])
了解:不可哈希类型就是可变类型,可哈希类型就是不可变类型
dic={[1,2,3]:“abc”}
三、赋值运算符:(补充)
1,增量赋值
age=8
age += 1
print(age
2,链式赋值
x=10
y=x
z=y
z=y=x=10
print(x,y,z)
print(id(x),id(y),id(z))
3、交叉赋值
m = 111
n = 222
temp=m
m=n
n=temp
一条解决上门代码
m, n = n,m
print(m,n)
4、解压赋值
salaries = [1.1,2.2,3.3,4.4,5.5]
mon0 = salaries[0]
mon1 = salaries[1]
…
mon0, mon1,… = salaries
print(mon0)
print(mon1)
变量名的个数必须与包含的值得个数相同,多一个不行,少一个也不行
mon0, mon1, mon2, *x = salaries
print(x)
*_, x , y, z = salaries
print(x)
print(y)
print(z)
x, *_, z = salaries
print(x)
print(z)
对于字典来说解压赋值取出来的是字典的key
dic = {“k1” : 111,“k2”: 222}
x, y = dic
print(x,y)
了解
a,b,c,d,e=“hello”
print(a,type(a))
print(b)
print©
print(d)
print(e)
四、身份运算is与==
身份运算is与==
==判断的是值是否相等
x=[‘a’,‘b’]
y=[‘a’,‘b’]
print(x == y)
is判断的是id是否相等
print(id(x))
print(id(y))
print(x is y)
分析:
is判断的结果为True,即二者的id一样,即二者内存地址一样,即二者就是一个东西
如果==判断的结果为True,即二者的值一样,那么二者的内存地址可能不一样
x=None
y=None
print(x == None)
print(x is y)
print((10 > 3) is True)
print((10 > 3) == True)
结论:如果要变量一个变量是否等于None、True、False,推荐使用is
x = 10
print(x == 10)
print(x is 10) 不要这么用,能用是因为小整数池优化
五、if判断
if判断
判断 条件1 并且 条件2:
做什么事
否则:
做什么事
2,为何要有if判断
为了控制计算机能够像人一样去完成判断的过程
3、如何用If判断
“”"
print(‘start…’)
if True and 10 > 8:…
print(“条件成立1”)
print(“条件成立2”)
print(“条件成立3”)
else:…
print(‘end…’)
if判断完整的语法
“”"
if 条件1:
子代码块1
elif 条件2:
子代码块2
elif 条件3
子代码块3
…
else:
子代码块
“”"
2、只有if
inp_name=input('你的名字: ')
if inp_name == “egon”:
print(‘输入正确’)
print('其他代码')
3、if+elif
inp_name=input('你的名字: ')
if inp_name == “egon”:
print(‘您的身份是超级vip’)
elif inp_name == “张三”:
print(‘您的身份是钻石vip’)
elif inp_name == “李四”:
print(‘您的身份是铂金vip’)
print(其他代码)
4、
inp_name = input('你的用户名: ')
inp_pwd = input('你的密码: ')
if inp_name == “egon” and inp_pwd == “123”:
print(‘登录成功’)
else:
print(“刚刚输入地用户名或密码错误”)
print('其他代码')
5、if+elif+else
作业:
inp_score = input('请输入您的成绩: ')
inp_score = int(inp_score) #整数端
if inp_score >= 90:
print(‘优秀’)
elif inp_score >= 80 and inp_score < 90:
print(‘良好’)
elif inp_score >= 70 and inp_score < 80:
print(“普通”)
else:
print(“很差”)
补充
age >= 18 and age <= 20
print(20 >= age >=18)
print(18 <= age <= 28)
if判断嵌套if
if 10>3:
if 1 == 1:
print(‘Ok1’)
print(‘ok2’)
print(‘ok3’)
print(‘OK4’)
总结:
今天一共学习了六项新知识:布尔值、可变、不变类型、赋值运算符、身份运算is与==、if 判断
布尔值原本知道定义只有两个值True和False,并且是通过比较得到的。今天通过学习新学到布尔值分为:显式布尔值和隐式布尔值
显式布尔值:是通过运算直接得到的布尔值
隐式布尔值:有 0、None、空而空又分空字符串、空类型、空布尔值
可变、不变类型:
可变类型:在原值变动的情况下,id号不变,也就是外面的壳子不变,内容可变
不变类型:
在值改变的情况下,id号也随之改变了,就等于申请了新的内存空间,即原值不可变
赋值运算符:
在原来的基本运算符上面增加了:增量运算符、链式运算符、交叉运算符、解压运算符
增量运算符:通过简洁代码例如age += 1就等于age = age + 1
链式运算符:一个数据,多title共有
交叉运算符:用一条横等式m , n= n , m进行数据交换
解压运算符:例如众多薪资中可以通过*_来解出需要的数据
身份运算is与==:
==判定的是值是否相同
is判定的是id是否相同,如果变量与None\True\False相同就用is
print(x is 10) 不要这么用,能用是因为小整数池优化
if 判断:判断 条件1 并且 条件2:做什么事 否则:做什么事
“”"
if 条件1:
子代码块1
elif 条件2:
子代码块2
elif 条件3
子代码块3
…
else:
子代码块
“”"