Programme Python

Retrouver tous les sujets résolus.
Répondre
Bertrand

Programme Python

Message par Bertrand » mar. 10 nov. 2020 15:52

Bonjour à tous !

Bon en fait j'ai un exercice de programmation qui me pose souci.
Il est en pièce jointe.
exercice_maths.png
En gros le problème c'est que j'ai aucune idée de la manière dont il faut procéder pour le programme.
J'ai pas d'idée de structure de programme...

Comment puis je donc faire ?
Comme en cours on vient d'aborder les conditions (if...), je pense qu'il y a de ça dans le programme. Mais c'est tout...

J'ai quand-même commencé comme ça :

Code : Tout sélectionner

def monnaie (montant, recu):
    rendu=recu-montant
avec montant = c'est ce que doit payer l'utilisateur
reçu = c'est ce que donne l'utilisateur
rendu = c'est ce que doit l'utilisateur à la machine.

Pourriez-vous me donner quelques indices pour la suite du programme svp ?

Merci, ça m'aiderait grandement ! et j'ai un deuxième exo sur lequel je bloque, je le poste dans un autre message.
SoS-Math(34)
Messages : 593
Enregistré le : ven. 17 nov. 2017 09:31

Re: Programme Python

Message par SoS-Math(34) » mar. 10 nov. 2020 17:59

Bonjour Bertrand,

Prenons un exemple. Si la somme donné est de 20 euros et la somme à payer est de 11,70 euros.
La somme à rendre est donc de 820 centimes d'euros.
Comme tu veux minimiser le nombre de pièces à rendre, tu vas chercher combien de pièces de 2 euros sont à rendre, puis de 1 euro...
830 = 200 * 4 + 30 donc 4 pièces de 2 euros seront rendues...
30 = 20*1 + 10 donc 1 pièce de 20 centimes
et une pièce de 10 centimes.
Il y a donc une notion de quotients et de restes liés à des divisions euclidiennes.
Pour info, en langage Python : a%b est le reste de a dans la division euclidienne par b.
a//b donne le quotient
Bonne recherche,
Sosmaths
Invité

Re: Programme Python

Message par Invité » jeu. 12 nov. 2020 20:36

Merci beaucoup, je saisis mieux le problème grâce à cet exemple.

Donc déjà il faudrait convertir les euros en centimes ?
Par contre, où placer la boucle if ?

Je ferais quelque chose du genre :

if rendu!=0:
reste=rendu%200

suis-je sur la bonne voie ?
sos-math(21)
Messages : 8789
Enregistré le : lun. 30 août 2010 11:15

Re: Programme Python

Message par sos-math(21) » jeu. 12 nov. 2020 21:24

Bonjour,
je te conseille dans un premier temps de faire le test de supériorité du montant versé par rapport au montant à payer.
Une fois que cela est établi, tu convertis tous tes montants en centimes et en type 'int' de Python afin de manipuler des entiers, cela t'évitera des mauvaises surprises du genre

Code : Tout sélectionner

>>>(50-11.70)*100
3829.9999999999995
ce qui renverrait ensuite 3829 plutôt que 3830
Il te reste ensuite à former la différence puis à faire les tests de divisions
Tu peux stocker les éléments obtenus dans une liste.
Je te fais le début :

Code : Tout sélectionner

def rendu_monnaie(montant_euros,recu_euros):
    """renvoie le rendu de monnaie"""
    liste = []
    rendu_euros = recu_euros - montant_euros
    if  rendu_euros < 0 :
        return "Somme versée insuffisante"
    else:
        montant = int(montant_euros*100)
        recu = int(recu_euros*100)
        rendu = recu - montant
        nb_200 = rendu // 200
        if nb_200 != 0:
            liste.append(("pièces de 2 euros : ",nb_200))
        reste_200 = rendu  % 200
        nb_100 = reste_200 // 100
        # on recommence avec le nombre de pièces de 1 euros..
        #...
        
        return liste
Il y a sûrement plus simple mais cela doit fonctionner :

Code : Tout sélectionner

rendu_monnaie(11.70,50)
3830
Out[45]: 
[('pièces de 2 euros : ', 19),
 ('pièces de 20 cts : ', 1),
 ('pièces de 10 cts : ', 1)]
Bonne continuation
Invité

Re: Programme Python

Message par Invité » jeu. 12 nov. 2020 23:13

Bonsoir

waw merci beaucoup, ce programme est super intéressant et en plus je crois l'avoir compris.
Je vais le regarder d'ici la fin de la semaine plus attentivement quand j'aurai plus de temps.

Merci ! puis je vous poser des questions si besoin ?
sos-math(21)
Messages : 8789
Enregistré le : lun. 30 août 2010 11:15

Re: Programme Python

Message par sos-math(21) » ven. 13 nov. 2020 11:09

Bonjour,
le principe suivi est simple : on effectue une série de division euclidiennes pour récupérer les pièces nécessaires pour chaque catégorie.
C'est un peu long car il y a 5 types de pièces mais c'est faisable.
Sos-math est à ta disposition pour d'autres questions.
Bonne continuation
Répondre