from sys import argv

class Personne:
    def __init__(self, nom, prenom, age):
        self.nom = nom
        self.prenom = prenom
        self.age = age
        self.determinerStatut()
        self.invariant()                # vérification de l'invariant

    def anneeSuivante(self):
        assert self.age == int(self.age)          # precondition
        ageAvant = self.age             # mémorisation pour la postcondition
        self.age = self.age + 1
        assert self.age == ageAvant + 1 # postcondition
        self.invariant()                # vérification de l'invariant

    def determinerStatut(self):
        assert self.age == int(self.age)          # precondition
        if self.age >= 18:
            self.statut = "majeur"
        else:
            self.statut = "mineur"
        assert ((self.age >= 18 and self.statut == "majeur") or (self.age < 18 and self.statut == "mineur"))
                                        # postcondition
        self.invariant()                # vérification de l'invariant

    def __repr__(self):
        return self.prenom + " " + self.nom + "(" + str(self.age) + ")"

    def invariant(self):
        assert self.nom != ""
        assert self.age >= 0
        assert self.age >= 18 or self.statut == "mineur"
        assert self.age < 18 or self.statut == "majeur"

if argv[1] == "1":
    personne = Personne("Mermet", "Bruno", 16)
    print(personne)
    input()
    personne.anneeSuivante()
    print(personne)
    input()
    personne.anneeSuivante()
elif argv[1] == "2":
    personne = Personne("Mermet", "Bruno", 20.4)
else:
    personne = Personne("", "Bruno", 20)