1. Avalua [3p]

Es vol calcular el valor real que s’obté a partir d’un valor inicial real al que s’apliquen 4 operadors aritmètics amb els seus valors. Per exemple, 0.0+5.0-1.0+2.0-3.0 dóna 3.0.

Amb aquest objectiu es demana que al mòdul avalua_modul (fitxer avalua_modul.py) la facis dues funcions següents:

Primer es demana la funció:

avalop(v1, op, v2)
que donats els float v1 i v2 i el str op
retorni dos valors:
  • un bool que serà True només si op és un dels str següents: '+', '-' , '*' , '/'. En cas de ser '/' també cal que v2 no sigui 0.0.

  • un float tal que si el valor anterior és True aleshores serà el valor obtingut d’operar v1 i v2 amb l’operació aritmètica indicada a op. En cas de decimals s’aplicarà arrodoniment a 1 decimal. Si el valor anterior és False aleshores serà v1.

Per exemple:

>>> avalop(0.0, '+', 5.0)
(True, 5.0)
>>> avalop(8.0, '/', 3.0)
(True, 2.7)
>>> avalop(8.0, '/', 0.0)
(False, 8.0)
>>> avalop(8.0, '//', 3.0)
(False, 8.0)

Disposes dels tests al fitxer avalop_test.txt.

Un cop feta i validada avalop es demana que la funció:

avalua(vlini, op1, vl1, op2, vl2, op3, vl3, op4, vl4)
que donats 9 paràmetres on tots el que comencen per *vl són float i tots els que comencen per op són un str
retorni dos valors:
  • un bool que serà True si tots els op són un dels strings següents: '+', '-' , '*' , '/' i False altrament.

  • un float tal que si el valor anterior és False aleshores és retorna vlini altrament retorna el valor obtingut d’operar vlini amb les 4 operacions aritmètiques i els valor que les segueixen en l’ordre d’aparició.

Per a fer aquesta funció s’ha de fer ús de la funció anterior.

Per exemple:

>>> avalua(0.0, '+', 5.0, '-', 1.0, '+', 2.0, '-', 3.0)
(True, 3.0)
>>> avalua(0.0, '+', 5.0, '-', 1.0, '*', 2.0, '/', 3.0)
(True, 2.7)
>>> avalua(0.0, '+', 0.0, '-', 0.0, '*', 0.0, '/', 0.0)
(False, 0.0)
>>> avalua(0.0, '+', 5.0, '-', 1.0, '*', 2.0, '//', 3.0)
(False, 0.0)

Disposes dels tests al fitxer avalua_test.txt.