Пока цикл не сломается в Python - PullRequest
0 голосов
/ 05 марта 2019

Я не могу понять, почему мой цикл while не прерывается, чтобы завершить программу hangman.Я включил всю программу, чтобы дать вам некоторый контекст.Будет напечатано сообщение об окончании игры, но не сообщение о выигрыше

import random
import os
import time

def playGame():
 wordList = ["dog", "bird", "chair", "computer", "elephant", "school"]
 letterList=[]
 underscoreList=[]
 guessesLeft = 6

 word = random.choice(wordList)
 #print(word)

 for letter in word:
  letterList.append(letter)
  underscoreList.append("_")
 #print(letterList)
 #print(underscoreList)

 while guessesLeft > 0:
  #os.system('clear') #clears screen
  print(underscoreList)
  print("You Have" , guessesLeft, "Guesses Remaining")

  userGuess = (input("Please enter a letter... \n>")).lower()
  if len(userGuess) != 1 or not userGuess.isalpha():
   print("Please Enter A Single Letter Only")
   time.sleep(1)
  elif userGuess in letterList:
   print(userGuess, "is there")
   time.sleep(1)
   for position, letter in enumerate(letterList):
    if letter == userGuess:
     underscoreList[position] = userGuess 
    elif '_' not in underscoreList:
     break
  else:
   print("Not In Word")
   time.sleep(2)
   guessesLeft -= 1

 if guessesLeft > 0:
  print("Congratulations you have guessed the word " , word)

 else:
  print("You Loser")


playGame()

1 Ответ

0 голосов
/ 05 марта 2019

Просто нужно переместить элиф в начало кода.Так что теперь он проверяет, прежде чем продолжить программу.

import random
import os
import time

def playGame():
    wordList = ["dog", "bird", "chair", "computer", "elephant", "school"]
    letterList=[]
    underscoreList=[]
    guessesLeft = 6

    word = random.choice(wordList)
    #print(word)

    for letter in word:
        letterList.append(letter)
        underscoreList.append("_")
 #print(letterList)
 #print(underscoreList)

    while guessesLeft > 0:
    #os.system('clear') #clears screen
        if '_' not in underscoreList:
            break
        print(underscoreList)
        print("You Have" , guessesLeft, "Guesses Remaining")

        userGuess = (input("Please enter a letter... \n>")).lower()
        if len(userGuess) != 1 or not userGuess.isalpha():
            print("Please Enter A Single Letter Only")
            time.sleep(1)
        elif userGuess in letterList:
            print(userGuess, "is there")
            time.sleep(1)
            for position, letter in enumerate(letterList):
                if letter == userGuess:
                    underscoreList[position] = userGuess 
        else:
            print("Not In Word")
            time.sleep(2)
            guessesLeft -= 1

    if guessesLeft > 0:
        print("Congratulations you have guessed the word " , word)

    else:
        print("You Loser")

playGame()
...