2013-06-19 34 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列表等进行排序的提示。 –

相关问题