2016-03-16 43 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