2017-10-14 20 views
1

J'ai un devoir de créer un code qui définirait 2 classes, un joueur et une équipe ayant chacun quelques paramètres. Le joueur est supposé avoir un nom, un nombre de skis, un nombre de traîneaux et un index de joueur (nombre de parties jouées par le joueur avant).Programme d'inscription à la compétition en utilisant les classes

J'ai réussi à définir ces attributs de la classe mais j'ai du mal à implémenter la classe d'équipe. L'équipe est censée contenir le nom de l'équipe et le nombre de joueurs - les joueurs ne peuvent pas être juste leurs noms, ils doivent être liés à l'instance de classe (joueur). Je ne comprends pas comment utiliser les informations fournies dans l'instance du lecteur pour implémenter l'équipe. Voici mon code à ce jour:

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() 

* Mise à jour Merci pour votre aide, j'ai une autre fonction pour ajouter une fonction qui renvoie le nombre de passagers d'une équipe pourrait accueillir. J'ai essayé quelque chose comme ça mais je ne pense pas que la syntaxe soit correcte. L'utilisateur saisit le nombre de places dans chaque luge, donc j'ai besoin d'itérer sur les valeurs de la liste pour obtenir le nombre de places.

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

que 'get_transport_capacity' devrait renvoyer? – ingvar

+0

Veuillez indenter votre code correctement. En ce moment, c'est invalide. –

Répondre

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 

Utilisation:

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

qu'est-ce que 'indexes = sum (liste (lambda p: p.index, self.players))' supposé faire? Peut-être que vous vouliez taper 'sum (list (map (lambda p: p.index, self.players)))' – efkin

0

au lieu de

self.players = [Player] 

pourquoi pas:

self.players = [] 

Et puis une méthode pour ajouter des joueurs à l'équipe comme dans:

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