On Dec 8, 10:07 pm, Chris <[EMAIL PROTECTED]> wrote: > On Dec 8, 8:32 pm, Shawn Minisall <[EMAIL PROTECTED]> wrote: > > > > > I'm writing a game that uses two functions to check and see if a file > > called highScoresList.txt exists in the main dir of the game program. > > If it doesn, it creates one. That part is working fine. The problem is > > arising when it goes to read in the high scores from the file when I > > play again. > > > This is the error msg python is giving me > > > Traceback (most recent call last): > > File "<pyshell#0>", line 1, in <module> > > main() > > File "I:\PYTHON\PROJECT #3\PROJECT3.PYW", line 330, in main > > if(hasHighScore(wins) == True): > > File "I:\PYTHON\PROJECT #3\PROJECT3.PYW", line 175, in hasHighScore > > scores[i],names[i] = string.split(line,"\t") > > ValueError: need more than 1 value to unpack > > > Here's the relavant code: > > > def hasHighScore(score): > > #opens highScoresList.txt > > infile = open("highScoresList.txt",'r') > > scores = [0,0,0] > > names = ["","",""] > > > #reads in scores from highScoresList.txt > > i=0 > > for line in infile.readlines(): > > scores[i],names[i] = string.split(line,"\t") > > names[i]=string.rstrip(names[i]) > > i += 1 > > infile.close() > > > #compares player's score with those in highScoresList.txt > > i=0 > > for i in range(0,len(scores)): > > if(score > int(scores[i])): > > return True > > else: > > return False > > > def setHighScores(score,name): > > #opens highScoresList.txt > > infile = open("highScoresList.txt",'r') > > scores = [0,0,0] > > names = ["","",""] > > > #reads in scores from highScoresList.txt > > i=0 > > for line in infile.readlines(): > > scores[i],names[i] = string.split(line,"\t") > > scores[i]=int(scores[i]) > > names[i]=string.rstrip(names[i]) > > i += 1 > > infile.close() > > > #shuffles thru the highScoresList.txt and inserts player's score if > > higher then those in file > > i=len(scores) > > while(score > scores[i-1] and i>0): > > i -= 1 > > > scores.insert(i,score) > > names.insert(i,name) > > scores.pop(len(scores)-1) > > names.pop(len(names)-1) > > > #writes new highScoresList.txt > > outfile = open("highScoresList.txt","w") > > > outfile.write (" High Score Name \n") > > outfile.write ("-------------------------------------------------\n") > > > i=0 > > for i in range(0,len(scores)): > > outfile.write("\t" + str(scores[i]) + "\t\t\t" + names[i] + "\n") > > outfile.close() > > > And here's the call to the functions at the end of my game, included in > > the error msg. > > > #adds player's score to high score list if high enough > > if(hasHighScore(wins) == True): > > setHighScores(wins,getName(wins)) > > > And this is what the text file looks like when it happens. > > > High Score Name > > ------------------------------------------------- > > 15 SHAWN > > 0 > > 0 > > > The answer is probably simple, I've just been working on this program so > > long that my brain has turned to mush. Any help would be much > > appreciated...thanks. > > Your first two lines in your highscores file has no Tab Characters. > When reading the file you could do: > > for (i, line) in file_input: > if i < 2: > continue > > # do normal file parsing > > There are better ways to structure your code though, but that's for > you.
Apologies, I meant 'in enumerate(file_input)' -- http://mail.python.org/mailman/listinfo/python-list