Solution Complète en Python - Programmation Orientée Objet
Voici la solution complète pour automatiser la gestion des membres d'une association en
utilisant la Programmation Orientée Objet en Python.
class Personne:
def __init__(self, nom, genre, age):
self.__nom = nom
self.__genre = genre
self.__age = age
# Méthodes get et set
def get_nom(self):
return self.__nom
def set_nom(self, nom):
self.__nom = nom
def get_genre(self):
return self.__genre
def set_genre(self, genre):
self.__genre = genre
def get_age(self):
return self.__age
def set_age(self, age):
self.__age = age
# Méthode pour afficher les informations de la personne
def __str__(self):
return f"Nom: {self.__nom}, Genre: {self.__genre}, Âge: {self.__age}"
# Liste des membres de l'association
membres = [
Personne("Alice", "Féminin", 22),
Personne("Bob", "Masculin", 20),
Personne("Charlie", "Masculin", 23),
Personne("Diana", "Féminin", 21),
Personne("Eve", "Féminin", 19),
Personne("Frank", "Masculin", 25),
Personne("Grace", "Féminin", 17),
Personne("Hank", "Masculin", 24),
Personne("Ivy", "Féminin", 18),
Personne("Jack", "Masculin", 22),
Personne("Kathy", "Féminin", 20),
Personne("Leo", "Masculin", 21),
Personne("Mona", "Féminin", 22),
Personne("Nathan", "Masculin", 16),
Personne("Olivia", "Féminin", 23),
Personne("Paul", "Masculin", 26),
Personne("Quinn", "Féminin", 19),
Personne("Ryan", "Masculin", 18),
Personne("Sophia", "Féminin", 24),
Personne("Tom", "Masculin", 22)
]
# Fonction 1 : Afficher la liste de tous les membres
def afficher_tous_les_membres(membres):
print("\nListe des membres de l'association :")
for membre in membres:
print(membre)
# Fonction 2 : Afficher le membre le plus jeune
def membre_plus_jeune(membres):
return min(membres, key=lambda x: x.get_age())
# Fonction 3 : Afficher la liste des hommes et leur nombre
def afficher_hommes(membres):
hommes = [membre for membre in membres if membre.get_genre() == "Masculin"]
print("\nListe des hommes :")
for homme in hommes:
print(homme)
print(f"Nombre d'hommes : {len(hommes)}")
# Fonction 4 : Afficher le membre le plus âgé
def membre_plus_age(membres):
return max(membres, key=lambda x: x.get_age())
# Fonction 5 : Afficher la liste des femmes et leur nombre
def afficher_femmes(membres):
femmes = [membre for membre in membres if membre.get_genre() == "Féminin"]
print("\nListe des femmes :")
for femme in femmes:
print(femme)
print(f"Nombre de femmes : {len(femmes)}")
# Fonction 6 : Compter les membres entre 16 et 23 ans
def membres_age_dans_intervalle(membres, age_min, age_max):
membres_intervalle = [membre for membre in membres if age_min <= membre.get_age()
<= age_max]
print(f"\nNombre de membres entre {age_min} et {age_max} ans :
{len(membres_intervalle)}")
# Fonction 7 : Enregistrer les membres dans un fichier
def enregistrer_membres_dans_fichier(membres, fichier):
with open(fichier, "w", encoding="utf-8") as f:
for membre in membres:
f.write(str(membre) + "\n")
print("\nLa liste des membres a été enregistrée dans le fichier :", fichier)
# Fonction 8 : Rechercher un membre par son nom
def rechercher_membre_par_nom(membres, nom):
for membre in membres:
if membre.get_nom().lower() == nom.lower():
return membre
return "Aucun membre trouvé avec ce nom."
# Programme principal
if __name__ == "__main__":
afficher_tous_les_membres(membres)
print("\nMembre le plus jeune :")
print(membre_plus_jeune(membres))
afficher_hommes(membres)
print("\nMembre le plus âgé :")
print(membre_plus_age(membres))
afficher_femmes(membres)
membres_age_dans_intervalle(membres, 16, 23)
enregistrer_membres_dans_fichier(membres, "membres_association.txt")
# Recherche freestyle
nom_recherche = input("\nEntrez le nom du membre à rechercher : ")
print(rechercher_membre_par_nom(membres, nom_recherche))