def choisir_matelots(self, exception=None):
    'Retourne le matelot le plus apte à accomplir la volonté.'
    proches = []
    matelots = self.navire.equipage.get_matelots_libres(exception)
    graph = self.navire.graph
    gouvernail = self.navire.gouvernail
    if ((gouvernail is None) or (gouvernail.tenu is not None)):
        return None
    for matelot in matelots:
        origine = matelot.salle.mnemonic
        destination = gouvernail.parent.mnemonic
        if (origine == destination):
            proches.append((matelot, [], gouvernail))
        else:
            chemin = graph.get((origine, destination))
            if chemin:
                proches.append((matelot, chemin, gouvernail))
    proches = sorted([couple for couple in proches], key=(lambda couple: len(couple[1])))
    if proches:
        return proches[0]
    return None
Retourne le matelot le plus apte à accomplir la volonté.
def choisir_matelots(self, exception=None):
    
    proches = []
    matelots = self.navire.equipage.get_matelots_libres(exception)
    graph = self.navire.graph
    gouvernail = self.navire.gouvernail
    if ((gouvernail is None) or (gouvernail.tenu is not None)):
        return None
    for matelot in matelots:
        origine = matelot.salle.mnemonic
        destination = gouvernail.parent.mnemonic
        if (origine == destination):
            proches.append((matelot, [], gouvernail))
        else:
            chemin = graph.get((origine, destination))
            if chemin:
                proches.append((matelot, chemin, gouvernail))
    proches = sorted([couple for couple in proches], key=(lambda couple: len(couple[1])))
    if proches:
        return proches[0]
    return None