Aller au contenu

Devoir NSI : Dictionnaires 20-21 G1

L'usage de la calculatrice n'est pas autorisé.

Durée : 55 min

Magasin en ligne

«Chez Geek and sons tout ce qui est inutile peut s'acheter, et tout ce qui peut s'acheter est un peu trop cher.»

La base de prix des produits de Geek and sons est représentée en Python par un dictionnaire de type dict[str:float] avec :

  • les noms de produits, de type str, comme clés ;
  • les prix des produits, de type float, comme valeurs associées.

Question 1

Donner une expression Python pour construire la base des prix des produits correspondant à la table suivante :

Nom du Produit Prix TTC
Sabre laser 229.0
Mitendo DX 127.30
Coussin Linux 74.50
Slip Goldorak 29.90
Station Nextpresso 184.60
prix={'Sabre laser':229,'Mitendo DX':127.30,'Coussin Linux':74.50,'Slip Goldorak':29.90,'Station Nextpresso':184.60}

Question 2

Donner une définition de la fonction disponible qui étant donné un nom de produit prod et une base de prix Prix, retourne True si le produit est présent dans la base, ou False sinon.

def disponible(prod,D):
  return prod in D

Question 3

Donner une définition de la fonction prix_moyen qui, étant donné une base de prix Prix(contenant au moins un produit), retourne le prix moyen des produits disponibles.

Par exemple :

>>> prix_moyen(Prix)
>>> 129.06
def prix_moyen(Prix):
  res=0
  for i in Prix.values():
    res=res+i
  res=res/len(Prix.values())
  return res

Question 4

Donner une définition de la fonction fourchette_prix qui, étant donné un prix minimum mini, un prix maximum maxi et une base de Prix nommée Prix, retourne la liste des noms de produits disponibles dans cette fourchette de prix.

Par exemple :

>>> fourchette_prix(50.0, 200.0, Prix)
>>> {'Coussin Linux', 'Mitendo DX', 'Station Nextpresso'}
def fourchette_prix(mini,maxi,Prix):
  res=[]
  for i,j in Prix.items():
    if j<=maxi and j>=mini:
      res.append(i)
  return res

Question 5

Le panier est un concept omniprésent dans les sites marchands, Geek and sons n'échappe pas à la règle. En Python, le Panier du client sera représenté par un dictionnaire de type dict[str:int] avec :

  • les noms de produits comme clés;
  • une quantité d'achat comme valeurs associées.

Donner une expression Python correspondant à l'achat de 3 sabres lasers, de 2 coussins Linux et de 1 slip Goldorak.

panier={'Sabre laser':3,'Coussin Linux':2,'Slip Goldorak':1}

Question 6

Donner une définition de la fonction tous_disponibles qui, étant donné un panier d'achat Panier et une base de Prix Prix, retourne True si tous les produits demandés sont disponibles (=habituellement vendus par l'entreprise), ou False sinon.

def tous_disponibles(Pa,Pr):
  res=True
  for i in Pa.keys():
    res=res and disponible(i,Pr)
  return res
def tous_disponibles2(Pa,Pr):
  res=True
  i=0
  clésdupanier=list(Pa.keys())
  while res==True and i<len(clésdupanier):
    res=disponible(clésdupanier[i],Pr)
    i=i+1
  return res

Question 7

Donner une définition de la fonction prix_achats qui, étant donné un panier d'achat Panier et une base de Prix Prix, retourne le prix total correspondant.

Par exemple :

>>> prix_achats(Panier,Prix)
>>> 865.9
Remarque : on supposera que tous les articles du paniers sont disponibles dans la base de produits.

def prix_achats(Pa,Pr):
  prixtotal=0
  for i,j in Pa.items():
    prixtotal=prixtotal+j*Pr[i]
  return prixtotal