2013-06-19 70 views
0

我正在做pygame的,我嘗試添加高分功能,但我不能完全弄清楚分裂從一個文件中的字符串和分配變量

如何我節省的名字和分數到這樣的例子.txt文件:

christian careaga: 500 
c dubb: 400 
swag master: 50 
在.TXT每個分數和名稱

被放置在一個新行

我想利用每一個進球,並把它分配給其自己的變量這樣

score1 = christian careaga: 500 
score2 = c dubb: 400 
score3 = swag master: 50 

這樣做的最佳方法是什麼?

+0

最好的辦法是創建一個列表。使用'f.readlines()'。 –

+0

我不認爲你想將它們全部分配給變量,那麼你將不得不通過名稱來引用它們來找到最大值。最好使用while循環,然後搜索最大值。 –

+0

這是真的,但我仍然需要他們分裂,當我顯示他們我的比賽我必須有一種方法來識別他們是否在列表中或使用變量 – Serial

回答

2

不要在你的文件中的每個分數創建變量,而不是用一本字典:

with open("scores.txt") as f: 
    scores = {'score{}'.format(i) : line.strip() for i,line in enumerate(f,1)} 

現在訪問的分數是這樣的:

>>> scores['score1'] 
'christian careaga: 500' 
>>> scores['score2'] 
'c dubb: 400' 
>>> scores['score3'] 
'swag master: 50' 

獲取有序比分:

>>> for s in sorted(scores.values(), key = lambda x: int(x.split()[-1]), 
                   reverse = True): 
    print s 
...  
christian careaga: 500 
c dubb: 400 
swag master: 50 
+0

工作,你認爲有一種方法來獲得分數從最高到最低? – Serial

+0

@ChristianCareaga你可以排序字典來做到這一點,看看我的編輯。名字總是獨一無二的? –

+0

這將足夠好,現在非常感謝你! – Serial

1

保存自己的一些悲傷,並使用一個更容易寫和解析的格式。該json library將保存和載入數據,而無需額外的解析:

import json 

# write highscores 
with open('highscores', 'w') as hscores: 
    json.dump(my_hiscores_structure, hscores, indent=4) 

# load highscores 
with open('highscores', 'r') as hscores: 
    my_hiscores_structure = json.load(hscores) 

使用indent=4你寫了一個結構,它是相當可讀了。

+0

會有一個簡單的方法去獲得最高分和最低分? – Serial

+0

@ChristianCareaga:只需對結構進行排序;請參閱[Python Wiki](http://wiki.python.org/moin/HowTo/Sorting/),瞭解如何對python列表等進行排序的提示。 –

相關問題