<p>良好的程序结构使生活变得更加轻松:</p>
<pre><code>from itertools import cycle
import string
UNKNOWN = "_"
ALWAYS_SEEN = set(" " + string.punctuation)
def get_letter(prompt):
while True:
ch = input(prompt).strip().upper()
if len(ch) == 1:
return ch
def seen_word(word, guessed):
return ''.join(ch if ch in guessed or ch in ALWAYS_SEEN else UNKNOWN for ch in word)
def play_hangman(word, players):
word = word.strip().upper()
guessed = set()
seen = seen_word(word, guessed)
for current_player in cycle(players):
while True:
print(seen)
ch = get_letter("{}: guess a letter: ".format(current_player))
if ch in guessed:
print("That letter has already been guessed!")
break
else:
guessed.add(ch)
if ch in word:
print("That's the way to do it!")
seen = seen_word(word, guessed)
else:
print("Sorry, that letter is not in the word.")
break
if seen == word:
print("Hurray! {} won!".format(current_player))
return current_player
def main():
word = "TOYS"
players = ["Player 1", "Player 2"]
play_hangman(word, players)
if __name__=="__main__":
main()
</code></pre>