======== Booleans ======== Tipus i valors -------------- - :term:`Tipus` booleà: :class:`bool` - :term:`Valors literals ` booleans: ``True``, ``False`` Operadors relacionals --------------------- - :term:`Operador relacional`: igualtat (``==``), desigualtat (``!=``), comparació o ordre (``<``, ``<=``, ``>``, ``>=``) - Tenen dos operands (binaris) i s'escriuen entre ells (infix) - Els operands són nombres (de moment) - :ref:`Ordre d'avaluació `: - Són menys prioritaris que la suma i la resta - L'associativitat és d'esquerra a dreta Operadors booleans ------------------ - Operador booleà o lògic: ``and``, ``or`` i ``not`` - Semàntica (significat) dels operadors lògics - ``A and B``: ``True`` si tant ``A`` com ``B`` són ``True`` i ``False`` en qualsevol altre cas - ``A or B``: ``False`` si tant ``A`` com ``B`` són ``False`` i ``True`` en qualsevol altre cas - ``not A``: ``True`` si ``A`` és ``False`` i ``False`` si ``A`` és ``True`` - Taula de veritat ======= ======= ======== ======= ====== a b a and b a or b not a ======= ======= ======== ======= ====== False False False False True False True False True True False False True False True True True True ======= ======= ======== ======= ====== - Expressió booleana: tota expressió que s'avalua a un objecte booleà. Lleis i equivalències lògiques ------------------------------ - Vegeu :doc:`fi:temes/introduccio/Equivalencies_bool/equivalencies_booleanes` Avaluació amb curtcircuit ------------------------- - Mètode d\':term:`avaluació` dels operadors ``and`` i ``or`` - ``and`` amb curtcircuit #. s'avalua l'operand de l'esquerra #. si és ``False``, retorna aquest valor (sense avaluar l'operand de la dreta) #. altrament, retorna el resultat d'avaluar l'operand de la dreta - ``or`` amb curtcircuit #. s'avalua l'operand de l'esquerra #. si és ``True``, retorna aquest valor (sense avaluar l'operand de la dreta) #. altrament, retorna el resultat d'avaluar l'operand de la dreta - Vegeu :ref:`booleans` a :doc:`python:reference/index` Igualtat en nombres en coma flotant ----------------------------------- .. code:: python3 >>> x = 0.1*3 >>> y = 0.3 >>> x == y False >>> epsilon = 1e-7 >>> abs(x-y) < epsilon True - Cal decidir una *tolerància* :math:`\epsilon`. Funcions booleanes ------------------ - Són funcions que retornen un objecte booleà >>> def es_divisible(a, b): ... return a%b == 0 >>> es_divisible(6, 4) False >>> es_divisible(6, 3) True - Vegeu la secció :ref:`howto:boolean-functions` del llibre :doc:`howto:index` Exercicis --------- - :doc:`fi:temes/funcions/Física/index`, punt 5 .. Tolerància - :doc:`fi:temes/funcions/Equació_de_segon_grau/index`, punts 2 i 3 .. Sense i amb tolerància - :doc:`fi:temes/funcions/Càlcul_de_múltiples/index` .. Sense tolerància - :doc:`fi:temes/funcions/Gravetat/index` .. Tolerància - :doc:`fi:temes/funcions/Zona_cerca/index`, punt 4 .. Tolerància - :doc:`fi:temes/funcions/Vèrtexs_d_un_quadrat/index`, punt 3 .. Sense tolerància