虽然循环不会中断 Python
While Loop Wont Break in Python
我不明白为什么我的 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()
只需要将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()
我不明白为什么我的 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()
只需要将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()