2013-10-14 3 views
0

Код ниже продолжает пропускать функцию TryAgainQuestion() :::: Мне действительно нужна помощь !!! Это становится раздражающимPython Script not Working def

import time 
    ranname = "0" 

def AskForName(): 
    ranname = "1" 
    name = input("Please enter your name: ") 
    print("--------------------") 
    print(" .:: ",name," ::.") 
    print("--------------------") 
    print("  ") 
    time.sleep(2) 
    Start() 

def TryAgainQuestion(): 
    tryagain = input("Do you want to try again? (Y or N): ") 
    if (tryagain == "y" or "Y"): 
     AskForName() 

    else: 
     time.sleep(1) 
     print("Made By: Daniel Parker") 

def Start(): 
    if (ranname == "1"): 
     TryAgainQuestion() 

    if (ranname == "0"): 
     AskForName() 
Start() 

Спасибо, Dan

+1

Вы не можете изменить 'ranname' в' AskForName'; вместо этого он рассматривается как локальная переменная «AskForName». См. Этот вопрос: http://stackoverflow.com/questions/10588317/python-function-global-variables –

+3

Если ваши преподаватели не знают, что здесь не так, вы можете подумать о поиске лучшего учебного заведения. – aukaost

+1

Кроме того, 'tryagain ==" y "или" Y "' вероятно, не делает того, что вы хотите. Попробуйте tryagain в ["y", "Y"] '. –

ответ

0

Как было предложено, и сказано @georgesl это проблема сферы (пространство имен)

this Пожалуйста, прочитайте инструкцию, я прилагаю рабочий код класса:

import time 

class myClass(): 

    def __init__(self): 
     self.ranname = "0" 

    def AskForName(self): 
     self.ranname = "1" 
     name = raw_input("Please enter your name: ") 
     print("--------------------") 
     print(" .:: ", name, " ::.") 
     print("--------------------") 
     print("  ") 
     time.sleep(2) 
     self.Start() 

    def TryAgainQuestion(self): 
     tryagain = raw_input("Do you want to try again? (Y or N): ") 
     if (tryagain == "y"): 
      self.AskForName() 

     else: 
      time.sleep(1) 
      print("Made By: Daniel Parker") 

    def Start(self): 
     if self.ranname == "1": 
      self.TryAgainQuestion() 

     if self.ranname == "0": 
      self.AskForName() 

def main(): 

    myclass = myClass() 
    myclass.Start() 

    #end of main 

if __name__ == "__main__": 
    main() 
+0

Большое спасибо, ваша помощь очень удобна! – DParker

2

Это проблема Область применения: ranmame на второй линии не то же самое, один в функции AskForName. Вам нужно добавить global ranname в начале функции для правильного обновления.

import time 
ranname = "0" 

def AskForName(): 
    global ranname 
    ranname = "1"