python - 刽子手获胜条件问题
问题描述
我无法让我的代码触发获胜条件,我不知道我错过了什么。游戏使用 Python turtle 来绘制刽子手,但这是游戏,实际上是函数,在我输了时停止,但在我赢时不会停止的部分:
def startGame():
word_list = ["cat", "dog", "fly", "hi", "bye", "five", "four"]
word = word_list[random.randint(0, 6)]
allowedGuesses = 5
guessesSoFar = 0
lettersUsedSoFar = ''
guss_word = ['_' for x in word]
name = input("What is your name? ")
print("Hello, " + name, ",it's time to play HangMan!")
print(guss_word)
while guessesSoFar < allowedGuesses:
guess = input("Guess a Letter!:")
if guess in word:
guess == lettersUsedSoFar
guss_word[word.index(guess)] = guess
print(guss_word)
print("Yes!" + guess + " is in the word")
print("Your Guesses So Far:" + lettersUsedSoFar)
else:
lettersUsedSoFar = lettersUsedSoFar + guess + ","
guessesSoFar = guessesSoFar + 1
drawHangman(guessesSoFar)
print(guss_word)
print("Oops!" + guess + " is not in the word")
print("Your Guesses So Far:" + lettersUsedSoFar)
startGame()
解决方案
一个明显的错误是这一行:
guess == lettersUsedSoFar
什么都不做。(幸运的是。)
您需要进行测试以确定用户是否获胜。由于guss_word
开始时所有下划线字符,测试可能是它是否有任何下划线留在它:
if '_' not in guss_word:
# Winner! (Now get out of program.)
else:
# Good answer but keep playing
以下是我通过此修复、样式更改和代码优化对您的程序进行的返工:
from random import choice
WORD_LIST = ["cat", "dog", "fly", "hi", "bye", "five", "four"]
ALLOWED_GUESSES = 5
def drawHangman(count):
pass
def startGame():
name = input("What is your name? ")
print("Hello, " + name,", it's time to play HangMan!")
guessesSoFar = 0
letters_used = ''
word = choice(WORD_LIST)
incomplete_word = ['_' for x in word]
print(*incomplete_word)
while guessesSoFar < ALLOWED_GUESSES:
letter = input("Guess a letter: ")
if letter in word:
incomplete_word[word.index(letter)] = letter
print(*incomplete_word)
if '_' not in incomplete_word:
print("You win!")
break
else:
print("Yes!", letter + " is in the word.")
else:
if letter not in letters_used:
letters_used += letter
guessesSoFar += 1
drawHangman(guessesSoFar)
print(*incomplete_word)
print("Oops!", letter + " is not in the word")
print("Your guesses so far:", ','.join(letters_used))
startGame()
无论是这个返工还是你的原作,都没有清楚地定义它们如何处理重复的字母,比如“here”中的“e”。
推荐阅读
- python - 具有固定分类性的 Networkx 图
- angular - 如何使用 Travis(没有捕获的浏览器)进行 Angular 单元测试?
- python - 使用 MAPI Python 解析 Outlook 邮件中的附件正文
- typescript - 是否可以使用更具体的泛型重新定义函数?
- google-maps - 现在调整大小消失了如何刷新谷歌地图用户界面?
- android - iOS 和 Android Facebook SDK 的安全性如何?
- character-encoding - Apache Beam / GCP 数据流编码问题
- visual-studio - 分支时如何解决 TF10175 错误
- selenium - 如何根据提供的 html 检索标签文本?
- return - 从函数返回结构变量