对于一个学校项目,我正在用Python制作一个刽子手游戏。现在我的代码从字典中选择一个单词,如下所示:
WordList = ["cat", "hat", "jump", "house", "orange", "brick", "horse", "word"]
word = WordList[random.randint(0, len(WordList) - 1)]
现在,在运行之前必须在代码中设置单词列表,但我添加了在运行单词时向单词添加单词的功能:
if command == "add":
while True:
print("type a word to add to the dictionary")
print("type /b to go back to game")
add = raw_input("word: ")
if add != "/b":
WordList = WordList + [add]
print add, "added!"
else:
print("returning to game")
break
但是,一旦我退出代码,添加的单词显然没有保存,所以我要么必须手动将所有单词添加到列表中,要么每次代码启动时向列表中添加一堆单词。所以我想知道在代码完成后是否有一种简单的方法可以让变量保存,这样WordList将在下次代码启动时保留添加的单词。我用来编写python的程序是Jetbrains PyCharm,如果这有所不同。对任何不理想的代码表示歉意,我是代码新手。
答案 0 :(得分:7)
简单地挑选您想要保持持久的数据。由于您的用例不需要非常复杂的数据存储,因此酸洗是一个非常好的选择。一个小例子:
import pickle
WordList = ["cat", "hat", "jump", "house", "orange", "brick", "horse", "word"]
# do your thing here, like
Wordlist.append("monty");
#open a pickle file
newfile = 'mypickle.pk'
with open(newfile, 'wb') as fi:
# dump your data into the file
pickle.dump(Wordlist, fi)
稍后当您需要再次使用它时,只需将其加载:
#load your data back to memory when you need it
with open(newfile, 'rb') as fi:
WordList = pickle.load(fi)
钽哒!你现在有数据持久性。更多阅读here。一些重要的指示:
'b'
打开文件时,请注意open()
。我喜欢使用pickle文件作为二进制文件。当你腌制它们时,这有助于避免一些复杂的对象结构出现问题。with
命令。这样可确保在完成文件的所有工作后,文件将安全关闭。这有助于防止意外访问或覆盖我的泡菜。答案 1 :(得分:1)
您必须使用持久存储:在添加文件时将文字写入文件,并在程序启动时从该文件中检索文字。
答案 2 :(得分:1)
如果退出代码,则停止该过程。因此,您将丢失所有数据。你必须添加保持脚本活着的单词。建议使用处理所有调用的服务器(例如:http://flask.pocoo.org/)或使用python命令输入(https://en.wikibooks.org/wiki/Python_Programming/Input_and_Output)。
但请记住......如果你停止这个过程就会丢失所有数据,这是正常的。
否则,在停止脚本之前,必须将所有数据保存到文件或数据库中,并在脚本启动时加载它们。