使用函数,词表为导入的txt,用python帮我写一个hangman游戏
时间: 2024-02-23 15:02:54 浏览: 158
好的,以下是一个简单的 Hangman 游戏的实现,它使用了一个导入的文本文件作为词汇表。你可以根据需要进行修改和扩展。
```python
import random
# 从文件中读取词汇表
with open('words.txt') as f:
words = f.read().splitlines()
# 随机选择一个单词作为答案
answer = random.choice(words)
# 将答案转换为小写字母
answer = answer.lower()
# 初始化游戏状态
correct_guesses = set()
incorrect_guesses = set()
max_attempts = 6
# 用下划线表示未猜到的字母
hidden_answer = ''.join(['_' if c not in correct_guesses else c for c in answer])
# 游戏循环
while True:
# 输出当前游戏状态
print('Word:', hidden_answer)
print('Incorrect guesses:', ', '.join(incorrect_guesses))
print('Attempts remaining:', max_attempts - len(incorrect_guesses))
# 玩家猜一个字母
guess = input('Guess a letter: ').lower()
# 检查猜测是否合法
if len(guess) != 1 or not guess.isalpha():
print('Invalid guess. Please enter a single letter.')
continue
# 检查猜测是否已经猜过了
if guess in correct_guesses or guess in incorrect_guesses:
print('You already guessed that letter.')
continue
# 检查猜测是否正确
if guess in answer:
correct_guesses.add(guess)
hidden_answer = ''.join(['_' if c not in correct_guesses else c for c in answer])
if '_' not in hidden_answer:
print('Congratulations, you won!')
break
else:
incorrect_guesses.add(guess)
if len(incorrect_guesses) == max_attempts:
print('Sorry, you lost. The answer was', answer)
break
```
在这个实现中,我们首先使用 `with open('words.txt') as f` 打开一个文本文件,然后使用 `f.read().splitlines()` 读取其中的词汇表。
接着,我们使用 `random.choice(words)` 随机选择一个单词作为答案,然后使用 `lower()` 方法将其转换为小写字母。
游戏循环中,我们首先输出当前游戏状态,然后等待玩家输入一个字母作为猜测。
接着,我们检查猜测是否合法,是否已经猜过了,或者是否正确。如果猜测正确,我们将其添加到正确猜测集合中,并更新隐藏的答案;如果猜测不正确,我们将其添加到错误猜测集合中,并检查是否已经达到了最大尝试次数。
最后,如果玩家赢得了游戏,我们输出一个祝贺消息,并使用 `break` 退出游戏循环;如果玩家输了游戏,我们输出答案并使用 `break` 退出游戏循环。
阅读全文