day03作业
简述执行Python程序的两种方式以及他们的优缺点:
-
交互式
- 优点:运行一句,执行一句
- 缺点:关闭即消失
-
命令式
- 优点:一直保存
- 缺点:全部写完才能调试bug
简述Python垃圾回收机制:
- 每定义一个变量py都会在内存开辟一个空间,这个空间的名字就是变量名,比如X=10,这就是在一个名为X的房间,它里面的值就是10,但是当我们重新定义一个X=11时py就会解除x和10的绑定而重新与11绑定,也就是x=11,这个时候存放10的那个空间就没了名字也就成了垃圾,python会自动释放存放10的这个空间所占用的内存。
对于下述代码:
x = 10
y = 10
z = 10
del y
10的引用计数为多少?
- 2
- 删除了y之后10的引用计数是x和z
x = 257
y = x
del x
z = 257
x对应的变量值257的引用计数为多少?
- 1
- 因为y=x所以删除了x以后y等于257,但是z是另外定义的一个虽然同是等于257但是他们开辟了不同的空间,所以x对应的257引用计数为1.
简述Python小整数池概念:
- 为了避免因创造相同的值而重复申请内存空间所带来的效率问题py在启动时就会创建一个空间也就是小整数池,就是在一定范围内[-5,256]的小整数对象是被重复使用的不会被当做垃圾回收。
对于x = 10
,请用Python代码分别打印变量值、变量值内存地址和变量数据类型:
x = 10
print(x)
print(id(x))
print(type(x))
对于下述代码:
x = 257
y = x
z = 257
请判断x、y、z的变量值是否相同?x、y、z的所在的内存地址是否相同?请用python代码阐述为什么?
x = 257
y = x
z = 257
print(x,y,z)
#输出 257 257 257
print(id(x),id(y),id(z))
#输出34508624 34508624 34508624
- 这是我用pycharm写的,pycharm有个特点就是为了节省内存,在10分钟内输入的相同数值他不会另外开辟空间。所以实际上变量值是相同,但是内存地址x和y相同z和他们不同
通过预习写一个猜年龄游戏,需求:给定一个标准年龄,用户通过输入年龄判断年龄是否等于标准年龄,如果等于——打印猜对了;如果小于——打印猜小了;如果大于——打印猜大了
age = 18 #定义一个数值(标准答案)
count = 0 #次数0次时可以游戏
#当游戏进行次数小于3次时显示"请输入你的年龄>>>"
while count < 3:
inp_age = input("请输入你的年龄>>>")
# 判断输入的是否是数字,如果不是,则显示"年龄怎么能不输入数字呢"
if not inp_age.isdigit():
print("年龄怎么能不输入数字呢")
continue
#如果输入的时数字则开始判断与标准答案的大小。
inp_age_int = int(inp_age)
if inp_age_int == age:
print("对的,就是这个")
break #当猜对之后退出当前循环
elif inp_age_int < age:
print("猜小了")
else:
print("猜大了")
#每次猜一次数字则增加一次游戏次数如果次数小于三则继续游戏
count += 1
if count < 3:
continue
#当游戏次数大于3时则出现"是否继续猜,继续输入“y”,否则按任意键退出。"
# 如果输入y则游戏进行次数清0,继续进行游戏。
again_choice = input("是否继续猜,继续输入“y”,否则按任意键退出。")
if again_choice == "y":
count = 0
今日小结:
今天开始接触实际打代码,感觉有很多懵懵懂懂的,不是很明白,虽然每句话都知道代表的是什么意思,但是如果如果没人教让我自己打肯定打不出来,很多地方也不知道为什么这么打,接下来好好学!