Heretic Curse
11-05-2013, 13:20
Sono sempre io :)
# !/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import random
class Carta:
ListaSemi = ["Fiori", "Quadri", "Cuori", "Picche"]
ListaRanghi = ["impossibile", "Asso", "2", "3", "4", "5", "6", \
"7", "8", "9", "10", "Jack", "Queen", "King"]
def __init__(self, Seme = 0, Rango = 0):
self.Rango = Rango
self.Seme = Seme
def __str__(self):
return str(self.ListaRanghi[self.Rango]) + " di " + str(self.ListaSemi[self.Seme])
def __cmp__(self, Altro):
if self.Seme > Altro.Seme: return 1
if self.Seme < Altro.Seme: return -1
if self.Rango == 1 and self.Rango != Altro.Rango: return 1
if self.Rango > Altro.Rango: return 1
if self.Rango < Altro.Rango: return -1
class Mazzo:
def __init__(self):
self.Carte = []
for Seme in range(4):
for Rango in range(1, 13):
self.Carte.append(Carta(Seme, Rango))
def __str__(self):
s = ""
for i in range(len(self.Carte)):
s = s + " "*i + str(self.Carte[i]) + "\n"
return s
def Mescola(self):
NumCarte = len(self.Carte)
for i in range(NumCarte):
j = random.randrange(i, NumCarte)
x = 0
self.Carte[x] = self.Carte[i]
self.Carte[i] = self.Carte[j]
self.Carte[j] = self.Carte[x]
def RimuoviCarte(self, Carta):
if Carta in self.Carte:
self.Carte.remove(Carta)
return 1
else:
return 0
def PrimaCarta(self):
return self.Carte.pop()
def EVuoto(self):
return (len(self.Carte) == 0)
def Distribuisci(self, ListaMani, NumCarte=999):
NumMani = len(ListaMani)
for i in range(NumCarte):
if self.EVuoto(): break
Carta = self.PrimaCarta()
Mano = ListaMani[i%NumMani]
Mano.AggiungeCarta(Carta)
class Mano(Mazzo):
def __init__(self, Nome=""):
self.Carte = []
self.Nome = Nome
def __str__(self):
s = "La mano di " + self.Nome
if self.EVuoto():
s = s + " è vuota\n"
else:
s = s + " contiene tali carte:\n"
return s + Mazzo.__str__(self)
def AggiungeCarta(self, Carta):
self.Carte.append(Carta)
class GiocoDiCarte:
def __init__(self):
self.Mazzo = Mazzo()
self.Mazzo.Mescola()
class ManoOldMaid(Mano):
def RimuoveCoppie(self):
Conteggio = 0
CarteOriginali = self.Carte[:]
for CartaOrig in CarteOriginali:
CartaDaCercare = Carta(3-CartaOrig.Seme, CartaOrig.Rango)
if CartaDaCercare in self.Carte:
self.Carte.remove(CartaOrig)
self.Carte.remove(CartaDaCercare)
print "Mano di %s : %s elimina %s" % (self.Nome, CartaOrig, CartaDaCercare)
Conteggio = Conteggio + 1
return Conteggio
Partita = GiocoDiCarte()
Mano1 = ManoOldMaid("Volpio")
Partita.Mazzo.Distribuisci([Mano1], 13)
print Mano1
Mano1.RimuoveCoppie()
Errore:File "/home/meurem/Scrivania/untitled.py", line 103, in RimuoveCoppie
if CartaDaCercare in self.Carte
Traceback (most recent call last):
File "/home/meurem/Scrivania/untitled.py", line 114, in <module>
Mano1.RimuoveCoppie()
File "/home/meurem/Scrivania/untitled.py", line 103, in RimuoveCoppie
if CartaDaCercare in self.Carte:
TypeError: comparison did not return an int
Questi ultimi capitoli di "Pensare in Python" mi stanno dando un po' di problemi :/ inoltre sul libro ala terzultima riga veniva utilizzato il metodo Mescola anziché Distribuisci. L'argomento tuttavia era lo stesso, quindi era palesemente un errore del testo :D
Tuttavia il mio problema rimane quello della riga 103 (e l'annessa riga 114). Nemmeno googoland ho trovato un soluzione :(
# !/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import random
class Carta:
ListaSemi = ["Fiori", "Quadri", "Cuori", "Picche"]
ListaRanghi = ["impossibile", "Asso", "2", "3", "4", "5", "6", \
"7", "8", "9", "10", "Jack", "Queen", "King"]
def __init__(self, Seme = 0, Rango = 0):
self.Rango = Rango
self.Seme = Seme
def __str__(self):
return str(self.ListaRanghi[self.Rango]) + " di " + str(self.ListaSemi[self.Seme])
def __cmp__(self, Altro):
if self.Seme > Altro.Seme: return 1
if self.Seme < Altro.Seme: return -1
if self.Rango == 1 and self.Rango != Altro.Rango: return 1
if self.Rango > Altro.Rango: return 1
if self.Rango < Altro.Rango: return -1
class Mazzo:
def __init__(self):
self.Carte = []
for Seme in range(4):
for Rango in range(1, 13):
self.Carte.append(Carta(Seme, Rango))
def __str__(self):
s = ""
for i in range(len(self.Carte)):
s = s + " "*i + str(self.Carte[i]) + "\n"
return s
def Mescola(self):
NumCarte = len(self.Carte)
for i in range(NumCarte):
j = random.randrange(i, NumCarte)
x = 0
self.Carte[x] = self.Carte[i]
self.Carte[i] = self.Carte[j]
self.Carte[j] = self.Carte[x]
def RimuoviCarte(self, Carta):
if Carta in self.Carte:
self.Carte.remove(Carta)
return 1
else:
return 0
def PrimaCarta(self):
return self.Carte.pop()
def EVuoto(self):
return (len(self.Carte) == 0)
def Distribuisci(self, ListaMani, NumCarte=999):
NumMani = len(ListaMani)
for i in range(NumCarte):
if self.EVuoto(): break
Carta = self.PrimaCarta()
Mano = ListaMani[i%NumMani]
Mano.AggiungeCarta(Carta)
class Mano(Mazzo):
def __init__(self, Nome=""):
self.Carte = []
self.Nome = Nome
def __str__(self):
s = "La mano di " + self.Nome
if self.EVuoto():
s = s + " è vuota\n"
else:
s = s + " contiene tali carte:\n"
return s + Mazzo.__str__(self)
def AggiungeCarta(self, Carta):
self.Carte.append(Carta)
class GiocoDiCarte:
def __init__(self):
self.Mazzo = Mazzo()
self.Mazzo.Mescola()
class ManoOldMaid(Mano):
def RimuoveCoppie(self):
Conteggio = 0
CarteOriginali = self.Carte[:]
for CartaOrig in CarteOriginali:
CartaDaCercare = Carta(3-CartaOrig.Seme, CartaOrig.Rango)
if CartaDaCercare in self.Carte:
self.Carte.remove(CartaOrig)
self.Carte.remove(CartaDaCercare)
print "Mano di %s : %s elimina %s" % (self.Nome, CartaOrig, CartaDaCercare)
Conteggio = Conteggio + 1
return Conteggio
Partita = GiocoDiCarte()
Mano1 = ManoOldMaid("Volpio")
Partita.Mazzo.Distribuisci([Mano1], 13)
print Mano1
Mano1.RimuoveCoppie()
Errore:File "/home/meurem/Scrivania/untitled.py", line 103, in RimuoveCoppie
if CartaDaCercare in self.Carte
Traceback (most recent call last):
File "/home/meurem/Scrivania/untitled.py", line 114, in <module>
Mano1.RimuoveCoppie()
File "/home/meurem/Scrivania/untitled.py", line 103, in RimuoveCoppie
if CartaDaCercare in self.Carte:
TypeError: comparison did not return an int
Questi ultimi capitoli di "Pensare in Python" mi stanno dando un po' di problemi :/ inoltre sul libro ala terzultima riga veniva utilizzato il metodo Mescola anziché Distribuisci. L'argomento tuttavia era lo stesso, quindi era palesemente un errore del testo :D
Tuttavia il mio problema rimane quello della riga 103 (e l'annessa riga 114). Nemmeno googoland ho trovato un soluzione :(