zoo_Beauval = {
    'éléphant': ('Asie', 5),
    'écureuil': ('Asie', 17),
    'panda': ('Asie', 2),
    'hippopotame': ('Afrique', 7),
    'girafe': ('Afrique', 4)}


zoo_LaFleche = {
    'ours': ('Europe', 4),
    'tigre': ('Asie', 7),
    'girafe': ('Afrique', 11),
    'hippopotame': ('Afrique', 3)}



"""
Exercice 1:

1.a. Pour le code de cette fonction nous pouvons envisager le code n°3 : for ( cle, valeur ) in dico.items()

b.
"""

def plus_grand_nombre (zoo):
    animal_max = None
    nombre_max = 0
    for animal, (origine, nombre) in zoo.items():
        if nombre > nombre_max :
            animal_max = animal
            nombre_max = nombre
    return animal_max

print(plus_grand_nombre(zoo_LaFleche))

"""
2.a.Pour le code de cette fonction nous pouvons envisager le code n°3 : for ( cle, valeur ) in dico.items()

b.
"""

def nombre_total (zoo, continent):
    nb_animaux_continent = 0
    for animal, ( origine, nombre) in zoo.items():
        if origine == continent :
            nb_animaux_continent += nombre
    return nb_animaux_continent

print(nombre_total (zoo_LaFleche, 'Asie'))

"""
3.a.Pour le code de cette fonction nous pouvons envisager le code n°3 : for ( cle, valeur ) in dico.items()

b.
"""

def nombre(zoo, animal_dmd):
    nb_representants = 0
    for animal, ( origine, nombre) in zoo.items():
        if animal == animal_dmd :
            nb_representants = nombre
    return nb_representants

print(nombre(zoo_Beauval,'panda'))

"""
Exercice 2:

Partie 1:

1. notes_de_lea est une liste
2. elle vaut 3
3. la réponse est notes_de_lea.append(15)
4.a. le type de retour est tuple
b.c.
"""

def fonction(liste_de_notes):
    """
    'liste_de_notes' est une liste de nombres qui modélise les notes d'un élève
    Cette fonction renvoie le nombre de notes supérieures à 10 et le nombre de notes inférieures à 10 de l'élève
    """
    compteur1 = 0
    compteur2 = 0
    for note in liste_de_notes:
        if note >= 10:
            compteur1 = compteur1 + 1
        else:
            compteur2 = compteur2 + 1
    return (compteur1, compteur2)
notes_de_lea = [12, 14, 3, 16, 17, 2, 13, 19]
assert fonction(notes_de_lea) == ( 6,2 )


"""
Partie 2:

1. notes_de_la_classe est une liste
2. elle vaut ('Lucas', 14)
3. notes_de_la_classe.append(('Farid', 15))
4.a.
b.
c. l'expression vaut "None"
"""

def nom_du_genie(les_notes):
    note_max = None
    genie = None
    for (nom, note) in les_notes :
         if note_max == None or note > note_max:
             note_max = note
             genie = nom
    return genie

print(nom_du_genie([]))


notes = {'Enzo': ('Math', 3), 'Emma': ('Math',16), 'Lucas' : ('NSI', 14), 'Manon': ('NSI', 13)}
#test
def test_nom_du_genie():
    assert nom_du_genie(notes) == Enzo, "le test a echoue"

"""
Partie 3:

1. notes est un dictionnaire
2. Cette instruction génère une erreur
3. C'est : notes['Farid'] = ('NSI, 15)
4. Cela affiche tout les noms des élèves ayant eu moins de 15, ici Enzo, Lucas et Manon
5.a.X
b.
"""

def pire_eleve(notes):
    pire_eleve = None
    pire_note = None
    for nom, (matiere, note) in notes.items:
        if pire_note == None or note < pire_note:
            pire_note = note
            pire_eleve = nom
    return pire_eleve 

"""
6.X

Exercice 3:

1a. Il y a 4 entités : Client( Code_cli )  , Vendeur ( Code_ven ) , Facture ( Num_fact ) , Produit ( Num_prod )
b. établir : relation vendeur, 0;n - facture 1;1
recevoir : relation client, 0;n - facture 1;1
ajouter : relation produit, 0;n - facture 1;n

2. photo

3. photo
"""

