15.8. Eliminación y reparto de los naipes

Otro metodo que podría ser útil para la clase Mazo es eliminaCarta, que toma un naipe como parámetro, lo elimina, y retorna verdadero (1) si el naipe estaba en el mazo, y falso (0) si no estaba:

   1: class Mazo:
   2:     ...
   3:     def eliminaCarta(self, carta):
   4:         if carta in self.cartas:
   5:             self.cartas.remove(carta)
   6:             return 1
   7:         else:
   8:             return 0

El operador in retorna verdadero si el primer operando esta en el segundo, el cual debe ser una lista o tupla. Si el primer operando es un objeto, Python usa el metodo __cmp__ del objeto para determinar la igualdad entre los elementos de la lista. Como el __cmp__ en la clase Carta verifica la igualdad en profundidad, el metodo eliminaCarta también verifica igualdad en profundidad.


Para repartir los naipes, queremos eliminar y devolver el naipe que ocupa la posición superior en el mazo. El metodo pop de las listas proporciona una manera conveniente de realizar esto:




   1: class Mazo:
   2:     ...
   3:     def darCarta(self):
   4:         return self.cartas.pop()

En realidad, pop elimina el ultimo naipe en la lista, así que en efecto estamos repartiendo desde el extremo inferior del mazo.
Otra operación mas que es muy probable necesitemos es la función booleana estaVacio, la cual devuelve verdadero si el mazo no contiene ningún naipe:




   1: class Deck:
   2:     ...
   3:     def estaVacio(self):
   4:         return (len(self.cartas) == 0)

 

 

 
0