繁体   English   中英

虽然循环不会在 Python 中中断

[英]While Loop Wont Break in Python

我不明白为什么我的 while 循环不会中断来完成刽子手程序。 我已经包含了整个程序,以便为您提供一些背景信息。 它将打印游戏结束消息,但不会打印获胜消息

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()

只需将 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM