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 :

Aide pb python apprentissage


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Geomaticien
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Geomaticien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Par défaut Aide pb python apprentissage
    Bonjour à vous communauté de développeurs !

    Je commence depuis à peine une semaine à apprendre les bases de python. Je prends les cours, et je dois avouer que j'ai un problème concernant un problème, a priori, basique, mais je seche

    Enonce :
    Votre programme doit lire un entier nbMarchands (non nul) puis les nbMarchands entiers suivants, qui indiquent le prix des galettes chez chaque marchand, de la position 1 à la position nbMarchands. Votre programme devra ensuite afficher la position du plus petit de ces prix. En cas d'égalité entre deux prix, on prendra la position la plus grande. Tous les prix et positions sont positifs et ne dépassent pas 1 million.

    Exemple : Entrée
    6
    12
    11
    9
    11
    9
    15

    Sortie : 5
    Commentaires
    Parmi ces 6 marchands, c'est le 5ème qui vend ses galettes le moins cher, à 9 euros la galette. Il est à égalité avec le 3e marchand, mais on préfère le 5e qui est le plus près du bout de la rue.

    Alors voici comment je pensai résoudre cette enigme. Je dois utiliser, a priori, que des boucle (for loop in range, ainsi que des conditions if - Je n'ai pas vu d'autre chose que cela).

    nb_marchand= int(input())
    marchand_gagne = 0
    num_marchand = 0
    meilleur_prix = 1000000
    for loop in range(nb_marchand):
    ---prix= int(input())
    ---num_marchand = num_marchand + 1
    ---if prix <= meilleur_prix:
    ------meilleur_prix = prix
    ------marchand_gagne = num_marchand
    ---else:
    ------meilleur_prix = meilleur_prix
    ------marchand_gagne = num_marchand - 1
    print(marchand_gagne)

    Voici mon raisonnement pour l'instant :
    1/ Donne moi le nombre de marchands
    2/ marchands_gagne = La position du marchands que j'irais voir
    3/ Le numéro des marchands (présent ds ma boucle à venir)
    4/ meilleur_prix : Le prix que je trouverai le plus interessant. Par définition, je le met express au max à savoir1000000
    5/ Je commence une boucle sur le nb_machands
    A chaque marchands, j'obtiens un prix. Je rajoute +1 à mon num marchand pour savoir à quel numéro de marchands ce prix corresppond

    Puis je rajoute une condition à ma boucle
    Si mon prix renseigné est plus petit ou égal que mon meilleur prix, alors mon meilleur prix prend la valeur de mon prix tapé, ET la valeur de mon n° de marchand = le marchands gagné
    Sinon, le meilleur meilleur prix reste le meilleur prix (ne change pas de valeur) et mon n° de marchand -1
    Au final, affiche moi le marchant gagné.

    Ca, c'est mon raisonnement !
    Si je tape les valeurs de l'exemple dans python tutor, la sortie est juste. En revanche, si je rentre des valeurs (dans une boucle de 3) de 7/8/10, ca ne fonctionne pas (logique).

    Comment pourrais-je finir ce problème, par quel astuce ? Mon raisonnement est-il bon ou suis-je parti du mauvais côté ??

    Merci de vos retours !

    hollowspy

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    795
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 795
    Par défaut
    Bonjour

    Je n'arrive pas à comprendre à quoi sert la partie "Sinon"

    Pouvez vous me l'expliquer plus en détail?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Geomaticien
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Geomaticien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Par défaut
    Posté trop vite,

    Solution trouvé via ce 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
    nb_marchand= int(input())
    marchand_gagne = 0
    num_marchand = 1
    meilleur_prix = 1000000
    for loop in range(nb_marchand):
        prix= int(input()) 
        if prix <= meilleur_prix:
            meilleur_prix = prix
            marchand_gagne = num_marchand
        else:
            meilleur_prix = meilleur_prix
            marchand_gagne = marchand_gagne
        num_marchand = num_marchand + 1
    print(marchand_gagne)

    Désolé du dérangement !!

  4. #4
    Membre à l'essai
    Homme Profil pro
    Geomaticien
    Inscrit en
    Novembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Geomaticien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 4
    Par défaut
    Oui, merci du retour. En effet, il sert à rien

    Disons dans ma tête que dès que je met un "if", automatiquement je dois mettre un "else". Or, a priori, ici, il n'a aucun sens car les valeurs sont les mêmes.

    Merci bien

  5. #5
    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
    Ecrire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    meilleur_prix = meilleur_prix
    marchand_gagne = marchand_gagne
    ne sert à rien non plus. Autant ne rien écrire !


    PS: Utilise le bouton [CODE] (petit icone avec un #), pour poster du code, c'est plus lisible

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

Discussions similaires

  1. Aide sous Python 3.1
    Par david1865 dans le forum Général Python
    Réponses: 5
    Dernier message: 13/09/2010, 12h21
  2. aide programme python!
    Par ano33 dans le forum Général Python
    Réponses: 4
    Dernier message: 28/04/2010, 16h54
  3. aide exercice python
    Par cedric190985 dans le forum Général Python
    Réponses: 2
    Dernier message: 24/03/2010, 12h57
  4. Aide Syntaxe Python
    Par ziska dans le forum Général Python
    Réponses: 15
    Dernier message: 03/10/2009, 08h52
  5. Aide sur python et CGI dans un cas particulier
    Par Papaillou dans le forum Réseau/Web
    Réponses: 0
    Dernier message: 11/04/2009, 17h37

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