如何将Python 3.4输入信息导出到JSON?
我正在尝试建立一个人工智能程序,它将跟踪信息和其他东西,但在试图将信息导出到文件时遇到了问题。我是Python新手,希望得到一些帮助来确定可能存在的问题 这是源代码如何将Python 3.4输入信息导出到JSON?,python,json,save,Python,Json,Save,我正在尝试建立一个人工智能程序,它将跟踪信息和其他东西,但在试图将信息导出到文件时遇到了问题。我是Python新手,希望得到一些帮助来确定可能存在的问题 这是源代码 #Importations import jsonpickle import math import os import sys import time from random import randrange, uniform #Setups SAVEGAME_FILENAME = 'aisetup.json' game_stat
#Importations
import jsonpickle
import math
import os
import sys
import time
from random import randrange, uniform
#Setups
SAVEGAME_FILENAME = 'aisetup.json'
game_state = dict()
#Program AI
class Computer(object):
def __init__(self, name, creator):
self.name = name
self.creator = creator
#User Information
class Human(object):
def __init__(self, name, birth):
self.name = name
self.birth = birth
#Load Program Save
def load_game():
"""Load game state from a predefined savegame location and return the
game state contained in that savegame.
"""
with open(SAVEGAME_FILENAME, 'r') as savegame:
state = jsonpickle.decode(savegame.read())
return state
#Save Program to JSON
def save_game():
"""Save the current game state to a savegame in a predefined location.
"""
global game_state
with open(SAVEGAME_FILENAME, 'w') as savegame:
savegame.write(jsonpickle.encode(game_state))
#Initialize Program
def initialize_game():
"""Runs if no AISave is found"""
UserProg = Human('User', '0/0/0')
AISystem = Computer('TempAI', 'Austin Hargis')
state = dict()
state['UserProg'] = [UserProg]
state['AISystem'] = [AISystem]
return state
#TextPad
#Main Code - Runs Multiple Times per Being Openned
def prog_loop():
global game_state
name = input (str("What is your name?: "))
save_game()
#Main Program
def main():
"""Main function. Check if a savegame exists, and if so, load it. Otherwise
initialize the game state with defaults. Finally, start the game.
"""
global game_state
if not os.path.isfile(SAVEGAME_FILENAME):
game_state = initialize_game()
else:
game_state = load_game()
prog_loop()
#Launch Code
if __name__ == '__main__':
main()
每次运行此操作时,它都会将信息导出到如下文件:
{"UserProg": [{"birth": "0/0/0", "py/object": "__main__.Human", "name": "User"}], "AISystem": [{"py/object": "__main__.Computer", "name": "TempAI", "creator": "Austin Hargis"}]}
我希望它将您的姓名导出到文件夹中,但它无法正常工作。您从未对用户输入的姓名执行任何操作:
def prog_loop():
global game_state
name = input (str("What is your name?: "))
save_game()
name只是一个局部变量。如果要将其保存为人名,则需要在游戏状态的UserProg条目上设置:
def prog_loop():
name = input("What is your name?: ")
# game_state['UserProg'] is a list with one Human instance in it
game_state['UserProg'][0].name = name
save_game()
因为您正在更改game_state中包含的可变对象,而不是分配给game_state本身,所以不需要全局语句。str调用也是多余的,而。。。语法已经生成了一个字符串,将其再次转换为字符串没有什么意义。啊,我明白了。我以为我做这件事是对的。我以前有过类似的东西,但它不起作用,所以我把它扔掉了。我该如何再次使用这些信息?就像名字一样,当节目开始时,我希望它说欢迎回来的名字。我将如何再次使用该名称?@Austinargis:加载后,您可以访问game_state['UserProg'][0]。请重新命名。我尝试过使用该名称,但不确定如何使用以及在何处使用。比如在我关闭程序并重新打开它之后,我将如何应用它来再次使用该名称?它当前告诉我名称未定义。就在游戏状态=加载游戏行之后,游戏状态被加载,游戏状态['UserProg'][0]。名称应该可用。