【发布时间】:2025-12-26 14:20:15
【问题描述】:
因此,对于我的入门编程课程,我们必须创建一个具有保存/加载功能的游戏,并且我正在尝试测试一些代码以确保它可以正常工作。
由于某种原因,我无法使以下功能正常工作。我已经尝试在 Idle 中逐行浏览它,它在那里工作得很好,但是一旦我尝试在一个函数中使用相同的系统,它就无法工作。请帮忙?
def save(name,inventory,mapGrid,x,y,enemy):`
choice = 0
file = shelve.open("save_files")
save = {'save1':file['save1'],'save2':file['save2'],'save3':file['save3']}
print("Where would you like to save?")
print("Save 1 -", save['save1']['name'])
print("Save 2 -", save['save2']['name'])
print("Save 3 -", save['save3']['name'])
choice = input("Enter Number:\t")
if choice == 1:
save['save1']['name'] = name
save['save1']['inventory'] = inventory
save['save1']['mapGrid'] = mapGrid
save['save1']['x'] = x
save['save1']['y'] = y
save['save1']['enemy'] = enemy
file['save1'] = save['save1']
file.sync()
if choice == 2:
save['save2']['name'] = name
save['save2']['inventory'] = inventory
save['save2']['mapGrid'] = mapGrid
save['save2']['x'] = x
save['save2']['y'] = y
save['save2']['enemy'] = enemy
file['save2'] = save['save2']
file.sync()
if choice == 3:
save['save3']['name'] = name
save['save3']['inventory'] = inventory
save['save3']['mapGrid'] = mapGrid
save['save3']['x'] = x
save['save3']['y'] = y
save['save3']['enemy'] = enemy
file['save3'] = save['save3']
file.sync()
file.close()
print("Game Saved")
编辑:运行该函数后,它应该将字典保存到文件 ['save#'] 并允许我稍后访问数据,但数据不会保存到搁置文件以及当我尝试访问它时那里什么也没有。 ((对不起,应该马上把它放进去))
例如,如果我再次运行 save() 函数,它应该显示与保存文件关联的名称,但它只显示“EMPTY”。
我将 save_files 设置为的基本内容是
文件['save#'] = {'name':'EMPTY'}
【问题讨论】:
-
怎么不行?为什么它不起作用?
-
您应该使用收到的错误消息等更新帖子,以及预期的输出。检查mcve
-
运行该函数后,它应该将字典保存到文件 ['save#'] 并允许我稍后访问数据,但数据不会保存到搁置文件中,当我尝试时再次访问它那里什么都没有。
标签: python python-3.x file-io pickle shelve