我正在尝试写一个函数,用来扮演刽子手,一切都很完美,除了这个函数不知道什么时候游戏赢了。
编辑
这是我修改过的代码
def hangman():
word = choose_word(wordlist)
guessed_word = len(word)*['_']
guesses = 10
available_letters = "abcdefghijklmnopqrstuvwxyz"
guessed_letters = ""
letters_correct = 0
print "Welcome to the game, Hangman!"
print "I am thinking of a word that is", len(word), "letters long."
print "Available letters:", available_letters
print "You have", guesses, "guesses."
while letters_correct != len(word):
guess = raw_input("enter your guess:")
if len(guess)==1 and guess.isalpha():
if guessed_letters.find(guess) != -1:
print "You already picked", guess
else:
guessed_letters = guessed_letters + guess
index1 = word.find(guess)
if index1 == -1:
print "The letter",guess,"is not in the word", ' '.join(guessed_word)
guesses = guesses - 1
print "You have", guesses, "guesses left."
if guesses == 0:
return "You are out of guesses. You lose. The word was "+ word + "."
available_letters = available_letters.replace(guess, '')
print "Available letters:", available_letters
else:
letters_correct = letters_correct + word.count(guess)
print"The letter", guess, "is in the word."
for i in range(len(word)):
if guess == word[i]:
guessed_word[i] = guess
print ' '.join(guessed_word)
if letters_correct != len(word):
print "You have", guesses, "guesses left."
available_letters = available_letters.replace(guess, '')
print "Available letters:", available_letters
elif guesses <= 0:
return "You are out of guesses. You lose. The word was "+ word + "."
else:
print "Please guess a single letter in the alphabet."
if letters_correct == len(word):
return "Congratualations! You figured out that the word is "+ word发布于 2014-11-03 01:05:33
挂人游戏循环不终止问题的原因是游戏同时循环检查的letters_correct计数器变量。
while letters_correct != len(word):假设这个词是香蕉,我猜字母a
代码中处理正确猜测的分支以以下行开始:
letters_correct = letters_correct + 1在我的单词、香蕉、和a中,letters_correct变量应该增加三次。现在,如果我猜n,letters_correct应该增加两次。
在当前的实现猜测中,我按顺序只增加letters_correct两次(2),而应该是5。因此,当增加letters_count增量时,猜测次数出现在word中。
letters_count = letters_count + word.count(guess)这样,在游戏循环中,检查letters_count变量实际上可以达到单词的长度。
发布于 2014-11-03 01:02:44
你有没有考虑过你的单词有多个字母的情况?
目前,如果用户猜测正确,则只增加一次letters_correct。如果每次增加一次正确字母的数量,它就会工作。
https://stackoverflow.com/questions/26706275
复制相似问题