> 文章列表 > python - 猜单词游戏

python - 猜单词游戏

python - 猜单词游戏

代码使用了Python内置的 random 模块来随机选择要猜测的单词

import random
# 定义单词列表
words = ['apple', 'banana', 'orange', 'pear', 'grape']# 随机选择一个单词
word = random.choice(words)

使用了集合 letters_guessed 来存储玩家猜测过的字母

# 创建一个用于存储玩家猜测过程的集合
letters_guessed = set()

并且使用循环和条件语句来控制游戏流程。

# 玩家有6次猜测机会
num_guesses = 6
# 游戏循环
while num_guesses > 0:

具体来说,代码先定义了需要猜测的单词列表 words,然后使用 random.choice() 方法从列表中随机选择一个单词。接下来,代码使用 set() 函数创建了一个空集合 letters_guessed,该集合用于存储玩家猜测过的字母。然后,代码设置了玩家可以猜测的次数 num_guesses,并输出欢迎信息和猜测次数。

接下来进入游戏循环。在每个循环迭代中,代码首先使用列表推导生成一个字符串,其包含已经猜测出的字母和尚未猜测出的字母的占位符 _。

# 输出当前猜测情况
print(' '.join([letter if letter in letters_guessed else '_' for letter in word]))

该字符串由 join() 方法连接起来并输出到控制台。然后,代码使用 input() 方法让玩家猜一个字母(注意,这里将玩家的输入全部转换为小写字母),并检查该字母是否存在于要猜的单词中。

# 让玩家猜一个字母guess = input('请猜一个字母:').lower()# 判断玩家是否猜对了if guess in word:

如果是,代码输出恭喜信息并将该字母添加到集合 letters_guessed 中;

 # 判断玩家是否猜对了if guess in word:print('恭喜你,你猜对了!')letters_guessed.add(guess)

否则,代码减少了一次猜测机会。

    else:print('很遗憾,你猜错了。')num_guesses -= 1

在每个循环迭代中,代码还检查玩家是否已经猜对了整个单词。如果是,代码输出恭喜信息并使用 break 退出游戏循环。

# 判断是否猜到了整个单词if word == guess:guesses_all_flag = Truebreak

最后,代码检查玩家是否还有剩余的猜测机会,如果没有,输出失败信息和正确的单词。

# 判断游戏是否结束
if guesses_all_flag:print('恭喜你,你猜对了整个单词!你还有{}次猜测机会!'.format(num_guesses))
elif num_guesses == 0:print('很遗憾,你没有猜对。正确的单词是 %s' % word)

完整代码:

import random# 定义单词列表
words = ['apple', 'banana', 'orange', 'pear', 'grape']# 随机选择一个单词
word = random.choice(words)# 创建一个用于存储玩家猜测过程的集合
letters_guessed = set()# 玩家有6次猜测机会
num_guesses = 6
guesses_all_flag = Falseprint('欢迎来到猜单词游戏!')
print('你有 %d 次猜测机会' % num_guesses)# 游戏循环
while num_guesses > 0:# 输出当前猜测情况print(' '.join([letter if letter in letters_guessed else '_' for letter in word]))# 让玩家猜一个字母guess = input('请猜一个字母:').lower()# 判断是否猜到了整个单词if word == guess:guesses_all_flag = Truebreak# 判断玩家是否猜对了if guess in word:print('恭喜你,你猜对了!')letters_guessed.add(guess)else:print('很遗憾,你猜错了。')num_guesses -= 1# 输出还有多少次猜测机会print('你还有 %d 次猜测机会' % num_guesses)# 判断游戏是否结束
if guesses_all_flag:print('恭喜你,你猜对了整个单词!你还有{}次猜测机会!'.format(num_guesses))
elif num_guesses == 0:print('很遗憾,你没有猜对。正确的单词是 %s' % word)

封装为一个方法以此可以继续游戏:

import randomdef play_game():# 定义单词列表words = ['apple', 'banana', 'orange', 'pear', 'grape']# 随机选择一个单词word = random.choice(words)# 创建一个用于存储玩家猜测过程的集合letters_guessed = set()# 玩家有6次猜测机会num_guesses = 6print('欢迎来到猜单词游戏!')print('你有 %d 次猜测机会' % num_guesses)# 游戏循环while num_guesses > 0:# 输出当前猜测情况current_guess = ' '.join([letter if letter in letters_guessed else '_' for letter in word])print(f'当前猜测情况:{current_guess}')# 让玩家猜一个字母guess = input('请猜一个字母:').lower()if len(guess) != 1 or not guess.isalpha():print('请输入一个字母!')continue# 判断玩家是否猜对了if guess in word:if guess not in letters_guessed:print('恭喜你,你猜对了!')letters_guessed.add(guess)else:print('你已经猜过这个字母了,请重新猜测。')else:print('很遗憾,你猜错了。')num_guesses -= 1# 检查是否猜对了整个单词if set(word) == letters_guessed:print(f'恭喜你,你猜对了整个单词【{word}】!')return True# 输出还有多少次猜测机会print(f'你还有 {num_guesses} 次猜测机会')print(f'很遗憾,你没有猜对。正确的单词是 {word}')return False# 主程序
while True:continue_playing = input('是否开始新游戏?(Y/N)').upper()if continue_playing != 'Y':breakplay_game()print('谢谢游玩,再见!')