Python Course - Primer cas pràctic

Exercici fortament sintètic

(En part de https://wiki.python.org/moin/SimplePrograms, en part collita pròpia)

Considerem un diccionari de preus, amb productes bàsics:


In [ ]:
prices = {'apple': 0.40, 'banana': 0.50, 'entrada_promocional': 10, 'entrada_simple': 17}

I considerem una llista d'objectes que ha comprat un cert "client"


In [ ]:
compra_marcos = [
    'apple',
    'banana',
    'apple',
    'entrada_promocional',
    'apple',
    'banana',
    'entrada_promocional',  # segur que voldrà un canvi de nom d'aquesta
]

Step 1: Compra del client

Imaginem que volem saber de forma una mica més ben estructurada què ha comprat aquest client.

Primera versió - C++ programmer fent desastres


In [ ]:
result = dict()

for i in range(len(compra_marcos)):
    producte = compra_marcos[i]
    previous_value = result.get(producte)
    if previous_value == None:
        result[producte] = 1
    else:
        result[producte] = previous_value + 1

result

Segona versió - Ara com a mínim sap Python


In [ ]:

Tercera versió - No reinventeu la roda


In [ ]:
from collections import Counter

Step 2: Càlcul del total

Ara volem calcular el total de la compra del client.

Primera versió - Somewhat Python


In [ ]:
total = 0

for producte, quantitat in result.items():
    total += prices[producte] * quantitat
    
total

Segona versió - Now with comprehensions!


In [ ]: