[Pythonmac-SIG] How to debug?
Pierre Thibault
p.thibault at bigfoot.com
Thu May 27 12:31:53 EDT 2004
Le 27 mai 2004, à 06:33, Michael Hudson a écrit :
> What kind of app are you debugging? That impacts the answer quite a
> lot...
>
I usually program small app. I use Python as a multipurpose language.
For me, it is a replacement of the good old BASIC. I'm using it to
apply some of the concept that I am learning at school.
I am expecting a debugger. I want to be able to run my code line by
line and I want to be able to see the value of my variables as they
change.
Last monday, I was sick. So I made a little Python app to solve "mots
cachés" to spare time. I don't know how you are calling this in English
"hidden words"?
Here is the code. This is an example of the small apps I do. I gives
the letters not found in capital.
------------------------------------------------------------------------
-------------------------
import copy
class CrossWordSolver(object):
def __init__( self , letters = [""], words = [""]):
self.letters = letters # Mutable sequence of string
self.words = words # Mutable sequence of string
def getLetters( self ):
return copy.deepcopy( self._letters )
def setLetters( self, letters ): # letters is a mutable sequence a
string
self._letters = copy.deepcopy( letters )
self._width = len( self._letters[0] )
self._height = len ( self._letters )
self._letters = [i.upper() for i in self._letters]
letters = property( getLetters, setLetters, doc = "Letters of the
crossword")
def getWords( self ):
return copy.deepcopy( self._words )
def setWords( self, words ): # words is a mutable sequence of word
self._words = copy.deepcopy( words )
self._words = [i.upper() for i in self._words]
words = property( getWords, setWords, doc = "Words to find")
def solve( self ):
for word in self._words:
for dx in -1, 0, 1:
for dy in -1, 0, 1:
if dx+dy:
for x in xrange( self._width ):
for y in xrange( self. _height ):
wX, wY = x, y
for letter in word:
if wX >= self._width or wY >= self._height : break
if self._letters[wY][wX].upper() != letter.upper() : break
wX += dx
wY += dy
else:
for i in xrange( len( word ) ):
i = x+dx*i
line = self._letters[y]
self._letters[y] = line[0:i]+line[i].lower()+line[i+1:]
y += dy
return self._letters
if __name__ == "__main__":
crossWordSolver = CrossWordSolver()
crossWordSolver.letters = ["tnpevideoenmyheros", "hcoehfdnairfaveuru",
"oeorrtgauchepmarco", "relnegnrertitapism", "amsbspoesignergite",
"xiosmuplmehcuabedr", "urnjaelaatlmollets", "eaiatisannasunisoe",
"scmrnrmntaarroboti", "aloraoecerdmtsiloc", "vedeiuiriremoeanth",
"omilftreneaxirrore", "tuvlniuvohcbasmyur", "raaioecaunauotorqe",
"apnmcrepitiratibut", "fdouzeuqsidaesrmep", "iertilombricrmeero",
"cgaufreevuafngorge"]
crossWordSolver.words = ["admis", "armoire", "colis", "confiant",
"consulat", "crampe", "debauche", "disque", "divan", "domino", "douze",
"ecurie", "embryon", "ensemble", "errant", "essaim", "fauve", "faveur",
"friand", "gauche", "gaufre", "gorge", "grain", "harem", "heros",
"hymne", "inoui", "jarre", "litre", "lombric", "mante", "menthe",
"mille", "miracle", "mollet", "napperon", "opter", "paume", "paver",
"pergola", "rabot", "remous", "repit", "robot", "roman", "routier",
"sauce", "seiche", "signe", "sinus", "tapis", "tarte", "taxer",
"thorax", "tigre", "titrer", "trafic", "truquer", "vaseux", "video"]
print crossWordSolver.solve()
------------------------------------------------------------------------
--------
I really like to do this in Python because it is so easy to do nice
things with few code. Is it helping?
Regards.
---------------------
Pierre
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 3851 bytes
Desc: not available
Url : http://mail.python.org/pipermail/pythonmac-sig/attachments/20040527/b558bfc2/attachment.bin
More information about the Pythonmac-SIG
mailing list