Afficher des attributs de classe avec des print (2)

Résolu/Fermé
thestraw0 Messages postés 4 Date d'inscription mercredi 12 octobre 2022 Statut Membre Dernière intervention 12 octobre 2022 - Modifié le 17 oct. 2022 à 14:49
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 13 oct. 2022 à 01:01

Hello,

Je suis élève en terminal et j'ai un projet sur python avec des classes 

Dans mon code, je donne des détails sur un personnage, par exemple "grand vert cheveux noir" et la personne doit deviner "Hulk". J'ai commencé mais je bloque. 

Je dois imprimer les attributs définis dans ma classe dans mon def jeu().

Pouvez-vous m'aider ? 

def jeu():

    class perso1:

        def __init__(self):
            self.age = '19'
            self.habit = 'chapeau de paille'
            self.univers = 'pirate'
            perso1_age=19

    class perso2:

        def __init__(self):
            self.age = '17'
            self.habit = 'écharpe à carreau veste noir'
            self.univers = 'fées'

    class perso3:
        def __init__(self):
            self.age = '22, célibataire et libre comme lair'
            self.habit = 'costard blanc'
            self.univers = 'école, prof'

    class perso4:
        def __init__(self):
            self.forme = 'grand vert detruit tout'
            self.habit = 'short violet déchiré'
            self.univers = 'Héros'

    print("1 : PERSO 1 FACILE")
    print("2 : PERSO 2 MOYEN")
    print("3 : PERSO 3 HARD")
    oui = int(input("Choisis ton niveau :"))
    if oui == 1:
        return(perso1_age)
    if oui == 2:
        print(perso2)
    if oui == 3:
        print(perso3)
    if oui == 4:
        print(perso4)
A voir également:

1 réponse

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
Modifié le 13 oct. 2022 à 01:05

Bonjour,

Plusieurs choses :

  • Même si c'est syntaxiquement correct, tes classes devraient être définies en dehors de la fonction jeu.
class Personnage:
    def __init__(self, prenom: str, nom: str, age: int, univers: str):
        self.prenom = prenom
        self.nom = nom
        self.age = age
        self.univers = univers

def jeu():
    spiderman = Personnage("Peter", "Parker", 20, "Marvel")
    ...
  • Exactement comme dans ton autre discussion (voir en particulier ce message)
    • Par convention, tes classes devraient avoir un nom qui commence par une majuscule.
    • Il y a confusion entre classe et instance,
  • Les âges devraient être stockés sous forme d'entier, pas sous forme de chaîne de caractère.
  • La variable oui devrait probablement être renommée niveau.
  • Les tests associés étant exclusifs, tu devrais utiliser des elif.
if oui == 1:
   ...
elif oui == 2:
   ...
elif oui == 3:
   ...
else:
   ...
  • Avant de foncer tête baissée dans ton exercice, peut-être devrais-tu commencer par relire ton cours.

Bonne chance

1