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

相关文章:

  • 人工智能发展历程
  • Linux应用开发基础知识——Framebuffer应用编程(六)
  • Linux用户
  • almalinux9.6-4070显卡-ollama-qwen2.5-7b
  • rt-thread 5.2.1 基于at-start-f437开发过程记录
  • Python 面向对象基础
  • 力扣刷题(第九十九天)
  • Rust嵌入式开发实战
  • 去除视频字幕 4 : 下一步,打算研究 Video Inpainting (视频修复):
  • Redis 缓存机制详解:原理、问题与最佳实践
  • Effective C++ 条款4:确定对象被使用前已先被初始化
  • 编程与数学 03-002 计算机网络 06_网络层职责
  • 设计模式十一:享元模式(Flyweight Pattern)
  • 路由选择工具——IP-Prefix
  • 如何查看电脑后门IP和流量?
  • 变频器实习DAY15
  • Kafka MQ 消费者应用场景
  • 机器人仿真(2)Ubuntu24.04下RTX5090配置IsaacSim与IsaacLab
  • 推荐系统(第三课第二周)
  • 【AcWing 143题解】最大异或对
  • Item14:在资源管理类中小心拷贝行为
  • 高并发微服务限流算法方案对比与实践指南
  • xLua和C#交互
  • 激光雷达-相机标定工具:支持普通相机和鱼眼相机的交互式标定
  • 字节跳动扣子 Coze 宣布开源:采用 Apache 2.0 许可证,支持商用
  • 6.数组和字符串
  • J2EE模式---表现层集成模式
  • 备份一下我的 mac mini 的环境变量配置情况
  • net-snmp添加自定义mib树
  • 【C++基础】指针常量 | 常量指针 | int* p | const int* p | int* const p| const int* const p