【发布时间】:2014-11-03 00:47:47
【问题描述】:
我正在尝试编写一个用于玩刽子手的函数,除了函数无法识别何时赢得游戏之外,一切都运行良好。
---编辑---
这是我修改后的代码
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
【问题讨论】:
-
我的第一个指导词是“功能分解”。与其将整个程序编写在一个函数中,不如将其编写为多个函数。然后你就可以对每个子功能进行全面测试,这使得问题确定变得更加容易。
标签: python loops for-loop while-loop nested-loops