Dictionnaires : Lego©
L'usage de la calculatrice n'est pas autorisé
Durée: 1h
Avec les années, vous avez acquis un grand nombre de boîtes Lego©, de plusieurs thèmes : Star Wars, Architecture, City ou Friends... Nous allons travailler sur un dictionnaire en Python pour représenter ces boîtes Lego©. Chaque clé du dictionnaire correspondra au numéro
de la boîte Lego©, et la valeur associée sera une liste de données correspondant, dans l'ordre:
- au
Theme
de la boîte - au
Nom
de la boîte - au
Nombre de pièces
de la boîte - à l'
Age
minimum conseillé - au
Prix
d'achat de la boîte
Voici un extrait de ce que l'on trouve dans ce dictionnaire, que l'on appelle lego
:
Numéro | Theme | Nom | Nombre de pièces | Âge | Prix |
---|---|---|---|---|---|
71043 | Harry Potter | Hogwarts Castle | 6020 | 16 | 469.99 |
42141 | Technic | McLaren Formula 1 Team | 1434 | 18 | 199.99 |
41757 | Friends | Botanical Garden | 6020 | 12 | 469.99 |
75369 | Star Wars | Boba Fett Mech | 155 | 6 | 15.99 |
Question 1
Écrire l'instruction qui permet d'ajouter la boîte suivante du thème Architecture au dictionnaire lego
.
- Nom : Le Taj Mahal
- Numéro : 21056
- Nombre de pièces : 2022
- Âge : 18
- Prix : 119.99
Correction
lego[21056] = ['architecure', 'Le Taj Mahal', 2022, 18, 119.99 ]
Question 2
Donner une expression booléenne qui permet de savoir si j'ai des boites Lego© du thème "Creator".
Correction
def creator(dico) :
for i in dico.values():
if i[0]=="Creator":
return True
return False
'Creator' in [v[0] in list(lego.values())]
Question 3
Donner une fonction theme(D,T)
qui permet d'obtenir la liste des noms des boîtes Lego© d'un thème T
.
Correction
def theme(D,T):
L=[]
for i in D.values():
if i[0]==T:
L.append(i[1])
return L
Question 4
Écrire une fonction Nbpièces(D,nb)
qui retourne la liste des numéros des boîtes qui contiennent plus de nb
pièces.
Correction
def Nbpièces(D,nb):
res=[]
for Num,B in D.items():
if B[2]>nb:
res.append(Num)
return res
Question 5
Écrire une fonction Folie(D,C)
qui permet de retourner le numéro et le nom de la boîte qui contient le plus de pièces de la collection C
dans le dictionnaire D
?
Correction
python
def Folie(D,C):
maxi=0
Nummaxi=0
for Num,B in D.items():
if B[2]>maxi and B[0]==C:
maxi=B[2]
Nummaxi=Num
return Nummaxi,D[Nummaxi][1]
Question 6
Écrire une fonction filtre(D,A)
qui supprime du dictionnaire D
les boîtes dont l'age minimal conseillé est inférieur à A
?
Correction
def filtre(D,A):
res=[]
for Num,B in D.items():
if B[3]<A:
res.append(Num)
for elt in res:
del D[elt]
Question 7
Écrire une fonction Pluch(D)
qui permet de retourner la liste des noms des 3 articles les plus chers du dictionnaire D
.
Correction
def Chere(D):
maxi=0
Nummaxi=0
for Num,B in D.items():
if B[4]>maxi:
maxi=B[4]
Nummaxi=Num
return Nummaxi
def Pluch(D):
D1=D.copy()
res=[]
for i in range(3):
Num=Chere(D1)
res.append(D1[Num][1])
del D1[Num]
return res
Question 8
On achète un lot de boîtes Lego© en ligne. On range ces boîtes dans un nouveau dictionnaire D2
qui contient les nouveaux articles.
On souhaite fusionner les dictionnaires et revendre les 20 boîtes qui contiennent le moins de pièces.
Écrire une fonction revendre(D,D2)
qui retourne la liste des numéros des boîtes à revendre.