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 :mod:`avalua_modul` (fitxer :file:`avalua_modul.py`) la facis dues funcions següents: Primer es demana la funció: .. function:: avalop(v1, op, v2) | que **donats** els :class:`float` *v1* i *v2* i el :class:`str` *op* | **retorni** dos valors: - un :class:`bool` que serà ``True`` només si *op* és un dels :class:`str` següents: ``'+'``, ``'-'`` , ``'*'`` , ``'/'``. En cas de ser ``'/'`` també cal que *v2* no sigui ``0.0``. - un :class:`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: .. literalinclude:: avalop_test.txt :language: python3 :start-after: --ini :end-before: --fi Disposes dels tests al fitxer :download:`avalop_test.txt`. Un cop feta i validada `avalop` es demana que la funció: .. function:: avalua(vlini, op1, vl1, op2, vl2, op3, vl3, op4, vl4) | que **donats** 9 paràmetres on *tots el que comencen per *vl* són :class:`float` i tots els que comencen per *op* són un :class:`str` | **retorni** dos valors: - un :class:`bool` que serà ``True`` si tots els *op* són un dels strings següents: ``'+'``, ``'-'`` , ``'*'`` , ``'/'`` i ``False`` altrament. - un :class:`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: .. literalinclude:: avalua_test.txt :language: python3 :start-after: --ini :end-before: --fi Disposes dels tests al fitxer :download:`avalua_test.txt`.