2017-10-14 54 views
1

我有一個任務來創建一個代碼,將定義2個類,一個球員和一個團隊,每個人都有一些參數。玩家應該有一個名字,一些滑雪板,一些雪橇和一個玩家指數(玩家之前玩的遊戲數量)。使用類競賽註冊程序

我設法定義了這些類的屬性,但是我很難實現團隊類。團隊應該擁有團隊的名字和玩家的數量 - 玩家不能只是他們的名字,而必須鏈接到類實例(玩家)。我不明白如何使用播放器實例中提供的信息來實現團隊。這裏是我到目前爲止的代碼:

class Player: 
def __init__(self, name, skis, index): 
    self.name = name 
    self.sledges = [] 
    self.skis = [] 
    self.index = index 
pass 


class Team: 
def __init__(self, name, players): 
     self.name = name 
     self.players = [Player] 
pass 

def get_players_count() 

def get_transport_capacity() 

def get_average_index() 

*更新 謝謝您的幫助,我又多了一個功能的添加,將返回的乘客隊伍可容納人數的函數。我試過這樣的東西,但我不認爲語法是正確的。用戶輸入每個雪橇的位置數量,因此我需要遍歷列表中的值以獲取地點數量。

def get_transport_capacity(self): 
    skis = len(Player.skis) 
    for i in Player.sledges: 
     sledges += Player.sledges[i] 
    capacity = skis + sledges 
    return capacity 
+0

get_transport_capacity應該返回什麼? – ingvar

+0

請正確縮進您的代碼。現在,它是無效的。 –

回答

0
class Player: 
    def __init__(self, name, index): 
     self.name = name 
     self.sledges = [] 
     self.skis = [] 
     self.index = index 


class Team: 
    def __init__(self, name, players): 
     self.name = name 
     self.players = players 

    def get_players_count(self): 
     return len(self.players) 

    def add_player(self, player): 
     self.players.append(player) 

    def get_average_index(self): 
     indexes = sum(list(map(lambda p: p.index, self.players))) 
     count = self.get_players_count() 
     return float(indexes)/count 

用法:

a = Player('AName', 2) 
b = Player('BName', 11) 
team = Team('TeamName', [a, b]) 
+0

'indexes = sum(list(lambda p:p.index,self.players))'假設要做什麼?也許你想輸入'sum(list(map(lambda p:p.index,self.players)))' – efkin

0

代替

self.players = [Player] 

爲什麼不:

self.players = [] 

然後還要加上球員的球隊在一個方法:

def add_player(self, player): 
    # ensure optionally that player is a PLayer instance 
    assert type(player) == Player 
    self.players += player