Erro função Len
#Espadas -> 3
#Copas -> 2
#Ouros -> 1
#Paus -> 0
class Carta:
listaDeNaipes = ["Paus", "Ouros", "Copas", "Espadas"]
listaDePosicoes = ["narf", "As", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "Valete", "Rainha", "Rei"] #narf -> preencher o 0
def __init__(self, naipe=0, posicao=0):
self.naipe = naipe
self.posicao = posicao
def __str__(self):
return (self.listaDePosicoes[self.posicao] + " de " +
self.listaDeNaipes[self.naipe])
#__cmp__ recebe self e other, retorna 1 se o primeiro for maior
# e -1 se for menor, 0 se eles forem iguais
def __cmp__(self, other):
if self.naipe > other.naipe: return 1
if self.naipe < other.naipe: return -1
#msm naipe verifica a posicao
if self.posicao > other.posicao: return 1
if self.posicao < other.posicao: return -1
#posicoes iguais
return 0
class Baralho:
def __init__(self):
self.cartas = []
for naipe in range(4):
for posicao in range(1, 14):
self.cartas.append(Carta(naipe,posicao))
def imprimirBaralho(self):
for carta in self.cartas:
print carta
def embaralhar(self):
import random
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 removerCarta(self, carta):
if carta in self.cartas:
self.cartas.remove(carta)
return 1
else:
return 0
#remover e devolver a carta do topo
def distribuirCarta(self):
return self.cartas.pop()
#verifica se o baralho tem carta
def ehVazio(self):
return (len(self.cartas) == 0)
def distribuir(self, maos, nCartas=999):
nMaos = len(maos)
for i in range(nCartas):
if self.estahVazia(): break # interromper se acabaram as cartas
carta = self.pegarCarta() # pegar a carta do topo
mao = maos[i % nMaos] # quem deve receber agora?
mao.adicionarCarta(carta) # adicionar a carta a mao
class Mao(Baralho):
def __init__(self, nome=""):
self.cartas = []
self.nome = nome
def adicionarCarta(self, carta):
self.cartas.append(carta)
def __str__(self):
s = "Mao " + self.nome
if self.estahVazia():
return s + " esta vazia\n"
else:
return s + " contem\n" + Baralho.__str__(self)
baralho = Baralho()
baralho.embaralhar()
mao = Mao("Giovanni")
baralho.distribuir(mao, 5)
print mao.__str__()
O erro que está dando é:
nMaos = len(maos)
AttributeError: Mao instance has no attribute '__len__'
Eu tenho que instanciar a função len ? Como ? Ela jah nao é padrão do python ?
Discussão (19)
Carregando comentários...