Peter wrote: >Jason wrote: > > > >>A week ago I posted a simple little hi-score routine that I was using to >>learn Python. >> >>I've only just managed to examine the code, and the responses that >>people gave, and I'm now seriously struggling to understand why things >>aren't working correctly. >> >>At present my code is as follows... >> >>import random >>import bisect >> >>class HiScores: >> def __init__(self,hiScores): >> self.hiScores=[entry for entry in hiScores] >> >> def showScores(self): >> for score,name in self.hiScores: >> score=str(score).zfill(5) >> print "%s - %s" % name,score >> >> >> def addScore(self,score,name): >> score.zfill(5) >> bisect.insort(self.hiScores,(score,name)) >> if len(self.hiScores)==6: >> self.hiScores.pop() >> >> def lastScore(self): >> return self.hiScores[-1][0] >> >>def main(): >> >>hiScores=[('10000','Alpha'),('07500','Beta'),('05000','Gamma'),('02500','Delta'),('00000','Epsilon')] >> >> >> a=HiScores(hiScores) >> print "Original Scores\n---------------" >> a.showScores() >> >> while 1: >> newScore=str(random.randint(0,10000)) >> if newScore > a.lastScore(): >> print "Congratulations, you scored %s " % newScore >> name=raw_input("Please enter your name :") >> a.addScore(newScore,name) >> a.showScores() >> >>if __name__=="__main__": >> main() >> >> >>My first problem (lack of understanding of course) is that if I run the >>above, I get an error saying: >> >> print "%s - %s" % name,score >>TypeError: not enough arguments for format string >> >> >>Now I understand what it's saying, but I don't understand why. >> >>If I change the code to read: >> >>print "%s - %n" % name, score (thinking of course that ah-ha, score is >>numeric) then I get the same error. >> >>The only way for the program to run is to simply have >> >>print name,score (or print score,name) >> >> >> >> >This is because 'print' is accepting 'score' as a seperate argument, not >the formatting, as you want it to. >Try 'print "%s - %s" % (name, score)' > > > > >>The final part that's simply not working correctly is that the entire >>program isn't sorting the data. >> >>If I run the program and get a score of, say, 6789, then when I add my >>name, nothing is entered. I have changed the clause that deletes (pops) >>the last array if the array count is 6 and seen what figures are being >>entered into the array. >> >>Sure enough they are going in the array, and they are being sorted, but >>they are only being sorted AFTER the 00000 of the initial array creation. >> >>I'm pretty sure it's to do with comparing a string against an integer >>but can't for the life of me see where to force the comparrison to check >>against two integers. >> >> >> >> >> >Humm. This is a harder problem. I will copy this text into JEdit to >highlight the text and see if i cannot find the problem. > > > Correction: I will fix my apearently semi-broaken Python installation wich gives me undefined reference errors from math.h and then see if i cannot fix the problem. -.-
>>Apologies for going over old ground and if I'm not understanding, I'm >>getting there honest ;) >> >> >> >> >> > >HTH, >Peter > > > Peter -- http://mail.python.org/mailman/listinfo/python-list