2016-03-16 39 views
0

我不想手动输入所有想在我的文本游戏中使用的怪物,而是想通过IDLE自动添加到字典中。我的问题是如何收集和保存我在IDLE中添加的新怪物。有没有一种方法可以制作一个将信息写入记事本的程序?我寻找类似的答案,并没有看到任何东西。但我不一定知道正确的术语。谢谢!字典创建者(Python 3.x)

""" 
Dictionary of indexed "monsters" for text game 
""" 
### Premade dictionary 
mondic = {1:'dragon', 
      2:'angry gnome vigilante', 
      3:'Donald Trump', 
      4:'lambhorn rider', 
      5:'bone cancer'} 
print(mondic) 
check = 'yes' 
x = 5 
### Create new monsters 
while check == 'yes': 
    print('Do you want to create a monster?') 
    check = str(input('yes/no ')) 
    if check == 'no': 
     break 
    new_monster = str(input('New monster name: ')) 
    x += 1 
    mondic[new_monster] = x 
print(mondic) 
+0

写入记事本?你的意思就像你在记事本中打开的文本文件?如果是这样,当然。它只是写入一个文件。 – skrrgwasme

+0

考虑'pickle'或'json'模块? – ShadowRanger

+1

你似乎有'mondic [new_monster] = x',你的意思是'mondic [x] = new_monster'。 –

回答

0

首先,你不需要为此使用字典。因为你只是在索引处存储名字,所以列表更适合这个问题。你会想这样的代码:

monlist = ['dragon', 'angry gnome vigilante', 'Donald Trump', 'lambhorn rider', 'bone cancer'] 
while check == 'y': 
    check = input('Do you want to create a monster? (y/n): ') 
    if check == 'n': 
     break 
    new_monster = input('New monster name: ') 
    monlist.append(new_monster) 

然后写这些到一个文件:

fv = open("filename.txt", 'w') # 'w' for write 
for monster in monlist: 
    print(monster, file=fv) 
fv.close() # close the file 

,并阅读:

monlist = [] 
open("filename.txt", 'w') 
for line in fv: 
    monlist.append(line) 
fv.close() 

更多信息,请参见documentation。请记住,还有其他方法来读取和写入数据,并且随着对项目的进一步深入,您可能会发现需要编写自己的类或实际使用字典。然后,您可能需要序列化数据,使用json编码或找到其他方式来保存/读取数据。祝你好运!

+1

注意:如果你想要一个数字“键”,“list”中的索引作为键;迭代时使用'enumerate'函数可以免费获得索引,值对。 – ShadowRanger