2. Fidelització (3,5 punts)¶
Una botiga fa una sèrie de descomptes als clients que estan inscrits en un programa de fidelització i, alhora, participa en una campanya de donatius a ONGs.
Dissenya la funció preu_punts que donat l’import de la compra (float), els punts de fidelització que té un client (int), un string que indica el tipus de client i un booleà que és True si el client vol participar en la campanya de donatius i False en cas contrari, retorna dos valors: un float amb l’import final a pagar i un int amb la nova quantitat de punts de fidelització del client.
Si l’import donat no és positiu, vol dir que correspon a una devolució i la funció retornarà 0.0 per l’import i 0 pels punts. Si no es compleix l’anterior:
El client guanyarà un punt més de fidelització per cada 10 euros de despesa, calculats a partir de l’import donat i abans de fer cap descompte.
Si els punts de fidelització (després d’incrementar-los si cal) estan entre 1000 i 2000 (inclòs), es descomptarà un 1% de l’import donat. Si estan entre 2000 i 3000 (inclòs), es descomptarà un 2%. I si son més de 3000, es descomptarà un 3%.
Un cop fet els descomptes anteriors i l’increment de punts, si el client és de tipus
'VIP's’afegiran directament 10 punts més.A l’import calculat amb els descomptes, si el client vol participar en la campanya de donatius, se li afegirà un 1%.
Els següents doctests mostren exemples del que ha de fer la funció:
>>> imp,punts = preu_punts(53.0,800,'NORMAL',False)
>>> round(imp,2)
53.0
>>> punts
805
>>> imp,punts = preu_punts(-10.0,1100,'NORMAL',False)
>>> round(imp,2)
0.0
>>> punts
0
>>> imp,punts = preu_punts(53.0,2000,'VIP',True)
>>> round(imp,1)
52.5
>>> punts
2015
Disposeu de tests al fitxer test-fidel.txt.
Deseu la funció al fitxer fidelitzacio.py i pugeu-lo a Atenea.
Avís
Els tests proporcionats son només exemples per ajudar a entendre i resoldre el problema. Que la funció superi aquests tests no significa que la funció sigui correcta ni garanteix cap nota. La funció ha de resoldre totes les qüestions plantejades a l’enunciat surtin o no als tests.
Disposeu d’una solució al fitxer fidelitzacio.py