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

Python之人机猜拳游戏

说明: 

人机猜拳游戏模拟用户和计算机连续猜拳,一方先赢2次则取得胜利(3局2胜)。

由于需要进行多次猜拳,须使用循环结构来实现,即利用循环语句让程序执行某些重复操作,然后利用跳转语句结束循环。

 分析:

可先定义两个变量分别用于统计用户和计算机赢的次数,并赋初始值为0.然后用while循环,判断条件为true进行死循环,在循环中进行以下操作:
1、使用input()函数输入一个整数(模拟用户出拳),并判断输入的整数是否处于1-3,如果不是,输出错误提示,并使用continue语句结束本次循环。

2、使用randint()函数生成一个1-3的随机整数(模拟计算机出拳)

3、使用print()函数输出本次用户和计算机的出拳

4、使用关系运算符(==)和逻辑运算符(and和or)判断输赢,如果用户赢,则用户赢的次数加1,并输出赢的次数。然后判断用户赢的次数是否等于2,如果是,则输出用户获得胜利的提示,并跳出循环。计算机同上。如果平局,则输出平局提示。

'''
人机猜拳游戏模拟用户和计算机连续猜拳,一方先赢2次则取得胜利(3局2胜)。
由于需要进行多次猜拳,须使用循环结构来实现,即利用循环语句让程序执行某些重复操作,
然后利用跳转语句结束循环。
'''
import random  # 导入random模块
user_count=0  # 创建变量表示用户赢的次数,赋初始值为0
computer_count=0  # 创建变量表示计算机赢的次数,赋初始值为0
while True: #循环
    # 输出猜拳提示
    print('请选择要出的招式(输入数字):\n1、石头\n2、剪刀\n3、布')
    user=int(input())  # 输入一个整数
    if user<1 or user>3:  # 如果整数小于1大于3
        print('输入错误,请重新输入!') # 输出错误提示
        continue  # 结束本次循环
    computer=random.randint(1,3)  # 生成一个1-3的随机整数
    print('用户出:',user) #输出用户招式
    print('计算机出:',computer)  #输出计算机招式
    #如果用户赢
    if(user==1 and computer==2)or(user==2 and computer==3)or(user==3 and computer==1):
        user_count+=1 #用户赢的次数加1
        print(f'用户赢{user_count}次') #输出用户赢的次数
        if user_count==2: #如果已经赢了3次
            print('用户先赢2次,恭喜用户取得胜利!') #输出用户赢的提示
            break #跳出循环
    #如果计算机赢
    elif(computer==1 and user ==2)or(computer==2 and user==3)or(computer==3 and user==1):
        computer_count+=1 #计算机赢的次数加1
        print(f'计算机赢{computer_count}次') #输出计算机赢的次数
        if computer_count==2:  #如果已经赢了2次
            print('计算机先赢2次,恭喜计算机取得胜利!') #输出计算机赢的提示
            break #跳出循环
    else: #除了两方赢的可能,就是平局
        print('平局')

执行结果:

请选择要出的招式(输入数字):
1、石头
2、剪刀
3、布
1
用户出: 1
计算机出: 2
用户赢1次
请选择要出的招式(输入数字):
1、石头
2、剪刀
3、布
1
用户出: 1
计算机出: 3
计算机赢1次
请选择要出的招式(输入数字):
1、石头
2、剪刀
3、布
1
用户出: 1
计算机出: 1
平局
请选择要出的招式(输入数字):
1、石头
2、剪刀
3、布
1
用户出: 1
计算机出: 3
计算机赢2次
计算机先赢2次,恭喜计算机取得胜利!

相关文章:

  • Win10 固定IP地址方法
  • Linux 下查看文件系统类型
  • 上传百度文库有什么技巧吗?百度文库上传怎样才能成功
  • 机器学习之手写决策树以及sklearn中的决策树及其可视化
  • C++初识
  • 成都跨境电商开发
  • 无人机 gazebo 仿真---rotors_simulator 功能包介绍
  • LeetCode刷题总结---二分查找详解
  • vue中watch原理浅析
  • Graph Representation Learning Chapter[2]
  • 一个测试岗面了 30 多人,100多个人投简历,真的太卷了,不能再真实了....
  • 准备半年,面试2个月,上岸快手拿个35K应该不算高吧?
  • java计算机毕业设计网课信息管理系统源代码+数据库+系统+lw文档
  • requests库
  • 【C++】-- STL之位图
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Android Volley源码解析
  • Bootstrap JS插件Alert源码分析
  • GitUp, 你不可错过的秀外慧中的git工具
  • java8-模拟hadoop
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JS数组方法汇总
  • nfs客户端进程变D,延伸linux的lock
  • Puppeteer:浏览器控制器
  • Sass 快速入门教程
  • vuex 学习笔记 01
  • webpack+react项目初体验——记录我的webpack环境配置
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 仿天猫超市收藏抛物线动画工具库
  • 飞驰在Mesos的涡轮引擎上
  • 给初学者:JavaScript 中数组操作注意点
  • 今年的LC3大会没了?
  • 蓝海存储开关机注意事项总结
  • 聊聊sentinel的DegradeSlot
  • 巧用 TypeScript (一)
  • 区块链技术特点之去中心化特性
  • 使用 @font-face
  • 协程
  • 自动记录MySQL慢查询快照脚本
  • HanLP分词命名实体提取详解
  • k8s使用glusterfs实现动态持久化存储
  • #14vue3生成表单并跳转到外部地址的方式
  • #WEB前端(HTML属性)
  • (TOJ2804)Even? Odd?
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)Controller接口控制器详解(三)
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)C#调用WebService 基础
  • (转)winform之ListView
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • . NET自动找可写目录
  • .form文件_SSM框架文件上传篇