проблема в том, что я пытался адаптировать функцию Python 2 к Python 3.14, функция — eliminaCarta, которая берет класс с именем carta и удаляет эту карту для списка в другом классе, называемом mazo, проблема в том, что функция удаляет первый элемент списка, а не правильный элемент, я не знаю, в чем проблема. Код содержит еще одну функцию, но принципал с проблемой — последний в классе mazo
Код: Выделить всё
import random
class Carta:
listaDePalos = ["Tréboles", "Diamantes", "Corazones", "Picas"]
listaDeValores = ["nada", "As", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Sota", "Reina", "Rey"]
def __init__(self, palo=0, valor=0):
self.palo = palo
self.valor = valor
def __str__(self):
return (self.listaDeValores[self.valor] + " de " + self.listaDePalos[self.palo])
def __lt__(self, other):
# controlar el palo
if self.palo > other.palo: return 1
if self.palo < other.palo: return -1
if self.valor == 1 and self.valor != other.valor: return 1
if other.valor == 1 and self.valor != other.valor: return -1
# si son del mismo palo, controlar el valor
if self.valor > other.valor: return 1
if self.valor < other.valor: return -1
# los valores son iguales, es un empate
return 0
def __gt__(self, other):
# controlar el palo
if self.palo > other.palo: return 1
if self.palo < other.palo: return -1
if self.valor == 1 and self.valor != other.valor: return 1
if other.valor == 1 and self.valor != other.valor: return -1
# si son del mismo palo, controlar el valor
if self.valor > other.valor: return 1
if self.valor < other.valor: return -1
# los valores son iguales, es un empate
return 0
def __eq__(self, other):
if self.valor == other.valor: return 1
else: return -1
class Mazo:
def __init__(self):
self.cartas = []
for palo in range(4):
for valor in range(1, 14):
self.cartas.append(Carta(palo, valor))
def muestraMazo(self):
for carta in self.cartas:
print(carta)
def __str__(self):
s = ""
for i in range(len(self.cartas)):
s = s + " "*i + str(self.cartas[i]) + "\n"
return s
def mezclar(self):
nCartas = len(self.cartas)
for i in range(nCartas):
j = random.randrange(i, nCartas)
self.cartas[i], self.cartas[j] = self.cartas[j], self.cartas[i]
def __contains__(self, item):
return item in self.items
def eliminaCarta(self, carta):
if carta in self.cartas:
self.cartas.remove(carta)
return 1
else:
return 0
carta = Carta(1,1)
mazo = Mazo()
print(mazo)
Код: Выделить всё
As de Tréboles
2 de Tréboles
3 de Tréboles
4 de Tréboles
5 de Tréboles
6 de Tréboles
7 de Tréboles
8 de Tréboles
9 de Tréboles
10 de Tréboles
Sota de Tréboles
Reina de Tréboles
Rey de Tréboles
As de Diamantes
2 de Diamantes
3 de Diamantes
4 de Diamantes
5 de Diamantes
6 de Diamantes
7 de Diamantes
8 de Diamantes
9 de Diamantes
10 de Diamantes
Sota de Diamantes
Reina de Diamantes
Rey de Diamantes
As de Corazones
2 de Corazones
3 de Corazones
4 de Corazones
5 de Corazones
6 de Corazones
7 de Corazones
8 de Corazones
9 de Corazones
10 de Corazones
Sota de Corazones
Reina de Corazones
Rey de Corazones
As de Picas
2 de Picas
3 de Picas
4 de Picas
5 de Picas
6 de Picas
7 de Picas
8 de Picas
9 de Picas
10 de Picas
Sota de Picas
Reina de Picas
Rey de Picas
Код: Выделить всё
carta = Carta(1,13)
mazo = Mazo()
mazo.eliminaCarta(carta)
print(mazo)
Код: Выделить всё
2 de Tréboles
3 de Tréboles
4 de Tréboles
5 de Tréboles
6 de Tréboles
7 de Tréboles
8 de Tréboles
9 de Tréboles
10 de Tréboles
Sota de Tréboles
Reina de Tréboles
Rey de Tréboles
As de Diamantes
2 de Diamantes
3 de Diamantes
4 de Diamantes
5 de Diamantes
6 de Diamantes
7 de Diamantes
8 de Diamantes
9 de Diamantes
10 de Diamantes
Sota de Diamantes
Reina de Diamantes
Rey de Diamantes
As de Corazones
2 de Corazones
3 de Corazones
4 de Corazones
5 de Corazones
6 de Corazones
7 de Corazones
8 de Corazones
9 de Corazones
10 de Corazones
Sota de Corazones
Reina de Corazones
Rey de Corazones
As de Picas
2 de Picas
3 de Picas
4 de Picas
5 de Picas
6 de Picas
7 de Picas
8 de Picas
9 de Picas
10 de Picas
Sota de Picas
Reina de Picas
Rey de Picas