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 :

Comment assigner un nombre aléatoire à 2 items ayant les même noms de variable


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2019
    Messages : 15
    Par défaut Comment assigner un nombre aléatoire à 2 items ayant les même noms de variable
    Bonjour à tous,

    Je me permets de vous solliciter, car je suis bloqué sur une logique.

    Voici mon problème. Je vais prend un exemple pour illustrer mon problème.

    =>J'aimerais que lorsqu'un nombre aléatoire est sélectionné entre 100000-200000 (via randint) que 2 personnes soient gagnantes, si vrai je récupère ces infos dans des variables portants le même nom afin de remplir des champs dans un tableur. Puis si le nombre est compris entre 50000-100000 pareille 2 autres gagnants etc...
    Le problème que je rencontre c'est que le programme ne comprend dans ce sens et me remonte qu'un seul gagnant dans les 50% et un seul gagnant dans les 25% etc.. (le dernier de la liste du programme). Il ignore les autres conditions qui sont identiques. Je sais que ce n'est pas écrit correctement, pourriez-vous m'indiquer comment faire et alléger le programme? merci à vous.

    Voici un exemple du code:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     a = randint(0,200000)  
     
                    #-------50% de chance de gagner----------         
                if a > 100000:
     
                    prenom = "Artur""
     
                    nom = "Dupont"
     
                    adresse = "Paris"
     
                    gagnant = "oui"
     
                    #-------50% de chance de gagner----------
     
                if a > 100000:
     
                    prenom = "Fabrice""
     
                    nom = "Toto"
     
                    adresse = "Blois"
     
                    gagnant = "oui"
     
                    #-------25 % de chance de gagner----------
     
                elif 100000 >= a > 50000:
     
                    prenom = "Pierre""
     
                    nom = "Bidule"
     
                    adresse = "Poitiers"
     
                    gagnant = "oui"  
     
     
                    #-------25 % de chance de gagner----------
     
                elif 100000 >= a > 50000:
     
                    prenom = "Patrice""
     
                    nom = "Arti"
     
                    adresse = "Grenoble"
     
                    gagnant = "oui"

  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 ddeep Voir le message
    Il ignore les autres conditions qui sont identiques. Je sais que ce n'est pas écrit correctement, pourriez-vous m'indiquer comment faire et alléger le programme?
    Si on écrit if... elif... elif... else... la première condition qui est vraie va ignorer les autres: c'est fait pour çà. Et si vous voulez évaluer plusieurs fois la même condition, il faudra écrire des if... puis encore if...: des "if" séparés.

    Pour moi, vous codez comme un débutant et "bien coder" n'a aucune importance car vous avez d'autres chats à fouetter: essayer d'écrire un code que vous savez relire pour comprendre pourquoi il fonctionne et tout ce que vous allez découvrir en essayant de le mettre au point.

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

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2019
    Messages : 15
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Si on écrit if... elif... elif... else... la première condition qui est vraie va ignorer les autres: c'est fait pour çà. Et si vous voulez évaluer plusieurs fois la même condition, il faudra écrire des if... puis encore if...: des "if" séparés.

    Pour moi, vous codez comme un débutant et "bien coder" n'a aucune importance car vous avez d'autres chats à fouetter: essayer d'écrire un code que vous savez relire pour comprendre pourquoi il fonctionne et tout ce que vous allez découvrir en essayant de le mettre au point.

    - W
    Ok, mais selon moi si le nombre aléatoire est situé entre x et y alors je lui demande de faire une certaine action, sinon fait autre action (entre 100000 et 200000 alors rempli tel tableau avec les noms/prénoms etc des gagnants, sinon si le nombre est entre 50000 et 100000 alors rempli tel tableau avec les noms/prénoms etc des gagnants suivants etc.. (ce n'est qu'un exemple)). Si je mets que des if (chose que j'avais testé) je n'arrive pas à assigner la même condition à plusieurs items car cela me remplir le tableau que d'un seul item et ça ignore les autres items ayant la même condition (item = personne avec non/prénom son adresse etc...).

    si je prends un autre exemple pour illustrer:
    Admettons que je souhaite distribuer des cartes à des joueurs, je lance un dé, si je tombe sur un chiffre situé entre 4 et 6 alors je distribue 4 cartes au premier groupe de joueur seulement (composé de plusieurs joueurs) et je remplis un tableau avec leur descriptif (mais un champs du tableau = une variable que je réutilise pour chaque joueur) et rien aux autres groupes, mais à l'inverse si le chiffre du dès est situé entre 1 et 4, je distribue 4 cartes à un second groupes et je remplis un tableau (en réutilisant les même variable des autres groupes) etc...

    A l'heure actuelle, le code ne rempli le tableau que du dernier joueur du premier groupe si le dé est entre 4 et 6 idem et si le dé est entre 1 et 4 je n'ai que l'info du dernier joueur et tous les autres du même groupe sont ignorés.

  4. #4
    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 ddeep Voir le message
    A l'heure actuelle, le code ne rempli le tableau que du dernier joueur du premier groupe si le dé est entre 4 et 6 idem et si le dé est entre 1 et 4 je n'ai que l'info du dernier joueur et tous les autres du même groupe sont ignorés.
    Si vous réutilisez les mêmes variables pour tous les joueurs, c'est la dernière assignation qu'on aura à la sortie. Une "variable" simple ne peut pas prendre plusieurs valeurs. C'est pour çà qu'on a des collections comme listes, tuples, dictionnaires,... qui vont permettre de réaliser la même opération sur tout ou un sous ensemble.

    L'intérêt des tuto. sera d'introduire les notions pas à pas: on ne va pas vous proposer de faire des trucs plus compliqués que ce que vous n'avez vu côté outils pour les résoudre. Et tout l'apprentissage de la programmation sera de partir d'un besoin pour arriver à le reformuler avec des structures de données et des algorithmes qu'on pourra coder => il faut apprendre à maîtriser les outils pour imaginer quoi en faire et jusqu'où.

    Si vous ignorez tout çà, vous allez au devant de problèmes insurmontables.

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

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par ddeep Voir le message
    Admettons que je souhaite distribuer des cartes à des joueurs, je lance un dé, si je tombe sur un chiffre situé entre 4 et 6 alors je distribue 4 cartes au premier groupe de joueur seulement (composé de plusieurs joueurs) et je remplis un tableau avec leur descriptif (mais un champs du tableau = une variable que je réutilise pour chaque joueur) et rien aux autres groupes, mais à l'inverse si le chiffre du dès est situé entre 1 et 4, je distribue 4 cartes à un second groupes et je remplis un tableau (en réutilisant les même variable des autres groupes) etc...
    En programmation, "groupe de trucs" implique "tableau de trucs".

    Citation Envoyé par ddeep Voir le message
    A l'heure actuelle, le code ne rempli le tableau que du dernier joueur du premier groupe si le dé est entre 4 et 6 idem et si le dé est entre 1 et 4 je n'ai que l'info du dernier joueur et tous les autres du même groupe sont ignorés.
    Ben oui, une variable=une info. Groupes d'infos identiques (ex groupe de nombres, groupe de noms, groupe de dates) implique tableau d'infos (tableau de nombres, tableau de noms, tableau de dates).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2019
    Messages : 15
    Par défaut
    J'ai mis sous forme de dictionnaire mon exemple premier, maintenant j'aimerais pouvoir récupérer le résultat du champs "prénom" à la fois pour le tableau "a" et "b" si la condition if a > 100000 est vrai dans une même variable afin d'incrémenter un CSV. Puis faire de même pour la condition elif 100000 >= a > 50000 si vrai pour le tableau "b" et "c". Actuellement je peux faire des "prints", mais cela m'impose de faire une colonne pour le tableau "a" et une autre pour le tableau "b", "c" et "e", j'ai testé de les fusionner mais j'ai "none" en retour. Puis faire de même pour la suite "nom", "adresse" ect... car tous ces champs devront écrire leur valeur dans un CSV.
    Quelle serait la syntaxe? dois-je aussi créer une boucle?

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    from random import randint 
     
    a = randint(0,200000)  
     
    #-------50% de chance de gagner----------         
    if a > 100000:
     
        b = {"prenom": "Arthur", "nom": "Dupont", "adresse": "Paris", "gagnant": "oui"}
        c = {"prenom": "Fabrice", "nom": "Toto", "adresse": "Blois", "gagnant": "oui"}
     
        bb = print(b["prenom"])
        cc = print(c["prenom"]) 
        aa = (bb, cc)
     
        print (aa)
     
     
     
    #-------25% de chance de gagner----------         
    elif 100000 >= a > 50000:
     
        d = {"prenom": "Pierre", "nom": "Bidule", "adresse": "Poitier", "gagnant": "oui"}
        e = {"prenom": "Patrice", "nom": "Arti", "adresse": "Grenoble", "gagnant": "oui"} 
     
        print(d["prenom"])
        print(e["prenom"])   
     
    else:
        print("dommage")

  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
    Salut,

    Citation Envoyé par ddeep Voir le message
    Quelle serait la syntaxe? dois-je aussi créer une boucle?
    C'est pas un problème de syntaxe mais de "penser avec".
    Vous voyez bien que vous avez une (ou 2) listes de personnes, les informations de chaque personnes étant stockées dans un dictionnaire: vos variables a, b, c, d ne vont pas vous aider!

    Pour les fichiers CSV, il y a une documentation sur le module csv. Elle a été traduite en français et si vous ne prenez pas le temps de la lire pour comprendre ce qu'on peut faire avec...

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

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ddeep Voir le message
    J'ai mis sous forme de dictionnaire mon exemple premier, maintenant j'aimerais pouvoir récupérer le résultat du champs "prénom" à la fois pour le tableau "a" et "b" si la condition if a > 100000 est vrai dans une même variable afin d'incrémenter un CSV. Puis faire de même pour la condition elif 100000 >= a > 50000 si vrai pour le tableau "b" et "c". Actuellement je peux faire des "prints", mais cela m'impose de faire une colonne pour le tableau "a" et une autre pour le tableau "b", "c" et "e", j'ai testé de les fusionner mais j'ai "none" en retour.
    Ouais. T'es sûr que nommer tes variables "a", "b", "c", "aa", "bb" etc aide à la compréhension, à la relecture et à l'évolutivité? Ca sent le truc bricolé à la "va vite" ce qui ne peut que l'amener à se scratcher.
    Déjà tu as deux variables "b" et "c" qui sont deux dictionnaires identiques (ils ont tous deux les mêmes types d'infos, prenom, nom, adresse, gagnant). Or comme je l'ai dit, "groupe de trucs" implique "tableau de trucs". Donc "groupe de dictionnaires" implique "tableau de dictionnaires". Tant que tu n'auras pas intégré ça, tes programmes seront bof bof.

    Sinon pour tes "None", c'est normal puisque tu récupères le retour de la fonction print() et que celle-ci ne retourne rien.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. comment obtenir un nombre aléatoire ?
    Par oussama0013 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/05/2009, 16h31
  2. Réponses: 3
    Dernier message: 08/03/2008, 11h01
  3. comment avoir des nombres aléatoires ?
    Par anisj1m dans le forum C++
    Réponses: 2
    Dernier message: 25/12/2006, 00h12
  4. Réponses: 2
    Dernier message: 16/05/2006, 17h02
  5. [JPopupMenu] Comment recupérer le nombre de d'item ?
    Par Cyber@l dans le forum Composants
    Réponses: 2
    Dernier message: 14/05/2004, 09h22

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