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

Python应用:三局两胜制石头剪刀布游戏

        大家好! 本文将一步步解析一个简单但完整的Python项目——三局两胜制的“石头剪刀布”游戏。通过这个项目,初学者可以巩固Python基础语法,理解程序逻辑结构。

      代码呈现:

import randomall_choices = ['石头', '剪刀', '布']
win_list = [['石头', '剪刀'], ['剪刀', '布'], ['布', '石头']]
prompt = """(0) 石头
(1) 剪刀
(2) 布
请选择(0/1/2): """
cwin = 0
pwin = 0while cwin < 2 and pwin < 2:computer = random.choice(all_choices)ind = int(input(prompt))player = all_choices[ind]print("Your choice: %s, Computer's choice: %s" % (player, computer))if player == computer:print('\033[32;1m平局\033[0m')elif [player, computer] in win_list:pwin += 1print('\033[31;1mYou WIN!!!\033[0m')else:cwin += 1print('\033[31;1mYou LOSE!!!\033[0m')

    代码解析:

  1. 初始化设置

    all_choices = ['石头', '剪刀', '布']
    win_list = [['石头', '剪刀'], ['剪刀', '布'], ['布', '石头']]
    
    • all_choices:定义玩家可选的三种手势

    • win_list:存储玩家获胜的组合条件(玩家手势, 电脑手势)

  2. 游戏主循环

    while cwin < 2 and pwin < 2:
    
    • 循环持续直到某一方获胜局数达到2局

    • cwin记录电脑胜利次数,pwin记录玩家胜利次数

  3. 随机生成电脑选择

    computer = random.choice(all_choices)
    
    • random.choice()从列表中随机选取一个元素

    • 实现电脑的“出拳”行为

  4. 玩家输入处理

    ind = int(input(prompt))
    player = all_choices[ind]
    
    • 通过数字0/1/2接收玩家选择

    • 将数字索引转换为对应的手势字符串

  5. 胜负判断逻辑

    if player == computer:  # 平局
    elif [player, computer] in win_list:  # 玩家赢
    else:  # 电脑赢
    
    • 平局:双方手势相同

    • 玩家赢:当前组合存在于win_list

    • 电脑赢:以上条件均不满足

  6. 胜局计数与颜色提示

    print('\033[31;1mYou WIN!!!\033[0m')  # 红色高亮
    
    • \033[31;1m控制台输出红色高亮文字

    • \033[0m重置文本样式

  关键知识点总结:

  1. 随机数生成

    random.choice()实现电脑的随机出拳,是游戏的核心随机源。

  2. 列表与嵌套列表

    使用列表存储游戏选项,嵌套列表定义获胜规则。

  3. 循环控制

    while循环确保游戏持续进行直到达成胜利条件。

  4. 条件分支

    多层if-elif-else结构处理不同胜负场景。

  5. 用户输入处理

    将数字输入映射到手势选项,提升用户体验。

       总结:

        欢迎在评论区分享你的练习代码或疑问~

http://www.dtcms.com/a/300090.html

相关文章:

  • VS Code + LaTeX 绘制电气图完全指南(含 PlantUML 样式参考)
  • 典型的 Vue 3 项目目录结构详解
  • Android中ViewStub和View有什么区别?
  • 过油防溅:3 步搞定 油星乱蹦
  • 具身视觉语言导航算法学习笔记
  • C++20 协程
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-27,(知识点:信号完整性,信号反射,串扰,时延,抖动,衰减)
  • 物联网统一网关:多协议转换与数据处理架构设计
  • useCallback/useMemo
  • Item11:在operator=中处理自我赋值
  • [极客大挑战 2019]FinalSQL--布尔盲注
  • 【web应用】如何进行前后端调试Debug? + 前端JavaScript调试Debug?
  • 内置两大模型,Whisper视频语音转文字,支持批量处理,完全免费!
  • 车载诊断刷写 --- Flash关于擦除和写入大小
  • GStreamer中Element(元素)
  • sendfile系统调用及示例
  • Android 键盘
  • C# 位运算及应用
  • vulhub-earth靶机攻略
  • Day32| 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-31,(知识点:芯片容量,行地址,列地址,Bank地址,数据位宽,数据带宽)
  • SpringMVC——请求
  • 2025年全国青少年信息素养大赛Scratch算法创意实践挑战赛 小低组 初赛 真题
  • 深分页性能问题分析与优化实践
  • matplotlib库 点线图,直方图,多子图与三维空间的可视化
  • C++11语法
  • 计算机中的数据表示
  • C++ TAP(基于任务的异步编程模式)
  • 停止所有docker容器的命令
  • 【SSM】第二章 网上蛋糕项目商城-首页