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 :

Exercice : génération de triplets vérifiant a b ≤ p ≤ 100 et coloration


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut Exercice : génération de triplets vérifiant a b ≤ p ≤ 100 et coloration
    Bonjour,
    Je suis actuellement bloquer sur l'exo 2 de python est-ce que quelqu'un pourrait m'aider? Je sais qu'il faut que j'utilise des listes


    "Ecrire un programme qui à partir d’un entier p ≤ 100, génère et affiche la
    liste de tous les triplets (a,b,a+b) avec a, b, a+b ≤ p. "
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 778
    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 778
    Par défaut
    Salut,

    Citation Envoyé par Skaro Voir le message
    "Ecrire un programme qui à partir d’un entier p ≤ 100, génère et affiche la liste de tous les triplets (a,b,a+b) avec a, b, a+b ≤ p. "
    Prenez une feuille de papier et pour p=10, tracez la droite y = 10 - x.
    Où sont les a, b tels que a + b = 10?
    Il n'est pas difficile de les afficher dans une double boucle.

    Là où çà se corse (et où vous avez peut être(*) besoin d'une liste) c'est pour ne pas afficher (2, 1) si vous avez déjà affiché 1, 2.
    (*) peut être parce qu'en contrôlant un peu les bornes de vos deux boucles vous devriez pouvoir faire sans.

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

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 853
    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 853
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Skaro Voir le message
    Je suis actuellement bloqué sur l'exo 2 de python est-ce que quelqu'un pourrait m'aider?
    "Ecrire un programme qui à partir d’un entier p ≤ 100, génère et affiche la
    liste de tous les triplets (a,b,a+b) avec a, b, a+b ≤ p. "
    Une boucle avec a qui commence à 0 jusqu'à p inclus. Une seconde boucle interne avec b qui commence à "a" jusqu'à (p-a) inclus et c'est réglé quoi.
    Ceci dit, dans l'exemple il manque les triplets (0, 0, 0), (0, 1, 1), (0, 2, 2), (0, 3, 3), (0, 4, 4). Ou peut-être "0" n'est pas autorisé. Dans ce cas on change le départ des boucles.

    Citation Envoyé par Skaro Voir le message
    Je sais qu'il faut que j'utilise des listes
    Tu en sais des choses !!!
    Ca veut dire quoi "utiliser des listes" ? C'est parce que l'énoncé parle de "générer la liste de" ? Une liste n'est qu'un moyen parmis d'autres, ce n'est pas un but. Si par exemple tu affiches juste tous les triplets générés tu l'as ta liste mais sans "utiliser de listes".
    Et si vraiment tu as besoin du résultat dans une liste ben quand tu as généré ton triplet te suffit de l'append dans la liste et basta.
    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]

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut
    C'est bon j'ai réussit, mercii !!

    Maintenant je suis bloqué à sa :

    "Ecrire un programme qui à partir d’un nombre de couleurs n et d’un nombre
    d’entiers N, génère une coloration aléatoire. Il affiche VRAI si la coloration générée
    inclut les n couleurs utilisées. FAUX sinon. "

    Je n'arrive pas à comparer les couleurs, ou il existe un autre moyen de faire sa?
    Images attachées Images attachées  

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 853
    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 853
    Billets dans le blog
    1
    Par défaut
    Là je suis un peu perdu. La coloration d'un texte à l'écran implique d'utiliser des outils spéciaux pour "demander" à l'écran justement de colorer le texte (le plus basique étant les "esc commandes" sous Linux). Comment comptes-tu par exemple afficher "1" en rouge ?
    Ensuite une couleur c'est une association de 3 composantes rouge, vert, bleu. Par exemple le violet c'est du rouge et du bleu. Et chaque composante est un nombre entre 0 et 255. On peut par exemple avoir 255, 0, 0 (rouge) ou 200, 0, 0 (rouge aussi mais pas le même donc pas identique).

    Donc quel outil utilises-tu pour faire tes affichages ?
    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
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 778
    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 778
    Par défaut
    Citation Envoyé par Skaro Voir le message
    C'est bon j'ai réussit, mercii !!

    Maintenant je suis bloqué à sa :

    "Ecrire un programme qui à partir d’un nombre de couleurs n et d’un nombre
    d’entiers N, génère une coloration aléatoire. Il affiche VRAI si la coloration générée
    inclut les n couleurs utilisées. FAUX sinon. "

    Je n'arrive pas à comparer les couleurs, ou il existe un autre moyen de faire sa?
    Si on a 1, 2, 3, 4 et deux couleurs 0, 1, "colorier" peut se ramener à créer une liste (de couleurs) comme dans l'exemple 0, 1, 1, 0 où la position de la couleur (dans une liste) est la même que la position du nombre (dans la première liste).
    Et si on veut visualiser çà, on pourra utiliser 0, 1 comme index dans "bleu", "rouge".

    Ce qui permet d'utiliser random.randint/randrange/choice pour fabriquer la liste de couleurs aléatoire et une troisième liste pour compter les couleurs utilisées pour vérifier que toutes ont été utilisées au moins une fois.

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

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut
    En essayant de suivre votre méthode je tombe à la, j'ai bien n couleurs et mes entiers de 1 à N mais en n fois et les couleurs séparée
    Images attachées Images attachées  

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 853
    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 853
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Skaro Voir le message
    En essayant de suivre votre méthode je tombe à la, j'ai bien n couleurs et mes entiers de 1 à N mais en n fois et les couleurs séparée
    Ok, là je comprends mieux.

    Bon ben une boucle de 0 à N dans laquelle tu tires à chaque fois une couleur au hasard dans les n couleurs disponibles. Et tu stockes la couleur tirée dans un set() (si t'as le droit de les utiliser)
    Et si à la fin la taille du set correspond à n alors c'est ok.

    Si t'as pas droit au set() alors tu crées un tableau contenant n tuples. Chaque tuple contient une couleur et False (ex [(R, False), (G, False), (W, False), ...]. Puis à chaque couleur tirée tu le mets le tuple correspondant à True. A la fin si t'as "n" True c'est bon.

    PS: j'avais bien vu avec les "esc" commandes. Le code \033 correspond en effet au caractère "esc"...
    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]

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut
    Bon, je crois que je me rapproche du truc mais je n'arrive toujours pas à faire le Vrai/Faux


    ps: le projet final est le nombre de Schur.
    Images attachées Images attachées  

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 853
    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 853
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Skaro Voir le message
    Bon, je crois que je me rapproche du truc mais je n'arrive toujours pas à faire le Vrai/Faux
    Un set(), c'est à dire un ensemble comme j'aurais pu dire "un tuple()" ou "un dict()". C'est quoi ce "set(random(...))" ? Si j'avais dit "un dict()" tu aurais écrit "dict(random(...))" ???
    Et ce "if set == n" on voit vraiment que tu ne réfléchis à rien de ce que tu tapes !!!

    Et arrêtes avec tes copies d'écran. Ici on place le code dans le post ce qui nous permet de le copier/coller pour le tester. Déjà on prend du temps pour t'aider si tu crois qu'on va en plus recopier tout ça à la main...
    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]

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut
    J'ai jamais utilisé set

    Et donc voici mon programme, je pense mettre les random couleurs choisit par l'user dans une liste et mesurer la longueur de la liste final si cela correspond à la liste initial de l'user des random couleurs après avoir print, mais je sais pas si c'est possible.

    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
    import random
     
    N=int(input("Choisir un entier "))
    n=int(input("Choisir combien de couleurs (max 6) "))
     
    W='\033[0m'
    R='\033[31m'
    G='\033[32m'
    O='\033[33m'
    B='\033[34m'
    P='\033[35m'
     
    list1=[W, R, G, O, B, P]
    list2=[]
    list3=[]
    list5=[]
     
    if n>=7:
        print("\n ERREUR")
    else:
        for v in range(1,n+1):
            list3=random.choice(list1)
            list2.append(list3)
     
        for u in range(1,N+1):
            for i in range(1,n+1):
                list4=[]
                list4=random.choice(list2)
            print(list4,u, end=",")
            list5.append(list4)
     
        if len(list5)==len(list2):
            print(" Vrai")
        else:
            print(" Faux")

  12. #12
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    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
    from termcolor import colored, cprint
     
    '''
    module termcolor : https://pypi.org/project/termcolor/
    pip install termcolor
    '''
     
    print(colored('Une belle journée', 'yellow') +
          " d'été en plein " + colored(' hiver !', 'red'))
     
    for n in range(1, 11):
        if n % 2 == 0:
            cprint('{}'.format(n), 'red', end=', ')
        else:
            cprint('{}'.format(n), 'blue', end=', ')

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 853
    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 853
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Skaro Voir le message
    J'ai jamais utilisé set
    Ben t'as le droit de lire la doc. Et c'est bien pour ça que j'ai précisé "si tu as le droit de l'utiliser". Je sais bien que c'est un TP d'école donc fatalement tu ne peux utiliser que ce que tu as vu en cours.
    Un set c'est comme une liste sauf que les items ne sont pas dupliqués. Tout item dupliqué est ignoré à la création ou à l'ajout. Pratique donc pour vérifier si tout y est. On ajoute ce qu'on reçoit au fur et à mesure sans se préoccuper (s'il y est déjà l'ajout ne se fait pas) et au final on compte ce qu'il y a. Si le total du set correspond au nombre attendu c'est que tout y est.

    Citation Envoyé par Skaro Voir le message
    Et donc voici mon programme, je pense mettre les random couleurs choisit par l'user dans une liste et mesurer la longueur de la liste final si cela correspond à la liste initial de l'user des random couleurs après avoir print, mais je sais pas si c'est possible.
    Tout comportement qu'on peut simuler avec un papier et un crayon est possible en prog (d'autant plus que tu redis exacement ce que j'ai détaillé). Mais encore faut-il programmer ça correctement. Tu ne peux pas te contenter d'ajouter bêtement les couleurs reçues à ta liste car tu risques d'ajouter plusieurs fois la même couleur et donc au final ta liste de couleurs sera plus grande que le nombre attendu (ou sera identique mais en ayant par exemple 5 jaunes au lieu d'avoir 5 couleurs différentes). C'est pour ça que le set() était intéressant car lui il ne garde pas les doublons. Et si tu peux pas utiliser de set, alors il te faut reproduire son comportement d'où ma solution à base de couleur et de flag. A toute nouvelle couleur reçue on place son flag à True (tant pis s'il y est déjà il le reste) et au final suffit de compter les "True".

    Ou alors avant d'ajouter une couleur à ta liste de controle tu vérifies d'abord qu'elle n'y est pas déjà.

    Et réfléchis à ce que tu tapes car c'est à toi de donner les bons ordres pour faire ce que tu veux que ça fasse. Par exemple quand tu écris list4=truc puis juste en dessous list4=autre_chose et tout ça dans une boucle où tu n'utilises même pas "list4" tu ne te dis pas "mince, qu'est-ce que je suis en train de faire" ??? Personnellement moi ça me marquerait...
    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]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lomboz] Génération de code pour EJB
    Par paikan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 09/07/2003, 14h28
  2. Pouvez vous m'aider a resoudres ces 3 exercices
    Par algorithmique dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 09/08/2002, 17h26

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