2016-04-19 28 views
-2

私のコードに「未定義」エラーが発生しているか、または変数が間違って再定義されています。ループが実行されるたびに、ループ内にある変数を再定義しようとしています。しかし、問題は、(私の変数がループの外で定義されているとき)、変数が未定義のエラーになるか、ループが再初期化されたときに変数が変更されず、ゼロにリセットされるということです。ループ内の変数の再定義

def game(): 
    scorePlayer = 0 
    scoreAI = 0 #If I define it here I get the latter of the two errors explained. 
    number = random.randint(1, 6) 
    print ("Your score is ", scorePlayer, ". Your opponent's score is ", scoreAI, ".") #This is where it tells me it is referenced before defined if I define outside the loop. 
    print (" ") 
    print ("Rolling...") 
    print (" ") 
    time.sleep(2) 
    print ("You have rolled a ", number, ".") 
    print (" ") 
    print ("Player, would you like to hold (enter 'hold') or roll (enter 'roll')?") 
    print (" ") 
    decide = raw_input(" ") 
    if decide == 'hold': 
     print (" ") 
     scorePlayer = tempScorePlayer + scorePlayer 
     gameAI() 
    elif decide == 'roll': #changed to elif 
     print (" ") 
     if number == 1: 
      print ("You have rolled a 1. You will not gain points from this turn.") 
      print (" ") 
      tempScorePlayer = 0 
      gameAI() 
     elif number >= 2: #changed to elif 
      print (" ") 
      tempScorePlayer = number + tempScorePlayer 
      game() 
    if scorePlayer >= 100: 
     winPlayer() 

私は、ループを妨げずに動作させることができないように、どこにでも変数を定義しようとしました。

ご協力いただきありがとうございます。

+2

に等しいです。グローバル変数の値にアクセスすることはできますが、関数の開始時にグローバル変数を宣言することなく、関数全体のスケールでグローバル変数を変更することはできません。 – mauve

+0

ここにループはありません...?あなたは 'グローバル'を見たことがありますか? – fuenfundachtzig

答えて

0

は、この方法を試してください。

def game(): 
    scorePlayer = 0 
    scoreAI = 0 #If I define it here I get the latter of the two errors explained. 
    number = random.randint(1, 6) 
    print ("Your score is %d. Your opponent's score is %d."%(scorePlayer, scoreAI)) #This is where it tells me it is referenced before defined if I define outside the loop. 
    print (" ") 
    print ("Rolling...") 
    print (" ") 
    time.sleep(2) 
    print ("You have rolled a %d.", number) 
    print (" ") 
    print ("Player, would you like to hold (enter 'hold') or roll (enter 'roll')?") 
    print (" ") 
    decide = raw_input(" ") 
    if decide == 'hold': 
     print (" ") 
     scorePlayer += tempScorePlayer 
     gameAI() 
    if decide == 'roll': 
     tempScorePlayer = 0 
     print (" ") 
     if number == 1: 
      print ("You have rolled a 1. You will not gain points from this turn.") 
      print (" ") 
      gameAI() 
     if number >= 2: 
      print (" ") 
      tempScorePlayer += number 
      game() 
    if scorePlayer >= 100: 
     winPlayer() 

私は、デフォルトではそれに0を設定し、tempScorePlayer変数を変更しました。

注:tempScorePlayer += numberそれはだあなただけ*ローカル*変数を使用して作業している、関数内tempScorePlayer = tempScorePlayer + number

関連する問題