如何将变量分配给列表中的项目

时间:2015-11-02 09:15:18

标签: python

我必须为游戏设计一个记分板 我有一个包含游戏中所有玩家的列表:

players = ['Starplayer', 'Ben', 'Kev', 'Cris', 'Runner', 'Heart'...etc]

我需要将此列表中的每个玩家分配到他们的等级编号(他们都做了5个级别),每个级别需要一个单独的分数。

我需要知道的是如何将这些变量分配给列表项。

我有一个包含playernames及其levelsscore的文字文件:

Starplayer,1,19
Ben,1,20
Kev,0,20
Cris,1,19
Runner,4,19
Cris,2,15
Heart,5,16

...etc

3 个答案:

答案 0 :(得分:2)

一种方法是创建一个代表玩家的类,其属性为namelevelscore,并使用文本中的信息填充该类的对象数组文件。您可以推出自己的类,也可以定义namedtuple。例如,

from collections import namedtuple

Player = namedtuple('Player', 'name, level, score')

这是你可以实例化单个玩家的方法:

# keyword arguments
p1 = Player(name='bob', level=1, score=19)
# positional arguments
p2 = Player('fred', 42, 99)

这是你可以从对应于文件中一行的字符串中实例化一个

的方法
 # just for illustration. This would really come from reading the file
line = 'Starplayer,1,19'
# split line into ['Starplayer', '1', '19'] and unpack into Player
p = Player(*line.split(','))

虽然请注意,这会使levelscore属性字符串。如果你需要整数,你需要做一些更聪明的事情。

然后您可以按名称或索引访问其属性:

print p.name
print p[0]

最后,这就是你可以打开一个文件并在其行上循环的方法,

with open('some_file.txt') as f:
    for line in f:
        # line is a string containing the contents
        # of one line in the file

答案 1 :(得分:1)

在这种情况下,我会像这样制作一个类玩家:

class Player:
    def __init__(self, name):
        """put init variables here"""
        self.level=0 #or 1 whatever is first
        self.name=name
    def incrementLevel(self):
        self.level+=1
    def printName(self):
        print self.name

然后你可以:

players=[]
players.append(Player("starplayer"))
players.append(Player("Ben"))

等...

然后打印所有玩家,例如:

for player in players:
    player.printName()

答案 2 :(得分:0)

我认为beter选择是字典,而不是列表。您可以在文件中使用for循环,并分隔所有名称,分数,级别和创建列表。然后再次在此列表中使用for循环并在循环中创建字典,例如i [0]是键,i [1],[2]是值。