3. Preu producte [4 Punts]

Una parada del mercat ens demanen que els fem una funció que calculi el preu que ha de pagar un client per la compra d’una certa quantitat d’un producte. Les dades que tindrem seran un string amb informació sobre el preu del producte (producte-preu) i un string sobre la quantitat de producte que es desitja (producte-quantitat). Per fer-ho, hauràs d’implementar dues funcions.

  1. Donat un string amb el format

    nom_producte : preu ; unitat_del_preu

    on nom_producte és el nom del producte i pot estar format per una paraula o més. Després trobem el caràcter ':'. Entre el nom del producte i aquest caràcter poden haver-hi un o més espais en blanc. El preu ve donat per dígits que representen el preu en cèntims d’euro i finalment la unitat_del_preu que ens diu en quina unitat es dona el preu. Això pot ser 'gram', '100 grams' o 'quilo'. Aquestes dues informacions estan separades per un ';' sense cap espai en blanc després d’aquest caràcter.

    Per exemple, pernil espatlla ibèrica : 6500 ;quilo . Indica que l’espatlla ibèrica va a 65 euros el quilo i pernil dolç : 190 ;100 grams, indica que el pernil dolç va a 1.9 euros els 100 grams.

    Implementa una funció, anomenada nom_preu que donat un string com l’anteriorment descrit, et retorna un string corresponent al nom del producte i un enter corresponent al preu en cèntims d’euro que val un quilo del producte donat.

    Desa la funció al fitxer preu_unitat.py. La funció ha de passar el següent doctest:

    >>> nom_preu('pernil espatlla ibèrica : 6500 ;quilo')
    ('pernil espatlla ibèrica', 6500)
    >>> nom_preu('pernil país    :     230 ;100 grams')
    ('pernil país', 2300)
    >>> nom_preu('col : 500 ;quilo')
    ('col', 500)
    >>> nom_preu('pernil país:     230 ;100 grams')
    ('pernil país', 2300)
    >>> nom_preu('pernil ibèric:     12 ;1 gram')
    ('pernil ibèric', 12000)
    

    Nota

    Pots descarregar el fitxer amb tests test-preu1.txt.

  2. Fent servir la funció de l’apartat anterior. Implementa, en el mateix fitxer, una funció anomenada preu tal que donat un string com el de l’apartat anterior i donat un string corresponent a la quantitat de producte que han comprat expressat en quilos, en calcula el preu que haurà de pagar el client. La quantitat de producte ve donada amb un string del tipus quantitat unitat, amb un únic espai en blanc entre la quantitat i la unitat. La unitat sempre són quilos. La funció retornarà un string com segueix: «El preu de nom_del_producte és de valor cèntims d’euro», on el nom_del_producte serà el donat amb un únic espai en blanc al final i valor el que correspon al que ha de pagar arrodonit a un decimal.

    En cas que no es cridi la funció anterior aquest apartat es considerarà malament

    La funció ha de passar el següent doctest:

    >>> preu('pernil espatlla ibèrica : 6500 ;quilo', '0.12 quilos')
    "El preu de pernil espatlla ibèrica és de 780.0 cèntims d'euro"
    >>> preu('pernil país    :     230 ;100 grams', '0.52 quilos')
    "El preu de pernil país és de 1196.0 cèntims d'euro"
    >>> preu('col : 500 ;quilo', '4 quilos')
    "El preu de col és de 2000.0 cèntims d'euro"
    >>> preu('pernil país:     230 ;100 grams', '0.3 quilos')
    "El preu de pernil país és de 690.0 cèntims d'euro"
    >>> preu('pernil ibèric:     12 ;1 gram', '0.15 quilos')
    "El preu de pernil ibèric és de 1800.0 cèntims d'euro"
    

    Nota

    Pots descarregar el fitxer amb tests test-preu2.txt.

    Pots trobar una solució a preu_unitat.py.