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
Partager