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 :

Boucles for imbriquées et listes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Par défaut Boucles for imbriquées et listes
    Bonjour, j'éprouve quelques difficultés à faire un exercice de mon cours de programmation en python, je dois réaliser l'image suivante en utilisant une liste multi-dimmensionnelle et des boucles imbriquées pour pouvoir mettre le bon symbole ('*' ou ' '(espace)) au bon endroit en fonction de la dimension. Avec print, je suis capable de le réaliser mais j'ai de la difficulté à comprendre le fonctionnement de 2 boucles for imbriquées, surtout lorsqu'on itère sur une liste multi-dimensionnelle. Nom : fenetre.PNG
Affichages : 3854
Taille : 47,8 Ko

    Mon code ne fonctionne pas, mais le voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def fenetre(dim):
        ma_liste = [[' ' for x in range(dim)] for y in range(dim)]
        for i in ma_liste:
            for j in ma_liste:
                if i ==0 or i ==dim//2 or i == dim-1 or j ==0 or j ==dim//2 or j == dim-1:
                    ma_liste[i][j] = '*'
    Merci d'avance!

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Si votre code avec print fonctionne et produis le résultat attendu alors montrez le.

    Sinon là vous avez un tableau de caractère (soit c'est espace, soit c'est étoile). Votre tableau est en faite une liste de liste. Le premier niveau de liste c'est la liste des lignes. Et ensuite chaque ligne est elle même une liste puisque contient plusieurs caractères.

    Au lieu d'appeler les chose i, j et ma_liste, vous feriez mieux de choisir mieux vos noms et vous comprendriiez. Par exemple prenez tableau, ligne et caractère.

    Et tant que vous y êtes faites un print de i et j, et vous vous rendrez vite compte que ce ne sont pas des indices, car ce n'est pas comme cela qu'on itère sur les indices d'une liste.

  3. #3
    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

    Ton code tel qu'on le comprend commence par créer un tableau d'espaces, puis certains éléments dudit tableau deviennent des étoiles. Admettons. Mais il n'y a aucune instruction qui indique à un moment où à un autre "affiche quelque chose à l'écran". Donc même si tout était correctement écrit, tu n'aurais rien à l'écran.

    Et en ce qui concerne la syntaxe pure, comme le dit lg_53, une instruction du type for i in iterable ne donne pas "i" indice de l'itérable mais "i" valeur de chaque élément de l'itérable (cf ton cours).

    PS: c'est de toi l'instruction ma_liste = [[' ' for x in range(dim)] for y in range(dim)] ? Parce que c'est une instruction de haute voltige et qu'elle est en désaccord total avec ton niveau montré par le reste de ton code...
    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
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 2
    Par défaut
    Bonjour et merci pour vos réponses, oui je me suis mêlé pour mes boucles for, pour pouvoir avoir l'index, je serais donc mieux d'utiliser 2 boucles while? Et non j"ai vu en en cherchant comment faire un tableau de liste, je me suis dit que ce serait plus facile pour moi de visualiser comment faire mon code, pensez vous que je serais mieux d'utiliser une liste vide et utiliser append pour ajouter les éléments, si c'est faisable?

  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
    Citation Envoyé par ben1404 Voir le message
    pour pouvoir avoir l'index, je serais donc mieux d'utiliser 2 boucles while?
    Pas forcément. for i in range(len(liste)) (que tu as déjà utilisé en première ligne ce qui d'ailleurs renforce ma question PS) te donne un indice qui itèrera sur chaque position des élément de la liste.
    Et n'oublie pas que si tu as un "i" qui itère sur "liste" (dimension verticale), alors ton "j" ne doit pas itérer sur "liste" mais sur "liste[i]" (dimension horizontale).

    Citation Envoyé par ben1404 Voir le message
    pensez vous que je serais mieux d'utiliser une liste vide et utiliser append pour ajouter les éléments, si c'est faisable?
    Mieux pas forcément. Bon ça n'a que peu d'influence dans cet exo mais le append() est une opération coûteuse en traitement. Moi j'aimais bien l'idée de tout créer à vide et de ne remplir que ce qu'il faut.
    Mais ce qui est vraiment important c'est que déjà tu y arrives d'une façon ou d'une autre. L'optimisation viendra ensuite.
    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. Boucles for imbriquées
    Par The eye dans le forum ASP
    Réponses: 2
    Dernier message: 19/07/2007, 12h00
  2. Boucle for imbriqué
    Par boula dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/07/2007, 12h42
  3. 2 boucles for imbriquées
    Par karimphp dans le forum Langage
    Réponses: 8
    Dernier message: 02/12/2006, 14h46
  4. Batch - Deux boucle For imbriquées plus un FC
    Par Lorponos dans le forum Windows
    Réponses: 17
    Dernier message: 27/07/2006, 14h58
  5. [Syntaxe] Boucle For imbriquées en 1.5
    Par Piolet dans le forum Langage
    Réponses: 5
    Dernier message: 09/01/2005, 00h49

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