Code python contient des erreurs , méthode non correct
Résolu/Fermémamiemando Messages postés 33553 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 7 mars 2025 - 24 févr. 2023 à 03:19
- Code python contient des erreurs , méthode non correct
- Citizen code python - Accueil - Outils
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
2 réponses
Bonsoir,
Le code de ta méthode n'a pas de sens, tu définis un set de strings (pourquoi un set ?), et juste à la suite tu compares ce set à de simple chaines, déjà tu entreras toujours dans le else.
Il manque donc forcément l'initialisation de valeurs dans ta classe, detail devrait être un attribut de classe et non une simple variable, il faudrait décrire ce que doit faire ton code, une classe HardwareGeek dérivée de EmployeeHardware semble quand même pas très logique.
24 févr. 2023 à 03:19
Bonjour,
Pour commencer, ce serait bien de partager un code minimal qui met en évidence le problème. Les seules lignes utiles sont :
class HardwareGeek(EmployeeHardware): price = 0 def pricing_intel(self): self.price = 65 return self.price # pass def pricing_mac(self): detail = {"achat matériel MAC", "configuration matériel", "installation chez client"} if detail == "achat matériel MAC": self.price = 75 if detail == "configuration matériel": self.price = 50 elif detail == "installation chez client": self.price = 50 else: self.price = 75
Ensuite je pense que ton problème vient de la manière dont ta classe est déclarée.
Comme l'indique rusti #1, tu compares un ensemble de chaîne avec une chaîne. Tes tests d'égalités sont donc toujours faux et tu es donc systématiquement dans le "else". Ensuite, quel est l'intérêt d'écrire une méthode qui ne dépend d'aucun paramètre. J'ai l'impression que ta méthode devrait dépendre d'un paramètre détail, contrôler si elle est bien dans l'ensemble des détails valides, puis faire le test.
Enfin, la manière dont tu initialises ta classe me paraît suspecte. Je t'invite à écrire un constructeur. Je pense que tu confonds attributs de classe (spécifique à une instance de classe) et variable de classe (commune à toutes les instances de cette classe). Voir cette discussion.
Je ne sais pas si c'est ce que tu veux faire, mais si c'est le cas, ta classe devrait plutôt ressembler à ceci :
class HardwareGeek(EmployeeHardware): def __init__(self): price = 0 def pricing_intel(self): self.price = 65 return self.price def pricing_mac(self, detail): if detail not in { "achat matériel MAC", "configuration matériel", "installation chez client" }: raise ValueError(detail) if detail == "achat matériel MAC": self.price = 75 if detail == "configuration matériel": self.price = 50 elif detail == "installation chez client": self.price = 50 else: self.price = 75
Bonne chance