虽然循环不会在Python中破坏

问题描述 投票:-1回答:1

我无法弄清楚为什么我的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()
python while-loop break
1个回答
0
投票

只需将elif移动到代码的开头即可。所以现在它在继续该计划之前进行检查。

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()
© www.soinside.com 2019 - 2024. All rights reserved.