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 :

Afficher des variables de plusieurs listes


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Afficher des variables de plusieurs listes
    Bonjour,
    je suis étudiante et je suis bloquée à une question. Pour remettre dans le contexte, l'exercice consiste à crée des immeubles avec des hauteurs variables à partir de listes (nous somme sur le chapitres des listes). Tout d'abord, il fallait déclarer un liste puis afficher une suite de rectangles de largeur 20 et dont les hauteurs sont données par la liste 1 qu'on appellera lst. Ça il n'y a pas de problème j'ai réussi. Sauf que à la question suivante on me demande de modifier mon programme pour qu’il affiche les rectangles dont les hauteurs sont données par la liste lst et les largeurs par lst largeurs. Par exemple, le premier immeuble est de hauteur 100 et de largeur 20 (par que lst_largeurs a comme valeur [20,19,18 etc.]. Et c'est là que je bloque.
    Voilà mon 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
    if __name__ == '__main__':
        largeurFenetre=400
        hauteurFenetre=400
        cree_fenetre(largeurFenetre,hauteurFenetre)
     
        lst=[100,200,350,40,160,210,130,80,170,300,280,210,320,30,70]
        lst_largeurs=[20,19,18,24,30,12,29,30,26,15,22,26,21,27,13]
        xa=0
        xb=20
        yb=400
     
        for i in range(len(lst)):
     
            color='black'
            if i%2!=0:
                color='blue'
     
            rectangle(xa,400-lst[i],xb,yb,couleur= color,remplissage=color)
            xb+=20
            xa+=20
     
     
        attente_clic()
        ferme_fenetre
    S'il vous plait donnez-moi des pistes j'ai l'impression d'avoir tout essayé mais rien n'y fait

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Tu peux directement créer la liste des rectangles avec zip()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>> lst=[100,200,350,40,160,210,130,80,170,300,280,210,320,30,70]
    >>> lst_largeurs=[20,19,18,24,30,12,29,30,26,15,22,26,21,27,13]
    >>> rects = []
    >>> for l, h in zip(lst, lst_largeurs):
    ...     rects.append((l, h))
    ... 
    >>> rects
    [(100, 20), (200, 19), (350, 18), (40, 24), (160, 30), (210, 12), (130, 29), (80, 30), (170, 26), (300, 15), (280, 22), (210, 26), (320, 21), (30, 27), (70, 13)]
    Ensuite tu peux traiter tes rectangles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for rect in rects:
        color = "black"
        .....

  3. #3
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Merci pour la réponse rapide mais malheureusement nous n'avons pas encore appris avec zip alors je doute que j'ai le droit d'utiliser cette façon

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par ilaomxp Voir le message
    Merci pour la réponse rapide mais malheureusement nous n'avons pas encore appris avec zip alors je doute que j'ai le droit d'utiliser cette façon
    Je suis d'accord avec ton raisonnement. S'il s'agissait d'un vrai programme opérationnel alors tu pourrais utiliser toute la gamme des outils disponibles mais s'il s'agit d'un exercice poir t'aider à manipuler les listes, alors il vaut mieux utiliser les connaissances apprises en cours.

    Donc tu as une liste de hauteurs lst=[100,200,350,40,160,210,130,80,170,300,280,210,320,30,70] et une liste de largeurs lst_largeurs=[20,19,18,24,30,12,29,30,26,15,22,26,21,27,13]. Et si j'ai bien compris, on te demander d'afficher conjointement les hauteurs et les largeurs.
    Déjà (avis perso), si tu n'avais eu qu'une seule liste tu aurais pu la laisser "lst" mais maintenant que tu en as 2 et que l'une se nomme "lst_largeurs", alors il faut renommer l'autre en par exemple "lst_hauteurs". C'est une question de clarté de code.
    Sinon pour ton truc ben je pense que si tu utilises une variable "i" qui part de 0 pour atteindre la longueur de la liste, et si tu affiches dans la boucle lst[i] et lst_largeurs[i] ça résoudra ton souci.

    Ensuite, si tu es libre d'organiser tes données à ta manière alors je te conseillerais de regrouper ensemble "hauteur" et "largeur" dans une seule et unique liste (que là tu peux nommer "lst" si tu veux) et où chaque item contiendrait un tuple (hauteur, largeur).
    Ainsi ça donnerait lst=[(100, 20), (200, 19), (350, 18), ...]. Déjà ce serait plus en conformité avec la logique de la chose (on regroupe les informations qui vont ensembles) et surtout ça te simplifierait le traitement => lst[i] te donnant le "i ième" immeuble, tu aurais directement sa hauteur et sa largeur avec lst[i][0] et lst[i][1]...
    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]

  5. #5
    Futur Membre du Club
    Homme Profil pro
    étudiant
    Inscrit en
    Octobre 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Octobre 2019
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Alors j'ai fait comme vous l'avez demandé mais ça ne fonctionne toujours pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for i in range(0,len(lst)):
            lst_hauteurs[i]
            lst_largeurs[i]
     
            color='black'
            if i%2!=0:
                color='blue'
     
            rectangle(xa,400-lst_hauteurs[i],xb-lst_largeurs[i],yb,couleur=color,remplissage=color)
            xb+=20
            xa+=20
    Je pense que je vous ai mal compris
    + merci beaucoup pour les conseils de la deuxième partie de ta réponse, un jour j'essayerai de faire comme ça

  6. #6
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Elles veulent dire quoi, les lignes 2 et 3 ?
    Pas d'aide par mp.

  7. #7
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,

    Je débute aussi alors je ne sais pas comment vous dessinez des rectangles, vous ne l'avez pas précisé donc je ne peux pas tester mais je vais quand même me renseigner...

    Par contre je devine plus ou moins comment vous procédez, c'est appartement la fonction rectangle(xa,400-lst[i],xb,yb,couleur= color,remplissage=color) qui vous permet de tracer des rectangles...

    Alors ce que je vois c'est que cette partie-là du code :

    correspond au premier problème lorsque les largeurs étaient toutes égales à 20 donc cette partie-là ne convient plus puisque désormais les largeurs sont variables... Ce n'est plus 20 qu'il faut ajouter à chaque fois mais la largeur de l'immeuble courant...

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ilaomxp Voir le message
    Alors j'ai fait comme vous l'avez demandé mais ça ne fonctionne toujours pas:
    Comme le dit marco056, les lignes 2 et 3 ne veulent rien dire. Si tu veux afficher les valeurs il te faut écrire print(lst_hauteurs[i]) et print(lst_largeurs[i]). Mais je crois savoir d'où vient la confusion...
    Dans idle, l'interpréteur Python en ligne de commandes, alors taper simplement le nom de la variable l'affiche directement dans l'interpréteur
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> a=5
    >>> a
    5
    >>> print(a)
    5

    Mais dans un script, alors le nom de la variable n'a aucun effet. L'instruction est exécutée mais ne va pas à l'écran. Pour avoir un affichage écran il est impératif de passer par print().

    Sinon je ne sais pas ce que fait rectangle() mais la syntaxe de son appel a l'air correcte (en tout cas le nom des variables est bon).

    Citation Envoyé par ilaomxp Voir le message
    + merci beaucoup pour les conseils de la deuxième partie de ta réponse, un jour j'essayerai de faire comme ça
    Un jour probablement pas super loin...
    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
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Salut,
    Citation Envoyé par marco056 Voir le message
    Elles veulent dire quoi, les lignes 2 et 3 ?
    Citation Envoyé par Sve@r Voir le message
    Comme le dit marco056, les lignes 2 et 3 ne veulent rien dire.
    Étant donné que nous n'avons pas tout le code on ne peut être sûr mais on peut supposer que ces deux lignes servent à initialiser les dimensions d'une fenêtre qui sera "crée" juste après avec l'instruction : cree_fenetre(largeurFenetre,hauteurFenetre)...

    Sinon j'ai essayé de trouver quel était le moyen qui était utilisé pour dessiner les rectangles (dans une fenêtre apparemment), je me disais que cela devait être connu (pas de moi car je débute) et que j'allais trouver ça tout de suite mais non...

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Étant donné que nous n'avons pas tout le code on ne peut être sûr mais on peut supposer que ces deux lignes servent à initialiser les dimensions d'une fenêtre qui sera "crée" juste après avec l'instruction
    Non, on ne peut pas. Ecrire dans un script var sans rien d'autre ne sert à rien. Soit on veut y mettre une valeur et on écrit var=qqchose, soit on veut s'en servir et on écrit expression utilisant var ("var" étant un nom générique de "variable" et pouvant bien évidemment s'appliquer à un élement de tableau).
    Quelle que soit la façon de tourner ça, les lignes 2 et 3 ne servent à 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]

  11. #11
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah ah je viens de comprendre, on ne parlait pas des mêmes lignes, je croyais que vous parliez des lignes 2 et 3 du code du premier message :

    Citation Envoyé par ilaomxp Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if __name__ == '__main__':
        largeurFenetre=400
        hauteurFenetre=400
        cree_fenetre(largeurFenetre,hauteurFenetre)
     
       ...
    On voit juste après les lignes 2 et 3 l'instruction : cree_fenetre(largeurFenetre,hauteurFenetre) dont je parlais...

    Mais c'est vrai aussi que de mon coté je n'ai pas non plus bien fait attention au fait que tu ne parlais pas des variables largeurFenetre et hauteurFenetre...

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/11/2018, 12h01
  2. [XL-2010] Afficher des variables en fonction d'une liste déroulante ou de checkbox
    Par sedalc dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/07/2015, 17h30
  3. Réponses: 3
    Dernier message: 17/03/2008, 10h15
  4. [SQL] Récupérer des variables d'une liste déroulante
    Par jermel2 dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 25/06/2007, 18h21
  5. [MySQL] Récupérer des variables via plusieurs tables (32 au total ^^)
    Par streeter dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/05/2006, 17h14

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