2020-06-04
目录:
一、布尔型
1.1 显式的布尔值
1.2 隐式的布尔值
二、可变、不可变类型
2.1 可变类型:list,dict
2.2 不可变类型:int、float、str
三、赋值运算符补充
3.1 增量赋值
3.2 链式赋值
3.3 交叉赋值
3.4 解压赋值
四、身份运算
五、流程控制之if判断
5.1 什么是if判断
5.2 为什么要用if判断
5.3 怎么用if判断
5.3.1 只有一个if
5.3.2 if + elif
5.3.3 if + else
5.3.4 if+elif+else
5.3.5 if判断嵌套使用
一、布尔型
1.1 显式的布尔值
① 直接定义布尔类型的变量值tag=True
② 通过比较运算得到布尔值
10 == 10
3 > 2
1.2 隐式的布尔值
隐式的布尔值为False的数据类型有:0,None,空
除了隐式的三个数据外,其余所有的数据类型都为真
二、可变、不可变类型
2.1 可变类型: list,dic
在值改变的情况下,id号不变,也就是说内存地址不变,证明就是在改原来内存空间中的值,即原值可变
2.2 不可变类型:int、float、str
在值改变的情况下,id号也跟着变,也就是说内存地址变了,证明不是在改原来内存空间中的值,而是申请了新的内存空间,产生了新的值,即原值不可变
其中,字典中的value可以是任意类型,但是字典的key必须是不可变类型,也就是说list和dict类型不能用作字典的key
dic={'k1':111,'k2':222}print(id(dic))
dic['k1']="abc"
print(dic)print(id(dic)) #dic的id不变
了解:不可哈希类型就是可变类型,可哈希类型就是不可变类型
三、赋值运算符补充
为使代码变得简洁又不失可读性,可以使用如下赋值方式:
3.1 增量赋值
age=18age+= 1 #age = age + 1
print(age)
3.2 链式赋值
x = 10y=x
z=y
以上三行代码可以用链式赋值写成一行代码:#z = y = x = 10
print(x, y, z) # x,y,z的值都是10
3.3 交叉赋值
m = 1n= 2
# 当需要将m和n的值交换时:
temp=m
m=n
n=tempprint(m, n)
# 使用交叉赋值的方式,交换过程可以写成一行代码:
m = 1
n = 2m, n = n, m # 交叉复制操作print(m, n)
3.4 解压赋值
m = [1, 2, 3, 4, 5]a, b, c, d, e = m # 将列表的五个数据按顺序赋值给a、b、c、d、e
print(a) #a = 1
print(b) #b = 2
print(c) #c = 3
print(d) #d = 4
print(e) #e = 5
a, b, c, *_ = m # 将列表的第一、二、三个数据按顺序赋值给a、b、c
print(a) #a = 1
print(b) #b = 2
print(c) #c = 3
*_, a, b, c = m # 将列表的第三、四、五个数据按顺序赋值给a、b、c
print(a) #a = 3
print(b) #b = 4
print(c) #c = 5
a, *_, b, c = m # 将列表的第一、四、五个数据按顺序赋值给a、b、c
print(a) #a = 1
print(b) #b = 4
print(c) #c = 5
对于字典来说解压赋值取出来的是字典的key
dic= {"k1": 111, "k2": 222}
x, y=dicprint(x, y) #输出 x = k1, y = k2
四、身份运算
is 比较的是id是否相同,== 比较的是值是否相同
#如果is判断的结果为True,那么二者的id一样,即二者内存地址一样,即二者就是一个东西,即值一定相等#如果==判断的结果为True,那么二者的值一样,但是二者的内存地址可能不一样
如果要判断一个变量的是否等于None、True、False,建议使用is去判断
五、流程控制之if判断
5.1 什么是if判断
判断 条件1 (并且 条件2):
做什么事。。。
否则:
做什么事。。。
5.2 为什么要用if判断
人类某些时候需要根据条件来决定做什么事情,比如:如果今天下雨,就带伞
所以程序中必须有相应的机制来控制计算机具备人的这种判断能力
5.3 怎么用if判断
if是必须要有的
5.3.1 只有一个if
inp_name = input("你的名字:")if inp_name == "jsaon":print("输入正确")
... # 下面的代码继续运行
5.3.2 if + elif
inp_name=input("你的名字: ")if inp_name == "Jason":print("您的身份是超级vip")
elif inp_name == "张三":
print("您的身份是钻石vip")
elif inp_name == "李四":
print("您的身份是铂金vip")
... # 下面的代码继续运行
5.3.3 if + else
如简易的ATM程序:
inp_name = input('你的用户名:')
inp_pwd= input('你的密码:')if inp_name == "jason" and inp_pwd == "123":print('登录成功')else:print("用户名或密码错误")
5.3.4 if+elif+else
inp_score = input("请输入您的成绩:")
inp_score=int(inp_score)if inp_score >= 90:print("优秀")elif inp_score >= 80: #因为是否大于90已经在上一行判断过了,所以这一行省略了 and inp_score < 90
print("良好")elif inp_score >= 70: #同上
print("普通")else:print("很差")
5.3.5 if判断嵌套使用
ifTrue:ifTrue:print("hello")else:print("sorry")