deep2type是一个字典,point_dict = deep2type之后,如果修改point_dict,也会对deep2type造成影响,请问如何解决
可以通过深度复制的方法,把源数据复制,得到一个新的数据对象,操作新数据对象不会影响到源数据,详情如下:
import copy
point_dict = copy.deepcopy(deep2type)
用法格式
import copy
克隆体 = copy.deepcopy(数据源)
调试deep2type的数据问题
当我从文件一级路径向上返回了一级,
3,应该设置为none, 此处需修改
深度为0的数据,已修复
while循环控制
当某一个特定的情况发生时,不希望继续后面的内容,要跳过本次循环,进入到下一轮循环
while 条件:
if 条件2:
continue
deep2type的数据问题
问题,初始数据被修改了
原因
全部的可变数据类型
字典,列表
代码
d = {"name":"张三"}
m = d # point_dict = self.deep2type # point_dict = {}
print(id(m), id(d))
m["age"] = 18
d["gender"] = "男"
print(m, d)
ul = [1,2,3]
ol = ul
ol.append(99)
print("ul",ul)
print("ol",ol)
效果
C:\Users\python_hui\Anaconda3\python.exe G:/项目-每日日考/1.py
2468375265784 2468375265784
{'name': '张三', 'age': 18, 'gender': '男'} {'name': '张三', 'age': 18, 'gender': '男'}
ul [1, 2, 3, 99]
ol [1, 2, 3, 99]
Process finished with exit code 0
不可变数据类型的赋值
新模块 copy模块用法
import copy
克隆体 = copy.deepcopy(数据源)
一般要复制的数据源,是可变的数据类型,比如字典,或列表类型
克隆体与数据源有一模一样的数据
如果后面对克隆体进行操作,不会影响到数据源
代码
d = {"name":"张三"}
import copy
m = copy.deepcopy(d) # m是一个d数据的克隆体,但是m是另一个数据实体了
print(id(m), id(d))
m["age"] = 18
print(m, d)
结果
C:\Users\python_hui\Anaconda3\python.exe G:/项目-每日日考/1.py
2609706184136 2609688646136
{'name': '张三', 'age': 18} {'name': '张三'}
Process finished with exit code 0
余留问题
深度为3向上一级返回的时候,深度应该为2, 并且 deep2type的3的值应该为none
新功能,根据已选的题目,随机选出五题最简单的实现
文件对象.data = 【题目1,题目n】
直接使用随机模块,sample选出题目
写一个学生题目过滤规则从已选的出题的题库中,选出五题目来
wenda_list = random.sample(self.data, 5)
文件对象与学生对象的一个关联
学生对象get_wenda主逻辑
学生对象有一个get_wenda方法
在该方法中,会创建一个文件对象
调一下文件对象的选题方法
使用过这个方法后,文件对象就会多出很多题目来
把题目赋值给学生对象
self.data = f_obj.data
学生对象有题目后,就从这一堆题目中选出5个
选题成功后,进行答题环节。
扩展功能
针对文件对象的 select_wenda 的优化
1,手动选题
2,自动选题,一口气加载所有的题目并返回
针对学生对象的 fileter_wenda 要优化
1,当前,无脑随机五题
2,出具的五个题目是要与自有数据进行一些规则的筛选的
a,从已经答过的题目中取出分数最低的一题
b,从题库中取出四题,并且,这四题不能与a的题目重复
新问题,现在学生的ID写死了,需要写活 跑流程