2015-02-10 3 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 why

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

ответ

0

(1) Вы имеете в виду message, который не определен, если не name s не найдены в scoresList[i]. Положить a

message = "" 

линия перед вашим for петля. Я не знаю вашего фактического намерения, поэтому это приведет к ошибке, но проверьте, правильна ли логика.

(2) Вы неправильно проводите сравнение. Вы должны написать

if message == "Score updated": 

вместо

if message("Score updated"): 
+0

Также на последних двух строках: 'if message (« Score updated »):' 'message =" Новая оценка добавлена ​​"' Я предполагаю, что вы хотите, чтобы 'message == 'Score updated'' – sbochins

Смежные вопросы