Aller au contenu

Appartements⚓︎

D'après 2022, Métropole, septembre, J1, Ex. 2

Une petite société immobilière doit vendre des appartements d'une résidence. Les appartements ont tous une pièce de vie avec cuisine et deux chambres. Les logements se trouvant au rez-de-chaussée disposent d'un jardin. Les annonces sont stockées dans la liste logements d'instances de la classe Appartement décrite ci-dessous.

🐍 Script Python
class Piece:

    def __init__(self, nom, superficie):
        self.nom = nom
        self.superficie = superficie

    def get_superficie(self):
        return self.superficie


class Appartement:

    def __init__(self, identifiant, piece_vie, chambre_1, chambre_2, avec_jardin, prix):
        self.identifiant = identifiant
        self.piece_vie = piece_vie  # de type Piece
        self.chambre_1 = chambre_1  # de type Piece
        self.chambre_2 = chambre_2  # de type Piece
        self.avec_jardin = avec_jardin  # de type booléen 
        self.prix = prix  # de type entier

    def get_identifiant(self):
        return self.identifiant

    def superficie_totale(self):
        return ...

    def get_jardin(self):
        return self.avec_jardin

    def get_prix(self):
        return self.prix

# Programme principal

logements = [
    Appartement("A02", Piece("principale", 40), Piece("chambre_1", 10),
        Piece("chambre_2", 20), True, 190000),
    Appartement("A11", Piece("principale", 50), Piece("chambre_1", 15), 
        Piece("chambre_2", 15), False, 200000),
    Appartement("A12", Piece("principale", 30), Piece("chambre_1", 15), 
        Piece("chambre_2", 20), False, 210000),
    Appartement("B01", Piece("principale", 30), Piece("chambre_1", 10), 
        Piece("chambre_2", 20), True, 185000),
    Appartement("B31", Piece("principale", 30), Piece("chambre_1", 10), 
        Piece("chambre_2", 20), False, 150000)
]

1.a. Combien d'éléments contient la liste logements ?

Réponse

La liste logements contient 5 éléments qui sont les cinq appartements d'identifiants 'A02', 'A11', 'A12', 'B01' et 'B31'.

1.b. Que renvoie l'instruction logements[1].get_identifiant() ?

Réponse

L'instruction renvoie 'A11'

1.c. Recopier et compléter sur votre copie la méthode superficie_totale

🐍 Script Python
def superficie_totale(self):
    return ...
Réponse
🐍 Script Python
def superficie_totale(self):
    return (self.piece_vie.get_superficie()
        + self.chambre_1.get_superficie()
        + self.chambre_2.get_superficie())

Autre réponse possible :

🐍 Script Python
def superficie_totale(self):
    return sum(piece.get_superficie()
        for piece in [self.piece_vie, self.chambre_1, self.chambre_2])

2. Pour satisfaire à la demande d'un client, l'agent immobilier désire disposer de la liste des appartements ayant un jardin et coutant moins de 195000 euros. Vous devez créer la portion de programme qui crée la liste selection composée des identifiants des appartements réalisant ces conditions.

Réponse
🐍 Script Python
selection = [logement.get_identifiant() for logement in logements
    if logement.get_jardin() and logement.get_prix() < 195000]

3. L'agent immobilier veut répondre à la question suivante d'un client : "Quel est votre appartement le plus spacieux ?"

Il souhaite disposer d'une fonction plus_spacieux qui renvoie l'identifiant du logement ayant la superficie totale maximale.

Recopier et compléter sur votre copie la fonction plus_spacieux

🐍 Script Python
def plus_spacieux(appartements):
    ...

Réponse
🐍 Script Python
def plus_spacieux(appartements):
    max_espace = 0
    for appart in appartements:
        if max_espace < appart.superficie_totale():
            max_espace = appart.superficie_totale()
            id_maxi = appart.identifiant
    return id_maxi
Remarque

Pour accéder à des données stockées dans une base, il est désormais courant de passer par un ORM (Object-Relational Mapping) qui présente les données sous la forme d'objets. Le développeur manipule ainsi des classes, que l'ORM traduit en requêtes sur la base de données.