2016-11-30 7 views
1

私は特定のプロジェクトに取り組んでいますが、これにはバグがあります。演劇は再び 'いいえ'のために完全に働く。しかし、それはこの私が「はい」と入力するたびに表示されます。Pythonのハングマンゲーム

TIME TO PLAY HANGMAN 
Do you want to play again (yes or no)? 

ここに私のコード全体が

import random 

def Hangman(): 
print ('TIME TO PLAY HANGMAN') 

wordlist =['apples', 'oranges', 'grapes', 'pizza', 'cheese', 'burger'] 
secret = random.choice(wordlist) 
guesses = 'aeiou' 
turns = 5 

while turns > 0: 
    missed = 0 
    for letter in secret: 
     if letter in guesses: 
      print (letter,end=' ') 
     else: 
      print ('_',end=' ') 
      missed= missed + 1 

    print 

    if missed == 0: 
     print ('\nYou win!') 
     break 

    guess = input('\nguess a letter: ') 
    guesses += guess 

    if guess not in secret: 
     turns = turns -1 
     print ('\nNope.') 
     print ('\n',turns, 'more turns') 
     if turns < 5: print ('\n | ') 
     if turns < 4: print (' O ') 
     if turns < 3: print (' /|\ ') 
     if turns < 2: print (' | ') 
     if turns < 1: print ('/\ ') 
     if turns == 0: 
      print ('\n\nThe answer is', secret) 

playagain = 'yes' 
while playagain == 'yes': 
    Hangman() 
    print('Do you want to play again? (yes or no)') 
    playagain = input() 
+0

コードを実行することさえできません。それは全面的に壊れています。 – DejaVuSansMono

+0

hangman関数のその部分がそのようにコードの大部分をインデントするだけでよい – Navidad20

答えて

2

それはあなたのエディタでないようなコードがここに見える場合は、あなたの問題はあなたがいないということですprint('TIME TO PLAY HANGMAN')の後にすべてのコードをインデントしています。したがって、pythonはそれが外側のスコープにあると考え、一度しか実行しません。それはのように見える必要があります:

def Hangman(): 
    print ('TIME TO PLAY HANGMAN') 
    wordlist =['apples', 'oranges', 'grapes', 'pizza', 'cheese', 'burger'] 
    # etc. 

playagain = 'yes' 
while playagain == 'yes': 
    # etc. 
1

あなたHangman機能がない唯一のものは印刷「絞首刑執行人を遊ぶ時間」です。それ以外はすべて関数外です。あなたのインデントを修正して、ゲームプレイループを関数内に入れてください。それはうまくいくはずです。

0

あなたは、whileループで立ち往生している:

playagain = 'yes' 
while playagain == 'yes': 
    Hangman() 
    print('Do you want to play again? (yes or no)') 
    playagain = input() 

あなたのループが継続的にplayagain == 'yes'かどうかを確認しようとしています。 yesを入力するので、実行するwhileループの条件は引き続きtrueです。これが再度実行され、ステートメントが出力されるのです。

私はあなたのコードを実行しなかったし、残りの部分をチェックしなかったが、あなたが与えた問題に基づいて、これがあなたの修正であるはずです。

関連する問題