news 2026/7/29 5:11:23

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用列表和字典写猜拳,这样的逻辑算合理吗?

# 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]}')
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/29 5:04:32

AI辅助论文写作工具实测与学术规范平衡指南

1. 论文写作新挑战:AI辅助与学术规范的平衡去年帮导师审阅研究生论文时,一个现象让我印象深刻:超过60%的论文初稿都带有明显的AI生成特征。从过度工整的句式到缺乏深度的文献综述,这些"完美却空洞"的文字正在成为学术圈…

作者头像 李华
网站建设 2026/7/29 5:04:05

Arduino舵机控制与随机数应用:从Mixly图形化编程到硬件实践

1. 项目概述:从“抽奖”到“随机控制”的硬件实践抽奖转盘,听起来是个充满趣味的小玩意儿,但把它作为Arduino和Mixly学习的第13课,其意义远不止于“好玩”。这堂课的核心,其实是把“随机数生成”这个抽象的编程概念&am…

作者头像 李华
网站建设 2026/7/29 5:03:52

从焊接实践看创客教育:安全工具选择与儿童工程思维培养

1. 项目概述:从“焊接小萝莉”看全球创客教育的代际差异最近,一个关于“国外7岁小女孩熟练操作电烙铁进行焊接”的视频在网络上引发了不小的讨论。画面里,一个金发碧眼的小女孩,戴着略显宽大的护目镜,手持电烙铁&#…

作者头像 李华
网站建设 2026/7/29 5:02:29

ARM嵌入式平台Mosquitto交叉编译实战:从工具链到部署调优

1. 项目概述:为什么要在ARM平台交叉编译Mosquitto?最近在折腾一个基于ARM架构嵌入式Linux的物联网网关项目,核心需求是实现设备数据的汇聚与云端同步。MQTT协议自然是首选,而Mosquitto作为一款轻量、开源且实现完整的MQTT代理&…

作者头像 李华
网站建设 2026/7/29 5:01:44

FFmpeg6的滤镜函数解析

觉得有用,就请您帮忙点赞转发收藏吧,您的鼓励是我创作的动力,多谢看官。 由于能力水平有限,文中的错误或不严谨的地方在所难免,还请批评指正。 目录 1. 先建立直觉:滤镜图就是一条"管道" 2. 滤…

作者头像 李华
网站建设 2026/7/29 5:01:35

LENA-R8与STM32F765ZI的全球连接与高精度定位方案

1. LENA-R8与STM32F765ZI的硬件协同架构解析LENA-R8是一款集成了LTE Cat 1和GNSS功能的紧凑型通信模块,其核心优势在于单模块内实现了蜂窝通信与卫星定位的双重功能。该模块支持14个LTE频段和4个GSM/GPRS频段,这意味着它可以在全球绝大多数地区实现网络连…

作者头像 李华