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 :

Pyramide exercice débutant


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Par défaut Pyramide exercice débutant
    Bonjour, dans le cadre de mon cours on nous a posé un problème à savoir celui de former une pyramide de la forme de celle du screenshot 1, je parviens avec mon code (screenshot2) à générer une pyramide avec effet miroir mais je ne parviens pas à adapter les nombres correctement est-ce que quelqu'un pourrait me donner UNE PISTE pour la résolution de ce problème par rapport à mon code svp?
    Nom : Capt1.png
Affichages : 484
Taille : 80,4 KoNom : Capt2.png
Affichages : 611
Taille : 31,3 Ko

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

    Citation Envoyé par WizzyK Voir le message
    est-ce que quelqu'un pourrait me donner UNE PISTE pour la résolution de ce problème par rapport à mon code svp?
    Vous avez commencé à coder sans avoir une idée précise de comment fabriquer ce qu'on vous demande!
    Regardez la pyramide, à la ligne n, il y a z = 2*(n-1)+1 chiffres.... qui sert aussi a fixer la valeur du "milieu".
    Et il y a une petite difficulté pour n >= 6 qui pourra faire l'objet d'une autre question.

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

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Par défaut
    Je conceptualise assez bien ce qu'il faut faire sur papier mais je n'arrive pas à utiliser les boucles correctement en effet, pour dire vrai je suis complètement perdu même le résultat trouvé dans le screenshot a été trouvé par tâtonnements ...

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    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 752
    Par défaut
    Citation Envoyé par WizzyK Voir le message
    mais je n'arrive pas à utiliser les boucles correctement en effet, pour dire vrai je suis complètement perdu même le résultat trouvé dans le screenshot a été trouvé par tâtonnements ...
    C'est un sujet de boucles imbriquées.
    Commencez par la boucle interne (ou la boucle externe), vous avez écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(1, n+1, 2):
          ...
    Que représente ce i par rapport au problème posé?

    Par contre si j'écris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in range(n):
        j = 2*i+1
        print (i+1, j)
    ça affiche n lignes numérotées de 1 à 10 avec le nombre de chiffres à écrire.

    La boucle interne devra se baser sur i, j (et n) pour faire le boulot qu'on attend d'elle.

    - 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 837
    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 837
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par WizzyK Voir le message
    Je conceptualise assez bien ce qu'il faut faire sur papier mais je n'arrive pas à utiliser les boucles correctement
    Si je lis bien ton code, tu commences par boucler à l'horizontale (donc tu commences par la boucle qui affiche la ligne) et à chaque valeur tu boucles à la verticale.
    Bref tu affiches le résultat colonne par colonne. Ca peut probablement se coder (ça reste un problème fini) mais ça va être galère. Moi je serais parti à afficher ligne par ligne.
    Et pour le reste, si tu veux qu'on t'aide, commence par poster un code (un truc qu'on peut copier/coller) et non une image peu utilisable (c'est d'ailleurs mentionné dans les règles).
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 4
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Si je lis bien ton code, tu commences par boucler à l'horizontale (donc tu commences par la boucle qui affiche la ligne) et à chaque valeur tu boucles à la verticale.
    Bref tu affiches le résultat colonne par colonne. Ca peut probablement se coder (ça reste un problème fini) mais ça va être galère. Moi je serais parti à afficher ligne par ligne.
    Et pour le reste, si tu veux qu'on t'aide, commence par poster un code (un truc qu'on peut copier/coller) et non une image peu utilisable (c'est d'ailleurs mentionné dans les règles).
    Toutes mes excuses,

    en effet c'est ce que j'avais en tête, pour répondre à Wiz, le i par rapport au problème représente la ligne ou du moins c'est ce que j'ai essayé de traduire lorsque i vaut 1 on commence par les espaces puis par les chiffres à afficher, lorsque i vaut 2 on suit la même logique sur la 2ème ligne mais avec un pas de 2 puisque il y'a un nombre impair de chiffres et que je souhaite dans ma boucle imbriqué invoquer i pour représenter à chaque fois un nombre impair de chiffres correspondant à la ième ligne.

    J'ai trouvé une solution et la décortique ce qui n'est pas du tout la meilleure forme d'apprentissage mais je calais dessus depuis un bon moment, j'ai beaucoup de mal à traduire le concept suivant :
    i ème ligne ===> 2(i-1) + 1 colonnes ===> commence par le j ème chiffre vous aurez compris dans la dernière implication que je ne sais pas trop comment placer mon j pour que la boucle suive les deux premières.

    Vient ensuite le problème du "miroir" autour de la valeure centrale de la ième ligne, j'ai tenté un if statement mais les corrections sur lesquelles je suis tombé n'embrayent pas du tout de ce côté là j'ai réalisé mon erreur en comprenant que rien ne m'oblige à considérer les lignes comme "entières" je peux en effet remplir une ligne en 2 étape distinctes.

    Lors de ma mise en situation du problème devrais-je me focaliser sur la colonne centrale ? Dans le sens où j'ai l'impression que c'est l'élément qui conditionne tout le problème, incrément positif à gauche négatif à droite, ième ligne contient 2(i-1) + 1 chiffres ...

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 837
    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 837
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par WizzyK Voir le message
    Lors de ma mise en situation du problème devrais-je me focaliser sur la colonne centrale ? Dans le sens où j'ai l'impression que c'est l'élément qui conditionne tout le problème, incrément positif à gauche négatif à droite, ième ligne contient 2(i-1) + 1 chiffres ...
    Il faut te focaliser sur le numéro "n" de la ligne en cours (et aussi prendre en compte le total de lignes demandées). Si on lit chaque ligne de la gauche vers la droite (sens qui me semble être celui de la majorité des écritures humaines et qui, surtout, est celui suivi par print()), chaque ligne "n" se décompose en 5 parties
    • les espaces (il y en a "t-n")
    • les chiffres qui partent de "n" (inclus) et qui vont jusqu'à 2n-1 (exclu)
    • le chiffre central égal à 2n-1
    • les chiffres qui partent de 2n-1 (exclu) et qui redescendent jusqu'à "n" inclus. Donc, pour s'adapter à Python qui prend la borne de départ incluse et la borne d'arrivée exclue, qui vont alors de 2n-2 (inclus) et qui redescendent jusqu'à "n-1" (exclu)
    • les "t-n" espaces
    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]

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 063
    Par défaut
    Citation Envoyé par Sve@r
    Pour utiliser center il est nécessaire de créer la ligne de chiffres d'un seul tenant pour pouvoir la centrer à l'affichage.
    Pas créer, construire à partir d'une partie gauche et une partie droite, c'est de la concaténation...

    Partir de la solution du PO c'est bien, connaître les astuces et les fonctions python qui font ça aussi bien, c'est de la culture

Discussions similaires

  1. [VB6] Exercice de Combinatoire
    Par fichtre! dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 19/01/2005, 14h27
  2. Un cours de C/C++ avec exercices corrigés
    Par merrheim dans le forum C++
    Réponses: 65
    Dernier message: 18/01/2005, 22h30
  3. Demande de corrections d'exercices Turbo Pascal
    Par Helpine dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 16/01/2005, 10h38
  4. Pages d'exercices à faire pour l'autoformation ?
    Par [thebadskull] dans le forum Evolutions du club
    Réponses: 13
    Dernier message: 15/06/2004, 20h26
  5. 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