2015-02-10 85 views
-2
import os 

def createFile(): 
    if os.path.exists("highscores.txt") == False: 
     myFile = open("highscores.txt","w") 
    myFile.close() 

def inputInt(): 
    number = input(str("please input your score ")) 

    try: 
     return int(number) 
    except: 
     print ("this is not an acceptable input, please try again") 
     inputInt() 

def addScore(): 

    name = input("Please enter the name you wish to add") 
    score = inputInt() 
    messages = "thank you" 

    '''open the highscores line and read in all the lines to a list called scorelist. 
    then close the file''' 
    scoresFile = open("highscores.txt","r") 
    scoresList = scoresFile.readlines() 
    scoresFile.close() 

    #check each line in the scoresList list 
    for i in range(0,len(scoresList)): 

     #check to see if the name is in the line 
     if name in scoresList[i]: 

      #if it is then strip the name from the text. this should leave theb score 
      tempscore = scoresList[i].replace(name,"") 

      #if the score is higher then add it to the list 
      if int(tempscore)<score: 
       message = "Score updated" 
       scoresList[i] = (name + str(score)) 

       #write the scores back to the file 
       scoresFile = open("highscores.txt","w") 
       for line in scoresList: 
        scoresFile.write(line + "\n") 
       scoresFile.close() 

       #no need to continue so break 
       break 
      else: 
       #message as score too low 
       message= "score too low. not updated" 

    if message("Score updated"): 
     message = "New score added" 
     scoresFile = open("highscores.txt","a") 
     scoresFile.write(name + str(score) + "\n") 
     scoresFile.close() 
    print (message) 

addScore() 

上面是代码。示出的错误是:python unboundLocalError为什么

Traceback (most recent call last): 
File "E:\Computer Science\python code\highScores\highscores1.py", line 66, in <module> 
addScore() 
File "E:\Computer Science\python code\highScores\highscores1.py", line 60, in addScore 
File "E:\Computer Science\python code\highScores\highscores1.py", line 60, in addScore 

    if message("Score updated"): 
UnboundLocalError: local variable 'message' referenced before assignment 
+0

添加更多的细节,你的问题说明你的代码,你怎么得到了错误,而不只是代码。 – Ram 2015-02-10 19:07:16

回答

0

(1)你是指message当没有name S IN scoresList[i]发现这是未定义的。把

message = "" 

行在您的for循环之前。我不知道你的实际意图,所以这会使错误消失,但检查逻辑是否仍然正确。

(2)您正在做不正确的比较。你应该写

if message == "Score updated": 

,而不是

if message("Score updated"): 
+0

也在最后两行: '如果消息(“分数已更新”):' 'message =“添加新分数” 我假设你想要'message =='分数已更新' – sbochins 2015-02-10 19:04:12