# Exercice 1

fruits = {"pommes": 8, "melons": 3, "poires": 6}

# Question 1 : Acceder au nombre de melon
fruits["melons"]

# Question 2 : On a acheté 16 clémentines et utilisé 4 pommes
fruits["pommes"] = fruits["pommes"] - 4
fruits["clémentines"] = 16

#----------------------------------------------------------------------------------------------------
# Exercice 2

# Question 1 : fruits.keys() affiche toutes les clés du dictionnaire, donc pommes, melons, poires, clémentines
# Question 2 : fruits.keys() affiche toutes les couples clé-valeur du dictionnaire, donc pommes->4, melons->3, poires->6, clémentines->16
# Question 3 : fruits.keys() affiche toutes les valeurs du dictionnaire, donc 4, 3, 6, 16

#----------------------------------------------------------------------------------------------------
# Exercice 3

# Question 1

fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
# à compléter :

courses = [] # note liste de courses
for k, v in fruits.items():
    if v <= 4:
        courses.append(k)

# ou 

courses = [] # note liste de courses
for k in fruits.keys():
    if fruits[k] <= 4:
        courses.append(k)

# Question 2

def liste_courses(fruits):
    courses = [] # note liste de courses
    for k, v in fruits.items():
        if v <= 4:
            courses.append(k)
    return courses

fruits_1 = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
assert liste_courses(fruits_1) == ['pommes', 'melons']
fruits_2 = {'pommes': 4, 'melons': 13, 'poires': 0, 'clémentines': 3}
assert liste_courses(fruits_2) == ['pommes', 'poires', 'clémentines']


#----------------------------------------------------------------------------------------------------
# Exercice 4

athletes = {"Mike": (1.75, 68), "John": (1.89, 93), "Kate": (1.67, 62)}

sportifs = {"Mike": {"taille": 1.75,"poids": 68},
"John": {"taille": 1.89,"poids": 93},
"Kate": {"taille": 1.67,"poids": 62}
}

# Question 1
# Les clés des deux dictionnaires sont des chaines de caractères (str)
# Pour le dictionnaire athletes, les valeurs sont des tuples
# Pour le dictionnaire sportifs, les valeurs sont des dictionnaires

# Question 2 : Quelle instruction permet d'accéder à la taille de Kate dans le dictionnaire athletes ?
athletes["Kate"][0]

# Question 3 : Quelle instruction permet d'accéder à la taille de Kate dans le dictionnaire sportifs ?
sportifs["Kate"]["taille"]

#----------------------------------------------------------------------------------------------------
# Exercice 5

scrabble = {'A': 1, 'B': 3, 'C': 3, 'D': 2, 'E': 1, 'F': 4, 'G': 2,
'H': 4, 'I': 1, 'J': 8, 'K': 10, 'L': 1, 'M': 2, 'N': 1, 'O': 1,
'P': 3, 'Q': 8, 'R': 1, 'S': 1, 'T': 1, 'U': 1, 'V': 4, 'W': 10,
'X': 10, 'Y': 10, 'Z': 10}

def nb_points(mot):
    points = 0
    for c in mot:
        points += scrabble[c]
    return points

assert nb_points('ARBRE') == 7
assert nb_points('XYLOPHONE') == 32

#----------------------------------------------------------------------------------------------------
# Exercice 6

personnages = [
{'nom': 'Einstein', 'prénom': 'Albert', 'âge': '35', 'genre': 'm'},
{'nom': 'Hamilton', 'prénom': 'Margaret', 'âge': '23', 'genre': 'f'},
{'nom': 'Nelson', 'prénom': 'Ted', 'âge': '64', 'genre': 'm'},
{'nom': 'Curie', 'prénom': 'Marie', 'âge': '41', 'genre': 'f'}
]

#Question 1 : Quel est le type de la variable personnages ? Quel est le type des éléments de personnages ?
# Personnage est une liste et ses valeurs sont des dictionnaires

# Question 2 : Quelle instruction permet d'accéder au dictionnaire de Ted Nelson ?
personnages[2]

# Question 3 : Quelle instruction permet d'accéder à l'âge de Ted Nelson ?
personnages[2]["âge"]

# Question 4 : Dans le programme suivant, quel est le type de la variable p à chaque tour de boucle ? Quel est le rôle de ce programme ?
# p est une variable de type dictionnaire
# Ce programme parcours la liste de personnages et affiche les noms et prénoms des personnages ayant 40ans ou moins

# Question 5 : Proposez un programme qui affiche uniquement les noms et prénoms des femmes du tableau personnages . 
for p in personnages:
    if p['genre'] == 'f':
        print(p['nom'], p['prénom'])

# Écrivez une fonction age_moyen(personnages) qui renvoie l'âge moyen des personnalités du tableau personnages entré en paramètre. On doit trouver 40,75 ans.
age_moyen = 0
for p in personnages:
    age_moyen += int(p['âge'])
print(age_moyen/len(personnages))