【Python】Python 实现猜单词游戏——挑战你的智力和运气!

news2024/11/20 1:25:25

文章目录

  • 前言
  • 学到什么?
  • 导入 random 模块
  • 定义生命次数
  • 定义神秘单词并进行随机选择
  • 定义 clue(猜测进度) 列表,用问号 '?' 初始化
  • 定义心形符号的 Unicode 编码
  • 初始化 guessed_word_correctly 变量
  • 定义更新猜测进度函数 update_clue
  • 主循环,直到生命次数用尽或猜对了整个单词才结束
  • 判断用户猜对了整个单词的情况
  • 判断用户猜对了某个字母的情况
  • 判断用户猜错了字母的情况
  • 根据游戏结果判断胜负,并输出相应信息
  • 完整代码
  • 结束语

在这里插入图片描述

前言

大家好!欢迎来到我们精心准备的文字游戏世界。今天,我将向大家介绍一款有趣而又考验智力的游戏——猜单词游戏。在游戏中,你将面临一个神秘的单词,你需要凭借自己的智慧和运气来猜测这个单词是什么。每猜错一次,你将失去一条生命线,当生命线用尽时,你将面临失败。但只要你成功猜对了整个单词,那么胜利就属于你!现在,让我们开始挑战吧!

学到什么?

在这里插入图片描述

  1. 使用random模块来随机选择元素。

    • 在这个代码中,使用random.choice()函数从一个含有多个单词的列表中随机选择一个单词作为神秘单词。
  2. 字符串操作和列表操作。

    • 利用字符串的乘法运算符可以将某个字符重复多次,例如heart_symbol * lives会生成一个由心形符号组成的字符串,表示剩余生命次数。
    • 将字符串转换为列表,可以使用list()函数,例如clue = list('?????'),将包含五个问号的字符串转换为一个包含五个元素的列表。
  3. 循环的使用。

    • 主循环使用了while语句,可以在满足条件(lives > 0)的情况下重复执行一段代码块。
    • while循环的终止条件是生命次数不大于0,即玩家没有生命次数剩余。
  4. 条件判断和分支控制。

    • 使用if语句进行条件判断,根据用户的猜测结果进行不同的操作。
    • 如果用户猜对了整个单词,则结束循环并显示胜利信息。
    • 如果用户猜对了某个字母,则更新显示猜测进度。
    • 如果用户猜错了字母,则扣除一次生命次数。
  5. 函数的定义和调用。

    • 定义了一个update_clue函数,用于根据用户猜对的字母更新显示猜测进度。
    • 在主循环中,通过调用update_clue函数来更新clue列表。
  6. 用户输入的获取。

    • 使用input()函数获取用户的猜测,用户可以输入单个字母或者整个单词。

导入 random 模块

在这里插入图片描述

import random

通过 import random 语句,导入了 Python 的 random 模块,使我们能够使用随机选择功能。

定义生命次数

lives = 3

通过 lives = 3 语句,初始化了一个变量 lives,表示玩家的生命次数,初始值为 3。

定义神秘单词并进行随机选择

words = ['pizza', 'fairy', 'teeth', 'shirt', 'otter', 'plane']
secret_word = random.choice(words)

通过 words = ['pizza', 'fairy', 'teeth', 'shirt', 'otter', 'plane'] 定义了一个包含多个单词的列表。然后,使用 secret_word = random.choice(words) 随机选择其中一个单词作为神秘单词,将其保存在 secret_word 变量中。

定义 clue(猜测进度) 列表,用问号 ‘?’ 初始化

clue = list('?????')

通过 clue = list('?????') 将一个包含五个问号 '?????' 的字符串转换为一个包含五个元素的列表 clue

定义心形符号的 Unicode 编码

heart_symbol = u'\u2764'

通过 heart_symbol = u'\u2764' 定义了一个变量 heart_symbol,表示心形符号的 Unicode 编码。这个符号将用于显示剩余生命次数。

初始化 guessed_word_correctly 变量

guessed_word_correctly = False

通过 guessed_word_correctly = False 初始化了一个布尔变量 guessed_word_correctly,用于标记是否猜对了整个单词,默认值为 False。

定义更新猜测进度函数 update_clue

def update_clue(guessed_letter, secret_word, clue):
    index = 0
    while index < len(secret_word):
        if guessed_letter == secret_word[index]:
            clue[index] = guessed_letter
        index = index + 1

通过 def update_clue(guessed_letter, secret_word, clue) 定义了一个名为 update_clue 的函数。该函数接受三个参数:guessed_letter 表示用户猜测的字母,secret_word 表示神秘单词,clue 表示猜测进度列表。在函数体内部,使用 while 循环和条件判断,根据用户猜测的字母更新猜测进度列表。

主循环,直到生命次数用尽或猜对了整个单词才结束

while lives > 0:
    print(words)
    print('剩余生命次数: ' + heart_symbol * lives)
    guess = input('猜测字母或者是整个单词: ')

通过 while lives > 0: 定义了一个主循环。在每次循环中,打印可选的单词列表,显示剩余生命次数,并通过 input() 函数获取用户的猜测。

判断用户猜对了整个单词的情况

    if guess == secret_word:
        guessed_word_correctly = True
        break

通过 if guess == secret_word: 判断用户猜测是否等于神秘单词,如果相等,则将 guessed_word_correctly 设置为 True,并跳出循环。

判断用户猜对了某个字母的情况

    if guess in secret_word:
        update_clue(guess, secret_word, clue)

通过 if guess in secret_word: 判断用户猜测是否在神秘单词中存在。如果存在,则调用 update_clue 函数,更新猜测进度列表。

判断用户猜错了字母的情况

    else:
        print('错误。你丢了一条命\n')
        lives = lives - 1

如果用户猜测既不是整个单词又不是某个字母,则输出错误信息,并扣除一次生命次数。

根据游戏结果判断胜负,并输出相应信息

if guessed_word_correctly:
    print('你赢了! 秘密单词是 ' + secret_word)
else:
    print('你输了! 秘密单词是 ' + secret_word)

通过 if guessed_word_correctly: 判断玩家是否猜对了整个单词,如果是,则输出胜利信息。否则,输出失败信息,同时显示正确的神秘单词。

完整代码

import random

# 生命次数
lives = 3

# 神秘单词, 随机选择
words = ['pizza', 'fairy', 'teeth', 'shirt', 'otter', 'plane']
secret_word = random.choice(words)
# print(secret_word)

clue = list('?????')
heart_symbol = u'\u2764'

guessed_word_correctly = False


def update_clue(guessed_letter, secret_word, clue):
    index = 0
    while index < len(secret_word):
        if guessed_letter == secret_word[index]:
            clue[index] = guessed_letter
        index = index + 1


while lives > 0:
    print(words)
    print('剩余生命次数: ' + heart_symbol * lives)
    guess = input('猜测字母或者是整个单词: ')

    if guess == secret_word:
        guessed_word_correctly = True
        break

    if guess in secret_word:
        update_clue(guess, secret_word, clue)
    else:
        print('错误。你丢了一条命\n')
        lives = lives - 1


if guessed_word_correctly:
    print('你赢了! 秘密单词是 ' + secret_word)
else:
    print('你输了! 秘密单词是 ' + secret_word)

结束语

经过精彩的文字游戏旅程,你成功挑战了猜单词游戏!无论输赢,都对 Python 的随机选择、字符串操作、条件判断等方面有了更深入的了解。希望这次的游戏能够让你愉快并且有所收获。继续探索编程的乐趣吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/830593.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

月木商城项目:开发者的概述

概述 本项目由博主本人自主开发,从后端的方方面面到前端的css的样式设计,以及项目的部署上云全部由本人开发完成 博主的技术栈有哪些 给大家看一下我的笔记网站,让大家对我有个了解

JVM面试题--垃圾回收

对象什么时候可以被垃圾器回收 在学习相关内容之前我们要明白两个问题&#xff0c;我们为什么要垃圾回收&#xff1f;回收哪里的垃圾呢&#xff1f; 垃圾回收主要指的是堆中的对象&#xff0c;堆是一个共享区域&#xff0c;我们创建的对象和数组&#xff0c;都存储在当前位置…

Git基础知识:常见功能和命令行

文章目录 1.Git介绍2.安装配置2.1 查看配置信息 3.文件管理3.1 创建仓库3.2 版本回退3.3 工作流程3.4 撤销修改3.5 删除文件 4.远程仓库4.1 连接远程库4.2 本地上传至远程4.3 从远程库克隆到本地 5.分支管理5.1 创建分支5.2 删除分支5.3 合并分支解决冲突 参考&#xff1a; Git…

(5)将固件加载到没有ArduPilot固件的主板上

文章目录 前言 5.1 下载驱动程序和烧录工具 5.2 下载ArduPilot固件 5.3 使用测试版和开发版 5.3.1 测试版 5.3.2 最新开发版本 5.4 将固件上传到自动驾驶仪 5.5 替代方法 5.6 将固件加载到带有外部闪存的主板上 前言 ArduPilot 的最新版本&#xff08;Copter-3.6, Pl…

顺序表、链表刷题指南(力扣OJ)

目录 前言 题目一&#xff1a;删除有序数组中的重复项 思路&#xff1a; 题解&#xff1a; 题目二&#xff1a;合并两个有序数组 思路&#xff1a; 分析&#xff1a; 题解&#xff1a; 题目三&#xff1a;反转链表 思路&#xff1a; 分析&#xff1a; 题解&#xff1a; 题目四&…

软考A计划-系统集成项目管理工程师-信息文档和配置管理-上

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

【LeetCode每日一题】——304.二维区域和检索-矩阵不可变

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时间频度】九【代码实现】十【提交结果】 一【题目类别】 矩阵 二【题目难度】 中等 三【题目编号】 304.二维区域和检索-矩阵不可变 四【题目描述】 …

【沁恒蓝牙mesh】CH58x flash分区与数据存储管理

本文主要介绍了 沁恒蓝牙芯片 CH58x 的flash 分区与数据存储管理 &#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是喜欢记录零碎知识点的小菜鸟。&#x1f60e;&#x1f4dd; 个人主页&#xff1a;欢迎访问我的 Ethernet_Comm 博客主页&…

DPG算法

1 一言以蔽之 &#xff08;1&#xff09; DPG是属于确定性策略梯度算法&#xff08;2&#xff09;用于解决连续动作空间问题 2 优点和缺点 2.1 优点&#xff08;1&#xff09;从理论上可以证明&#xff0c;deterministic policy的梯度就是Q函数梯度的期望&#xff0c;这使得…

SAP数据库表维护视图生成器的使用

在SAP中&#xff0c;经常需要自定义数据库表。而且可能需要人工维护数据库表中的数据&#xff0c;可以通过SM30进行维护数据&#xff1b;但是SM30事务的权限太大&#xff0c;不适宜将SM30直接分配&#xff1b;因此&#xff0c;可以通过给维护表分配事务代码&#xff0c;来达到控…

云曦暑期学习第三周——ctfshow--php特性(89-104)

目录 web89 preg_match函数 、数组 web90 intval()函数、强比较 web91 正则修饰符 web92 intval()函数、弱比较 web93 八进制、小数点 web94 strpos() 函数、小数点 web95 小数点 web96 highlight_file() 下的目录路径 web97 数组 web98 三目运算符 web9…

Windows搭建Snort环境及使用方式

目录 0x01 前置环境0x02修改配置文件0x03 自测0x04 使用0x05 感言 0x01 前置环境 环境描述windows10snort2.9.2https://www.snort.org/downloads 先把上面环境下载好&#xff01; 需要注意的是安装npcap这个软件 0x02修改配置文件 软件安装目录&#xff1a;C:/Snort/ 配置文…

有哪些开源和非开源的项目管理工具?

开源和非开源项目管理工具各有其特点和优势。下面是一些常见的开源和非开源项目管理工具以及它们的简要介绍。 开源项目管理工具&#xff1a; OpenProject&#xff1a;OpenProject 是一个功能强大、易于使用的开源项目管理工具。它提供了项目计划、任务管理、团队协作、文档管…

Python开发环境Spyder介绍

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 Spyder简介 Spyder (前身是 Pydee) 是一个强大的交互式 Python 语言开发环境&#xff0c; 提供高级的代码编辑、交互测试、调试等特性&#xff0c;支持包括 Windows、Linux 和 OS X 系统。 &#x1f447; &#x1f44…

【多模态】BLIP——统一视觉语言理解和生成的引导语言图像预训练模型

多模态指的是多种模态的信息&#xff0c;包括&#xff1a;文本、图像、视频、音频等。而多模态研究的就是这些不同类型的数据的融合的问题。目前大多数工作中&#xff0c;只处理图像和文本形式的数据&#xff0c;即把视频数据转为图像&#xff0c;把音频数据转为文本格式。 目录…

PHP 前后端分离,运行配置

H5 WEB目录:安装 yarn install、npm install &#xff08;依赖包&#xff09; 在电脑&#xff1a;安装nodejs Composer下载 &#xff1a;https://getcomposer.org/

彭迦信和梁柱搭班两年,腾讯音乐总市值相对减少约200亿美元

8月1日、8月2日&#xff0c;腾讯音乐-SW&#xff08;HK:01698&#xff0c;下称“腾讯音乐”&#xff09;在港交所的股价连续两日下跌&#xff0c;跌幅分别为2.21%和3.02%。按2023年8月2日的收盘价计算&#xff0c;腾讯音乐的港股市值约为454.17亿港元&#xff0c;总市值约为882…

算法:DFS【深度优先搜索】

概念&#xff1a; 深度优先搜索&#xff08;Depth First Search&#xff09;简称为DFS。一种用于遍历或者搜索树或图的算法。 沿着树的深度遍历树的所有节点&#xff0c;尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或在搜寻时结点不满足条件&#xff0c;则搜索将回溯…

《HeadFirst设计模式(第二版)》第三章代码——装饰者模式

代码文件结构&#xff1a; 星巴兹案例&#xff1a; CondimentDecorator package Chapter3_DecorativeObjects.Decorators;import Chapter3_DecorativeObjects.Beverage;/*** Author 竹心* Date 2023/8/3**/public abstract class CondimentDecorator extends Beverage {Bever…

opencv-34 图像平滑处理-双边滤波cv2.bilateralFilter()

双边滤波&#xff08;BilateralFiltering&#xff09;是一种图像处理滤波技术&#xff0c;用于平滑图像并同时保留边缘信息。与其他传统的线性滤波方法不同&#xff0c;双边滤波在考虑像素之间的空间距离之外&#xff0c;还考虑了像素之间的灰度值相似性。这使得双边滤波能够有…