Escaquer iterable ================= .. py:currentmodule:: escaquer #. Ampliar la classe :py:class:`Escaquer` de l'exercici :doc:`/temes/classes/Classe_Escaquer/index` per a que sigui iterable. L'iterador resultant recorrerà l'escaquer per files, i per cada fila, les seves columnes (De l'a fins l'h). Les files es recorreran de la numeració més gran a la numeració més petita (8 a 1). Per exemple, .. literalinclude:: test_escaquer1.txt :language: python :lines: 1-13 Una manera de fer-ho és afegir a la classe :py:class:`Escaquer` (Baixeu-vos el fitxer :download:`escaquer.py `, i el fitxer :download:`pessa.py `) el mètode `__iter__`. Dins de `__iter__`, construïu un generador que faci el demanat. #. Afegir un nou mètode, `__str__`, a la classe :py:class:`peces.Peça` que retorna un símbol que indica el valor de la peça. Per exemple, .. literalinclude:: test_escaquer2.txt :language: python :lines: 4-9 Per implementar el mètode `__str__`, afegiu a la classe :py:class:`peces.Peça` l'atribut de classe següent: .. py:attribute:: peces.Peça.símbol .. literalinclude:: solucio/peces.py :language: python3 :lines: 8-19 Aleshores, el mètode `__str__` només ha de consultar el diccionari :py:attr:`peces.Peça.símbol` per retornar l'*string* amb el símbol que cal. #. Afegir un nou mètode, `__str__`, a la classe :py:class:`Escaquer`. Un exemple del resultat del mètode pel cas d'un :py:class:`Escaquer` `e` inicialitzat amb la configuració inicial del joc d'escacs: .. literalinclude:: test_escaquer2.txt :language: python :lines: 26-34 Fer-ho a partir de l'iterador prèviament dissenyat, i només amb les :ref:`funcions predefinides de python `, :py:mod:`itertools`, :py:mod:`functools` i :py:mod:`operator` (sense :ref:`for ` ni :ref:`while `). .. note:: Disposeu de jocs de de proves al fitxer :download:`test_escaquer2.txt`. .. rubric:: Solució Disposeu d'una solució als fitxers :download:`escaquer.py ` i :download:`peces.py `.