当前位置: 首页 > news >正文

Python学习(2)(猜拳小游戏)

是对于基本数据类型和分支的简单应用

import random # 使用字典保存数字与手势之间的对应关系 choices = { 1: "石头", 2: "剪刀", 3: "布" } # 电脑随机选择 1、2、3 中的一个数字 pc = random.randint(1, 3) # 获取玩家输入 pl = int(input("请输入你的选择(1:石头,2:剪刀,3:布):")) # 判断输入是否有效 if pl not in choices: print("输入错误,请输入 1、2 或 3。") else: print(f"电脑出了:{choices[pc]}") print(f"你出了:{choices[pl]}") # 判断玩家是否获胜 if ( (pl == 1 and pc == 2) or (pl == 2 and pc == 3) or (pl == 3 and pc == 1) ): print("你赢了!") # 玩家和电脑选择相同 elif pl == pc: print("平局!") # 其他情况都是玩家失败 else: print("你输了!")

1. 导入随机数模块

import random

random是 Python 提供的随机数模块。

在这个小游戏中,我们需要让电脑随机选择石头、剪刀或布,因此要先导入它。

2. 建立数字和手势的对应关系

choices = { 1: "石头", 2: "剪刀", 3: "布" }

这里定义了一个字典choices

  • 数字1对应“石头”;
  • 数字2对应“剪刀”;
  • 数字3对应“布”。

有了这个字典,我们就可以通过数字获得对应的手势名称:

print(choices[1]) # 石头 print(choices[2]) # 剪刀 print(choices[3]) # 布

3. 让电脑随机选择

pc = random.randint(1, 3)

random.randint(1, 3)会随机生成一个从13的整数,并且包含13

生成的结果被赋值给变量pc。这里的pc表示电脑的选择。

4. 获取玩家输入

pl = int(input("请输入你的选择(1:石头,2:剪刀,3:布):"))

input()用来接收玩家输入,但它得到的内容默认是字符串。

例如,玩家输入1时,实际得到的是字符串"1"。因此需要使用int()将它转换成整数1

"1" → 1

转换后的结果被赋值给变量pl,表示玩家的选择。

5. 检查输入是否有效

if pl not in choices: print("输入错误,请输入 1、2 或 3。")

如果玩家输入的数字不在choices字典中,说明玩家没有输入123

例如输入5,程序就会提示输入错误。

6. 显示双方的选择

print(f"电脑出了:{choices[pc]}") print(f"你出了:{choices[pl]}")

这里使用了 Python 的 f-string 格式化字符串。

假设:

pc = 2 pl = 1

那么输出就是:

电脑出了:剪刀 你出了:石头

7. 判断玩家是否获胜

if ( (pl == 1 and pc == 2) or (pl == 2 and pc == 3) or (pl == 3 and pc == 1) ): print("你赢了!")

玩家获胜有三种情况:

pl == 1 and pc == 2

玩家出石头,电脑出剪刀。

pl == 2 and pc == 3

玩家出剪刀,电脑出布。

pl == 3 and pc == 1

玩家出布,电脑出石头。

其中:

  • and表示两个条件必须同时成立;
  • or表示多个条件中只要有一个成立即可。

8. 判断是否平局

elif pl == pc: print("平局!")

如果玩家和电脑选择的数字相同,就表示双方出了相同的手势,因此是平局。

9. 判断失败

else: print("你输了!")

如果不属于获胜和平局的情况,就说明玩家输了。

四、原代码中的问题

原来的获胜判断是:

if pl == 1 and pc == 2 or pl == 2 and pc == 3or pl == 3 or pl == 1:

主要有两个问题。

第一个问题是3or中间没有空格,可能导致语法错误,应写成:

pc == 3 or

第二个问题是最后的判断写成了:

pl == 3 or pl == 1

这意味着只要玩家出布或者石头,就可能直接判定获胜,没有正确判断电脑出了什么。

正确写法应该是:

pl == 3 and pc == 1

完整的获胜条件是:

if ( (pl == 1 and pc == 2) or (pl == 2 and pc == 3) or (pl == 3 and pc == 1) ):

五、运行示例

请输入你的选择(1:石头,2:剪刀,3:布):1 电脑出了:剪刀 你出了:石头 你赢了!

通过这个小游戏,我们练习了:

  • input()获取用户输入;
  • int()转换数据类型;
  • random.randint()生成随机数;
  • 字典保存对应关系;
  • ifelifelse判断条件;
  • andor组合多个条件;
  • f-string 格式化输出内容。
http://www.jsqmd.com/news/1402165/

相关文章:

  • 金士顿Canvas系列存储卡有什么特别的技术优势?
  • 从零开始:创建你的个人网页导航
  • FLAC3D 6.0边界条件设置指南:从原理到实战避坑
  • 2026年8月德胜锥形辊筒/江苏输送辊筒公司推荐盘点_江苏德胜智能物流设备有限公司 - 品牌宣传支持者
  • Havenlon 执行控制工程 01|从“被允许“到“真正发生“之间,还剩下什么
  • OpenClaw智能体框架:从架构设计到实战部署的完整指南
  • 【内网权威测速工具iperf3】Windows分享
  • 宇树科技上市背后:机器人技术从实验室走向商业化的路径与挑战
  • 进程模块枚举、映像身份与线程启动地址关联
  • 基于Spring Boot的畜牧养殖管理系统设计与实现
  • DeepSeek Harness 深度解析:与 LangChain / LangGraph 的本质区别
  • AI+能源前沿2026-08-15
  • Windows 11桌面系统文件夹图标异常显示与彻底修复指南
  • 基于Spring Boot + Vue的试听课管理系统的设计与实现
  • 2026社恐人群情绪自救测评 暖音树洞回声无压陪伴治愈社交内耗 - nuanyin
  • RAG企业知识库实战:从零搭建智能问答系统
  • AI文学创作平台项目源码
  • Days 22栈与队列
  • 银河麒麟系统下virt-manager虚拟机磁盘扩容实战
  • Node基础知识入门
  • 从解释者到决策架构师:石油工程师的下一个十年
  • 从零搭建你的 A 股量化系统(十五):Pandas 量化必备 30 操作(上)——索引、时间序列、重采样
  • 数据集构建与使用全指南:从核心概念到实战避坑
  • 一人公司如何用AgentOS构建自动化数字飞轮:架构设计与实战
  • Windows 7 SP1域环境渗透测试平台搭建指南
  • Win11 U盘无法安全弹出?从原理到实战的完整解决方案
  • VMware Tools灰色按钮终极解决:从原理到实操的完整指南
  • 金士顿存储卡为什么适合长时间连续录制视频?
  • 基于SpringBoot的智慧课堂管理系统设计与实现
  • 金士顿存储卡的终身保修政策具体包括什么?