之前作业
对应下述代码:
x = 10
y = 10
z = 10
del y
10的引用计数为多少?
答: 2,因为10是小整数池中的整数,如果不是小整数池中的数,则题目错误
x = 257
y = x
del x
z = 257
x对应的变量值257的引用计数为多少?
答: 1, x对应的变量值257与z对应的变量值257是不一样的,是存放在两个不同的内存空间的
对应下述代码:
x,y,z 所在的内存地址是否相同?请用python代码阐述为什么?
x = 257
y = x
z = 257
print(id(x) == id(y))
print(id(x) == id(z))
print(id(y) == id(z))
所以x和y的地址相同,但z的地址不同
一行代码取出nick的第2,3个爱好
nick_info_dict = {
'name':'nick',
'age':'18',
'height':180,
'weight':140,
'hobby_list':['read','run','music','code'],
}
_,s2,s3_ = nick_info_dict[4]
上节课回顾
花式赋值
链式赋值
交叉赋值
列表list
[]内用逗号多个元素(任意数据类型)
索引取值,索引左边从0开始,右边从-1开始
字典dict
{}内用逗号隔开多个键(一般为字符串(不可变类型))值(任意数据类型)对
布尔值
所有数据类型都自带布尔值,0/None/空(空字符串,空列表,空字典)/False自带布尔值为False,其他均为True
解压缩
一次性取多个值,如果某一个值不要,就用_表示
python与用户的交互
input函数实现
1.暂停程序
2.接收用户的输入
3.接收的所有数据均转化为字符串数据类型
三种格式化输出方式
f-string
f'{name}'
占位符
'%s'%(name)
format
'{name}'.format(name)
基本运算符
''算术运算符
%(取余) //(取整) **(求幂) #返回一个数值
比较运算符
!= #返回一个布尔值
赋值运算符
+= *= /=
逻辑运算符
把多个条件同时叠加
not 否
身份运算符(is)
每一个变量值都有一个内存地址(身份)
x = 257
y = x
z = 257
print(x is y) #is比较的是内存地址
print(x is not y)
print(not x is y) #和上面等价,判断是否不等于
位运算符
'''
a = 0011 1100 # 60
b = 0000 1101 # 13
a and b = 0000 1100 # 12 #按位与运算,只有当对应a和b对应位上的值均为1时,结果位上的值才为1,否则为0
'''
成员运算符:判断元素是否在容器类元素里面(字符串)
in 和 not in
python运算符优先级
需要先算的加括号即可
流程控制之if判断
浮点数运算的不确定尾数
print(1.2-1.0 == 0.2)
#理论值为True,实际输出值为False,原因是浮点数运算时会造成不确定尾数
流程控制
控制变量的往一个想要的方向变化
IPO-->input process output
if判断
单分支结构
'''
if 条件:
(:表示接下来的代码需要缩进),条件为True运行缩进内代码,不成立不运行缩进内代码
'''
双分支结构
'''
if 条件:
code1
else:
code2
'''
多分支结构
'''
if 条件1:
code1
elif 条件2: #elif可以有无限个
code2
...
else:
coden
'''
变量在计算机中变化过程
通过if判断以及for循环实现
如何找bug
语法错误,粗心错误,逻辑错误(80%)
在变量变化过程中不断打印变量值-->debug功能来源
流程控制之while循环
循环:重复(按照某种规律)干一件事情)
while循环
'''
while 条件: #条件成立运行代码,不成立结束 while循环
code #代码执行结束后会再一次判断条件
'''
while + break
break终止本层循环
while +continue
continue跳出本次循环 ,不再执行下面的代码
while + else(仅做了解),与if...else不同
'''
while 条件:
code1
else:
code2
#当while循环没有被break就执行code2;被break终止了就不执行
'''
两个实例
1.打印1-100内偶数(不包括[22,46,68,98])的和
2.猜年龄游戏,有三次复活机会
同作业