2016-11-30 3 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

Вам просто нужно отложить основную часть кода, чтобы его часть функции палача – 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 функция делает печать "TIME TO PLAY Виселица". Все остальное находится вне функции. Исправьте свой отступ, чтобы поместить цикл игры в функцию, и он должен работать.

0

Вы застряли в то время цикла:

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

Ваш цикл непрерывно ищет, чтобы увидеть, если playagain == 'yes'. Поскольку вы вводите «да», условие для цикла while для выполнения по-прежнему истинно, поэтому он снова запускается и печатает ваши заявления.

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

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