diff --git "a/projet interm\303\251diaire/2. Usine de voiture/Exemple/Capture d'\303\251cran 2024-08-13 151016.png" "b/projet interm\303\251diaire/2. Usine de voiture/Exemple/Capture d'\303\251cran 2024-08-13 151016.png" new file mode 100644 index 0000000..b38465f Binary files /dev/null and "b/projet interm\303\251diaire/2. Usine de voiture/Exemple/Capture d'\303\251cran 2024-08-13 151016.png" differ diff --git "a/projet interm\303\251diaire/2. Usine de voiture/Exemple/Couleur.py" "b/projet interm\303\251diaire/2. Usine de voiture/Exemple/Couleur.py" new file mode 100644 index 0000000..e036020 --- /dev/null +++ "b/projet interm\303\251diaire/2. Usine de voiture/Exemple/Couleur.py" @@ -0,0 +1 @@ +print('\033[92m' + 'Bonjour !\n' + '\033[0m' + 'Me voila de retour sur une couleur par défaut !') \ No newline at end of file diff --git "a/projet interm\303\251diaire/2. Usine de voiture/README.md" "b/projet interm\303\251diaire/2. Usine de voiture/README.md" new file mode 100644 index 0000000..c49347c --- /dev/null +++ "b/projet interm\303\251diaire/2. Usine de voiture/README.md" @@ -0,0 +1,36 @@ +# Usine de voiture + +## Introduction +Bienvenue dans ce projet où vous allez fabriquer une "usine de voiture" en s'aidant d'une class. Il s'agit d'un niveau intermédiaire qui peut être réalisé par des débutants si la notion de class est acquise. + +## Instructions +Suivez les étapes ci-dessous pour réaliser ce projet : + +1. **Class usine** : créer une class `Usine` prenant en paramètre les informations suivantes : + - Le modèle (en `str`) + - La couleur (en `str` et par défaut vaut `noir`) + - La puissance (en `int` qui représentera les chevaux) + - Le poid (en `float` en kg) + +2. **Conversion du format `str` de la couleur** : à parti du texte fournit par l'utilisateur à l'initialisation de la class, convertir le texte en un nombre de 90 à 96 à partir des séquences d'échappement ANSI. + +3. **Afficher individuellement les caractéristiques** : à partir de propriétés, créer 4 propriétés servant à afficher dans la console la propriété demandé. (pour la couleur, il faut un affichage en couleur dans la console) + +4. **Afficher les caractéristiques** : à partir d'une fonction, afficher l'intégralité des caractéristiques de la voiture. + +5. **Essayer le code** : Faites 3 configurations de voiture ayant des caractéristiques différentes et affichez les comme dans l'exemple ci-dessous + +## Exemple +Exemple rendu + +## Indices +Pour afficher un text en couleur dans la console, vous pouvez utiliser le format suivant : +`\033[...m` + +Vous devez remplacer les `...` par un nombre pour afficher une couleur. (Vous pouvez vous amuser à remplacer ce nombre par un nombre random pour voir le résultat) +Si vous renseignez `0`, les modifications reprendrons leur état par défaut. + +Ex : +```python Exemple\Couleur.py``` + +Ce fichier "README.md" sert de guide pour les utilisateurs qui souhaitent participer à votre projet en créant ce programme d'usine de voiture. Vous pouvez le personnaliser davantage en fonction de vos besoins. \ No newline at end of file diff --git "a/projet interm\303\251diaire/2. Usine de voiture/solution/programme.py" "b/projet interm\303\251diaire/2. Usine de voiture/solution/programme.py" new file mode 100644 index 0000000..2f36af9 --- /dev/null +++ "b/projet interm\303\251diaire/2. Usine de voiture/solution/programme.py" @@ -0,0 +1,106 @@ +from typing import Final +''' +Solution au projet Usine de voiture. + +Ce que vous allez voir est une des solutions possibles pour résoudre cet exercice. +''' + + +#Création de notre dictionnaire des couleurs (plusieurs possibilité pour régler ce problème) +couleurs = { + 'noir': 90, + 'rouge': 91, + 'vert': 92, + 'jaune': 93, + 'bleue': 94, + 'rose': 95, + 'cyan': 96, +} + + +#Création de la class Usine +class Usine: #les parenthèses ne sont pas obligatoire quand la class n'est pas définie comme une class enfant. + + def __init__(self, modele: str, puissance: int, poid: float, couleur: str = 'noir'): #fonction essentielle d'une class pour initialiser des variables qui hériteront des paramètres renseignés + """ + *Mais pourquoi on ne choisirait pas un nom de variable plus facile à écrire pour aller plus vite ?* + + C'est une très bonne question que nous avons la. Choisir avec partimonie le nom de ses fonctions permet de + retrouver plus facilement à quoi les servent, mais rien ne vous empêche de les nommées comme vous le voulez. + Par ailleurs, si votre code est destiné à être réutilisé par un autre developer ou par vous dans plusieurs années, + vous serez bien content d'avoir mis des noms explicites pour vous retrouver plus facilement x) + """ + self.__modele : Final[str] = modele + self.__puissance: Final[int] = puissance + self.__poid: Final[float] = poid + self.__couleur: Final[int] = self.convertir_couleur(couleur) #on appelle une fonction pour définir la variable + + def convertir_couleur(self, couleur: str) -> int: + + couleur = couleur.lower() #La fonction lower() permet de transformer tous les caractères majuscules en minuscules pour ne pas avoir de problème sur la casse + + if couleur in couleurs.keys(): + return couleurs[couleur] + + raise ValueError(f"La couleur {couleur} n'est pas disponible !") #renvoi une erreur si la couleur n'est pas disponnible + + + def montrer_ressources(self) -> None: + + print( + f"Vos caractéristiques de voiture :\n" + f"Modèle : {self.__modele}\n" + f"Puissance en chevaux : {self.__puissance}\n" + f"Poid : {self.__poid} kg\n" + f"Couleur : " + + f"\033[{self.__couleur}m" + + f"{self.__couleur}" + + "\033[0m" + ) + + # On définit les propriétés + @property + def poid_(self) -> float: + return self.__poid + + @property + def puissance_(self) -> int: + return self.__puissance + + @property + def modele_(self) -> str: + return self.__modele + + @property + def couleur_(self) -> int: + return self.__couleur + + +''' +Utilisation de cette class : + +Imaginons que nous voulons 3 voitures différentes voulant sortir de l'usine +''' + + +voiture_1 = Usine(modele='Renaud', puissance=120, poid=1200) #première voiture définit sans couleur +voiture_2 = Usine(modele='Peugeot', puissance=90, poid=1050, couleur='vert') +voiture_3 = Usine(modele='Tesla', puissance=230, poid=1800, couleur='Cyan') + +''' +Afficher les informations des 3 voitures : +''' + +for voiture in (voiture_1, voiture_2, voiture_3): #on boucle sur les 3 voitures pour récupérer l'objet "Usine" + + print(f"Informations pour la voiture {voiture.modele_} :\n") #On utiliser la propriété "modele_" pour afficher uniquement le nom du modèle actuel de voiture + voiture.montrer_ressources() #On montre toutes les ressources à partir d'un appel de fonction + print("--------------------------------------------") + + + + + + + +