当前位置: 首页 > 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.cnnetsun.cn/news/3722657.html

相关文章:

  • AI辅助论文写作工具实测与学术规范平衡指南
  • Arduino舵机控制与随机数应用:从Mixly图形化编程到硬件实践
  • 从焊接实践看创客教育:安全工具选择与儿童工程思维培养
  • ARM嵌入式平台Mosquitto交叉编译实战:从工具链到部署调优
  • FFmpeg6的滤镜函数解析
  • LENA-R8与STM32F765ZI的全球连接与高精度定位方案
  • Arduino HC-05蓝牙模块完整配置与通信避坑指南
  • 布谷鸟搜索算法:原理、实现与参数调优实战指南
  • C/C++编程中size_t的正确使用:避免内存越界与提升代码健壮性
  • 十一假期玩转Arduino:从氛围灯到物联网的4个创意项目实践
  • 猜数字游戏四语言实现对比:Python/JS/Java/C++核心代码与避坑指南
  • 3分钟上手d2s-editor:免费开源的暗黑破坏神2存档编辑器终极指南
  • VS Code + PlatformIO:ESP32 S3嵌入式开发环境搭建与实战指南
  • Simulink中模糊PI控制器设计:从原理到仿真的自适应控制实践
  • 微服务概述——从零开始理解企业级架构演进
  • AI办公效率提升全攻略:工具链与实战案例
  • STM32与ADC实战:电子设计竞赛核心能力锻造与系统调试心法
  • 兰溪窑神赵王传说的文化解读与非遗传承
  • 嵌入式开发实战:从代码规范到架构设计,构建稳定可靠的嵌入式系统
  • Codex平替Agent推荐:2025年代码生成Agent选型指南
  • TC4056A线性锂电池充电管理芯片:原理、应用与散热设计全解析
  • SpringBoot+Vue3实现制造业质量管理系统全栈开发
  • AXI总线协议信号详解:从通道分离到握手机制与实战调试
  • 密码安全进阶:盐与胡椒在加密存储中的关键作用
  • 基于Arduino与蓝牙BLE的智能氛围灯DIY:从电路设计到3D打印全解析
  • 深度优先搜索与广度优先搜索:原理、实现与应用场景全解析
  • 亚马逊卖家如何用AI技能优化75字符标题,提升转化率
  • C++实战:Windows窗口管理与进程交互技术解析
  • 基于Micro:bit与ESP32的3D打印教育机器人:从设计到编程全解析
  • 基于Romeo控制器的互动搞笑垃圾桶:从硬件选型到状态机编程