IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Tournoi de double mixte de Tennis


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2018
    Messages : 23
    Par défaut Tournoi de double mixte de Tennis
    Bonsoir,

    j´ai une liste de joueurs de tennis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_listeH = ["Frank N.","Stéphane","Thomas","Jochen","Frank S.","Bernd","Paul","Marcel"]
    et de joueuses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_listeF =  ["Suzanne","Isabelle","Annaig","Jacqueline","Svenja","Heide","Sabine","Carola"]
    je cherche de manière aléatoire à remplir une 3ème liste en associant un homme avec une femme afin qu´ils disputent un tournoi de double mixte

    #############################################
    j´ai trouvé le script ci-dessous mais cela fonctionne avec des nombres et non des noms
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import random  
    ma_liste = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]  
    print(ma_liste)
    # Obtenir un élément au hasard  
    i = random.randint(0, len(ma_liste) - 1)  
    elem = ma_liste[i]  
     
    # Obtenir un ensemble d'élements au hasard  
    nb_elem = 16  
    indices = []  
    while nb_elem > 0:  
        i = random.randint(0, len(ma_liste) -1)  
        while i in indices: # tant que le tirage redonne un nombre déjà choisi  
            i = random.randint(0, len(ma_liste) -1)  
        indices.append(i)
        nb_elem = nb_elem - 1  
    resultat = []  
    for index in indices:  
        resultat.append(ma_liste[index])
    print(indices)
    #############################################

    merci par avance de me guider

    Cordialement,
    Stéphane

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par 2e8b92 Voir le message
    merci par avance de me guider
    Plutôt que de récupérer un code que vous ne comprenez pas, pourquoi ne pas essayer de réfléchir à comment construire une solution à votre problème?

    Prenez vos listes de départ, déjà vous pouvez (1) associer un homme et une femme en associant le premier élément de chaque liste, puis le second, puis le troisième,....
    Cela fait pour ajouter un peu de hasard, la fonction random.shuffle permet de mélanger les listes de départ puis vous recommencez (1)

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    une façon de faire parmi d'autres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> listeH = ['Homme1', 'Homme2', 'Homme3']
    >>> listeF = ['Femme1', 'Femme2', 'Femme3']
    >>> import random
    >>> '{z[0][0]}/{z[0][1]} jouent contre {z[1][0]}/{z[1][1]}'.format(
    ...   z = random.sample(
    ...     zip(
    ...       sorted(listeH, key=lambda x:random.random()),
    ...       sorted(listeF, key=lambda x:random.random())
    ...     ), 2))
    'Homme2/Femme1 jouent contre Homme3/Femme2'
    concrètement on trie (sorted()) les listes de départ avec comme clé la fonction random.random(), l'avantage sur random.shuffle() c'est que les listes originelles restent intactes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> listeH = ['Homme1', 'Homme2', 'Homme3']
    >>> sorted(listeH, key=lambda x: random.random())
    ['Homme3', 'Homme1', 'Homme2']
    avec zip() on crée les couples deux à deux avec les deux listes H/F
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> i = ['A', 'B', 'C']
    >>> j = ['1', '2', '3']
    >>> zip(i,j)
    [('A', '1'), ('B', '2'), ('C', '3')]
    enfin avec random.sample() on prend un échantillon aléatoire de ces couples mélangés, le deuxième argument précise combien on veut d'échantillons, ici j'en prends 2 comme ça on a les deux équipes en une passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> random.sample(range(10), 5)
    [8, 1, 2, 6, 0]
    >>> random.sample(range(10), 3)
    [9, 8, 6]

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2018
    Messages : 23
    Par défaut
    Bonsoir wiztricks,
    puisque vous êtes membre depuis 2008 et de surcroit modérateur, je suppose que vous avez une grande expérience dans le domaine du développement.
    c´est pourquoi je vais maintenant exposer toute l´histoire (en essayant de faire au plus court).
    J´ai réalisé ce script en vb excel (https://www.developpez.net/forums/d1...-mixte-tennis/)
    Malheureusement, j´ai un problème de lenteur, c´est pour cela que je souhaite le re-programmé avec python (choix purement arbitraire basé sur des recherches sur internet).
    Les régles de départ sont simples
    - (1) il y a au moins 16 joueurs (dont 8 hommes et 8 femmes)
    - (2) un homme et une femme forme la paire (2 hommes ou 2 femmes ne peuvent pas jouer ensemble)
    - (3) un joueur ne peut pas être plus d´une fois exempté (pour 17 joueurs inscrits, un ne jouera pas par tours mais jamais le même)
    - (4) un joueur ne peut pas avoir 2 fois le même partenaire
    - (5) chacun joueur ne peut pas avoir 2 fois le(s) même adversaire(s)
    - (6) il y a 4 courts de tennis (donc 4 parties peuvent se jouer simultanément)

    je commencerais par générer la première partie composée de 4 double mixtes + le(s) éventuel(s) exempté(s)

    toujours partant pour aider le débutant python que je suis?

    (de préférence, donnez moi des pistes plutôt que les solutions brutes -- je souhaite comprendre ce qui se passe et surtout savoir le reproduire)

    Merci par avance,
    Stéphane


    Citation Envoyé par wiztricks Voir le message
    Salut,



    Plutôt que de récupérer un code que vous ne comprenez pas, pourquoi ne pas essayer de réfléchir à comment construire une solution à votre problème?

    Prenez vos listes de départ, déjà vous pouvez (1) associer un homme et une femme en associant le premier élément de chaque liste, puis le second, puis le troisième,....
    Cela fait pour ajouter un peu de hasard, la fonction random.shuffle permet de mélanger les listes de départ puis vous recommencez (1)

    - W

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par 2e8b92 Voir le message
    toujours partant pour aider le débutant python que je suis?
    BufferBob vous a déjà donné une partie de la solution.... et le forum EXCEL a déjà codé pour vous une bonne partie de ce que vous attendez en VBA: profitez en traduire cela en Python n'est pas si compliqué. Mais ne comptez pas sur moi pour bosser comme l'ont fait ceux du forum VBA, c'est votre projet... et "Tournoi de double mixte de Tennis" n'est pas une question Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2018
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2018
    Messages : 23
    Par défaut
    votre réponse de modérateur est éloquante (pour rester positif), j´espère juste qu´elle n´engage que vous et non la majorité qui eux propose des solutions...

    pour votre gouverne, mon projet "Tournoi de double mixte de Tennis" était fini avant que je demande au forum Excel de l´aide pour optimiser mon code.

    si vous ne voulez pas aider alors pourquoi réagir à mon post si ce n´est pour écrire "Mais ne comptez pas sur moi pour bosser" au lieu d´aider le débutant python que je suis????

    alors que mon message ci-dessous est claire (apparement pas pour vous!!!!!!)

    (de préférence, donnez moi des pistes plutôt que les solutions brutes -- je souhaite comprendre ce qui se passe et surtout savoir le reproduire)

    si vous ne vous sentez pas capable (en une fois, je reste positif dans ma formulation), qui peut me donner des pistes pour avancer et me soutenir au fur et à mesure de l´avancement de mon projet?

    Merci par avance aux futures personnes qui m´aideront...

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par 2e8b92 Voir le message
    si vous ne voulez pas aider alors pourquoi réagir à mon post si ce n´est pour écrire "Mais ne comptez pas sur moi pour bosser" au lieu d´aider le débutant python que je suis????
    Vous vous adressez directement à moi, donc je vous réponds...

    Citation Envoyé par 2e8b92 Voir le message
    alors que mon message ci-dessous est claire (apparement pas pour vous!!!!!!)

    (de préférence, donnez moi des pistes plutôt que les solutions brutes -- je souhaite comprendre ce qui se passe et surtout savoir le reproduire)
    Vous avez déjà un code VBA que vous pouvez essayer de traduire en Python - c'est déjà une piste -, la suggestion de Bufferbob en est une autre...
    Après, à vous de prendre le temps d'essayer de coder votre projet en Python et de poser des questions si vous rencontrez des problèmes. i.e jetez vous à l'eau: l'ordinateur ne vous mordra pas.
    note: si votre préoccupation est d'améliorer l'algorithme du code VBA, la rubrique Algorithmique est aussi là pour çà.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Toutes versions] Tournoi de double mixte de Tennis
    Par 2e8b92 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 10/03/2018, 09h32
  2. [Turbo Pascal] Gestion de tournoi de tennis de table
    Par Alcatîz dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 11/11/2010, 15h28
  3. Creation tableau double entrée - erreurs types mixtes
    Par Kick and run dans le forum C++/CLI
    Réponses: 2
    Dernier message: 03/05/2010, 16h49
  4. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 20h22
  5. Réponses: 3
    Dernier message: 12/06/2002, 21h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo