python unboundLocalError为什么

时间:2015-02-10 18:59:01

标签: python scope

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()

以上是代码。显示的错误是:

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

1 个答案:

答案 0 :(得分:0)

(1)您指的是在message中找不到name时未定义的scoresList[i]。放一个

message = ""
for循环之前

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

(2)您正在进行错误的比较。你应该写

if message == "Score updated":

而不是

if message("Score updated"):