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

用列表和字典写猜拳,这样的逻辑算合理吗?

# Python新手练习:用取模运算简化猜拳逻辑

## 1. 创作原由
大家好,我是一名高中生,目前正在自学Python。最近我姐拜托我帮她写一个“剪刀石头布”的小游戏。

一开始,我打算用最基础的逐个判断(if-elif)来写,但发现情况太多,代码不仅长而且容易写错。后来我盯着这三个选项看,突然发现了一个规律:如果把剪刀、石头、布分别对应数字 0、1、2,它们刚好是一个“前面的会被后面的压制”的循环。

受此启发,我尝试用数学里的“取模运算(%3)”来代替复杂的条件判断,写下了下面这段代码。

## 2. 核心思路
在这个程序中,我将选项映射为数字:
* 剪刀 = 0
* 石头 = 1
* 布 = 2

因为 0 会被 1 压制,1 会被 2 压制,2 会被 0 压制。
所以我发现,只要满足 `(玩家数字 + 1) % 3 == 电脑数字`,就说明电脑赢了。这样只需要一个简单的公式,就代替了所有的 if-else 判断。

## 3. 完整代码

import random def comper(player,computer,module): dic = {'剪刀': 0, '石头': 1, '布': 2} lst = [['剪刀',1], ['石头',2], ['布',0]] txt = f'电脑{lst[computer][0]}你{player}' player = dic[player] if player == computer: return 2,txt if module == 1: if (player+1)%3 == computer: return 1,txt else: return 0,txt else: if lst[lst[player][1]][1] == computer: return 0,txt else: return 1,txt lst = [0]*3 dic = {0:'你赢',1:'电脑赢',2:'平局'} t = int(input('请输入猜拳次数')) for i in range(t): compers,txt = comper(player=input('请猜拳'), computer=random.randint(0,2), module=1) print(dic[compers],txt) lst[compers] = lst[compers] + 1 if lst[1] > lst[0]: print('电脑获胜') elif lst[0] == lst[1]: print('平局') else: print('你获胜') print(f'获胜统计:你{lst[0]},电脑{lst[1]},平局{lst[2]}')
http://www.jsqmd.com/news/1285222/

相关文章:

  • 游戏逆向分析:从系统提示切入定位背包基址的实战指南
  • 西门子S7-1500 PLC模块化编程与生产线自动化实践
  • Android崩溃排查:如何关联Firebase报告与Logcat日志进行深度分析
  • 计算机组成原理期末综合大题攻略:从数据通路到流水线实战解析
  • C++文件操作全解析:从流概念到实战避坑指南
  • C++ STL list容器模拟实现与核心原理
  • 智能对话系统中的问题澄清策略设计与优化
  • 从Python到Unity:三种技术栈实现猜数字游戏全流程解析
  • 汇正财经吴远达团队专业资质及投研能力多维度解析
  • 企业固定资产管理TOP榜:RFID系统助力高效精准全流程管控
  • 零基础硬件工程师入门指南:从电路理论到PCB设计的完整学习路径
  • 基于RP2040与折射投影的静态悬浮时钟:从旋转LED到光学显示的进阶实践
  • 广州小程序商城开发哪家好?从零售、餐饮、批发三个行业场景做横向测评
  • ARM平台交叉编译Mosquitto:从工具链配置到部署的完整实践
  • 从大减价到特惠购:系统化消费决策指南与实战技巧
  • 首选:山东高效型滚镀设备制造厂推荐榜 - 品牌推广大师
  • 智能自行车核心技术解析:从传感器融合到决策算法的智能化演进
  • URP自定义光照模型:从Lambert到Blinn-Phong的完整实现指南
  • 基于行空板与K210的红绿灯检测系统:从模型训练到嵌入式部署全流程
  • Ansible自动化运维:从核心原理到生产实践的无代理配置管理指南
  • Python os模块深度解析:从文件操作到进程管理的跨平台实践
  • Boss直聘--企业管理中注册
  • 从零打造极简LED时钟:ESP32+DS3231+SK6812硬件设计与嵌入式开发全解析
  • C++ std::map::at函数深度解析:安全访问、异常处理与工程实践
  • 人工势场法在机器人路径规划中的原理与优化实践
  • 纯C++实现信号槽机制:从回调函数到事件驱动的优雅跨越
  • 基于C51单片机的红外避障与循迹智能小车:从硬件选型到控制算法实战
  • 系统集成项目管理实战:从十大知识领域到五大过程组的应用解析
  • AMD显卡本地部署AI大模型:Ollama+ROCm实战指南
  • 如何在Blender中实现3MF格式完整导入导出:面向新手的终极解决方案