【发布时间】:2020-01-06 15:07:49
【问题描述】:
我在输出我在程序中创建的 2 个函数时遇到了一些麻烦。 我有以下字典:
def game():
return {
'players': [],
'active_players':[],
'running_game': False,
我从这里收集数据:
def player_register(mm,name):
board1_for_ship_placement = create_grid(columns_size,rows_size)
board2_for_showing = create_grid(columns_size,rows_size)
player = {
'name':name,
'played_games': 0,
'victory': 0,
'ships_available' : {
"speeder":0,
"sub":0,
"frag":0,
"cruz":0,
"spaceship":0
},
'ships_in_use':[],
'board1': board1_for_ship_placement,
'board2': board2_for_showing
}
mm['players'].append(player)
然后我创建了 2 个函数来保存和加载:
def save():
my_dict = game()
with open("my_data.pkl", "wb") as f:
pickle.dump(my_dict, f)
def load():
with open("my_data.pkl", "rb") as f:
my_data = pickle.load(f)
这是我的菜单功能:
def main():
mm = fun.game()
letters_dict = fun.dict_letters()
ships_size = fun.check_ships_size()
while True:
line = input("Insert Comand: ")
if not line: # checks if input is empty line , if so
break # it breaks out of while loop
commands = line.split(" ")
elif commands[0] == "G":
commandG(commands,fun)
elif commands[0] == "L":
commandL(commands,fun)
elif commands[0] == "teste":
print(mm['jogadores_em_ativo'])
elif commands[0] == "break":
break
我构建了这两个函数(一个用于加载,一个用于保存):
def commandG(commands,fun):
dados = pickle.dump(game())
print("Game Saved")
def commandL(commands,fun):
dados = pickle.loads(game())
print("Game Loaded")
但它不起作用......我错过了什么吗?如何让程序按 G 或 L 来保存和加载数据?
【问题讨论】:
-
“它不起作用”不够具体。请描述问题:您是否遇到错误?你的电脑炸了吗? 如何它“不工作”?
-
@Carcigenicate 它只是关闭程序并且什么都不做。
-
@ForceBru 只是关闭程序而不是按我的预期保存数据。
-
@motspeed,你有什么意见?将
print(repri(line))放在line = input("Insert Comand: ")之后,运行您的代码并显示输入和输出 -
@motspeed 你对腌制数据做了什么?你把它保存在任何地方吗?
标签: python python-3.x pickle