Niveau : Terminale générale, enseignement de spécialité NSI
DM à rendre avant le
Le propriétaire d’un FoodTruck de Pizza, désire gérer ses commandes et éditer la facture pour ses clients.
Il souhaite également offrir la pizza la moins chère de la commande lorsque le client a accumulé au moins 10 points de fidélité, correspondant à l’achat de 10 pizzas.
Dans le cadre de ce projet, vous êtes chargés de programmer la méthode constructeur, d’analyser la méthode Commande, de compléter la méthode Pizza_la_moins_chere, et programmer partiellement la classe Client permettant de réaliser le programme en langage python et proposer des solutions.
Client
Q1. Ecrire la méthode constructeur permettant d’instancier un Client portant votre prénom en remplaçant la variable
votre_prenom
et l'argument par votre prenom
Q2. La méthode Commande prenant en paramètre lui-même, une liste de 2-uplets, une chaine de caractères et l’heure de réception :
a) Placer une instruction print dans cette méthode permettant de voir le contenu de l'attribut prix, relever son contenu, son type et expliquez ce qu'elle contient.
b) Placez un # devant l'instruction print pour qu'elle ne s'exécutera plus
Q3. Appeler la méthode Mystere puis proposer pour cette méthode un autre nom que Mystere en rapport avec son rôle et un "docstring"
Q4. Ajoutez la méthode Ajoute_points prenant en paramètre lui-même et un entier : le nombre de pizzas achetées et retourne le nouveau nombre de points acquis.
Q5. Complétez la méthode Pizza_la_moins_chere qui prend en paramètre lui-même et retournera un entier correspondant l’indice de la pizza la moins chère de l’attribut prix.
L’attribut prix contient la liste des prix des pizzas commandées
Par exemple self.prix= [10,8.0,10.5,9.5].
Avec l’attribut prix de l’exemple précédent la méthode retourne 1 : l’indice de la pizza à 8.0 Euros, qui est la moins chère de la liste.
Q6. Ajouter la méthode Statut qui prend en paramètre lui-même et renvoie une chaine de caractères "Commande prête" si l'attribut prete est vrai sinon renvoie la chaine de caractères "Préparation en cours"
Q7. Ajouter la méthode Commande_prete prenant en paramètre lui-même, elle permettra faire passer l'attribut prete à True et ne retournera rien
Q8. Ajouter la méthode Modifier_commande prenant en paramètre lui-même, la liste de commande modifiée et l'heure. On ne peut modifier la commande que s'il existe déjà une commande et qu'elle n'est pas encore prête.
Elle renverra une chaine de caractères "
Q9. Ajouter à la méthode spéciale __str__ les fonctionnalités suivantes :
S'il y a une commande en cours et qu'elle n'est pas prête alors lister la commande du client
Sinon Afficher la facture, mettre à jour les points fidélité et retrancher à au total la pizza offerte si le solde de points est supérieur ou égal à 10. Pensez alors à retrancher les 10 points fidélité. Utiliser une chaine de caractères vide et ajoutez le texte au fur et a mesure "\n" permet le retour à la ligne.
Un attribut pt contiendra le prix total à payé afin d'être accessible dans les autres méthodes
Exemples: si Bob a une commande en cours et n'est pas encore prête : print(Bob) devra retourner le message suivant :Commande de Bob pour 19h00 1 Reine 2 merguez
Si la commande est prête, il faudra éditer la facture : print(Bob) devra retourner le texte suivant :
Facture de Bob vous avez 4 points fidélité : 6 3fromages 60 € 2 merguez 17.0 € 8 pizzas pour un total = 77.0 € La pizza merguez est offerte : 8.5 € Reste à payer 68.5 € nouveau solde de points fidélité : 2
Q10. Ajouter une méthode Paye prenant en paramètre lui-même et un flottant : le montant payé par le client
Exemple : print(Bob.Paye(70))
Bob a payé 70 € à rendre 1.5 €
Q11. Ajouter à la classe Client un attribut Client.recettes initialisé à 0. On ajoutera à cette variable la somme que tous les clients auront payée.
Q12. Ajouter un attribut Historique : une liste vide à l'instanciation qui contiendra les sommes payées par chaque client
Q13. Ajouter au programme principal les lignes de code permettant de tester les méthodes, afficher la recette et l'historique d'un client
Fond : Texte : Tables : Thème Python:
Contenu
sous licence CC BY-NC-SA 3.0
Pascal Hassenforder 14/10/2022
Mise à jour du 06/11/2022