任务需求:

猜拳游戏:
人和机器猜拳
-------------------------------人机猜拳---------------------------
请选择角色:1. 曹操 2. 张飞   3. 刘备
请出拳:1. 剪刀 2. 石头 3. 布
电脑出拳:(随机产生一个1-3的数字)
本局对战结果:XXX赢
是否继续?y/n
-------------------------------XXX vs 电脑---------------------------
XXX赢几局
电脑赢几局
平局xx次
结果:XXX赢

对战结束

游戏代码:

import randomclass Role:def __init__(self, name=None, score=0):self.name = nameself.score = scoredef chooseRole(self):roleOptions = ('曹操', '张飞', '刘备')while True:choice = input('请选择角色:1. 曹操 2. 张飞 3. 刘备').strip()if choice in '123' and len(choice) == 1:self.name = roleOptions[int(choice) - 1]print('您选择的角色是{0}。'.format(self.name))returnelse:print('输入错误,请重新选择。')def showFist(self):fistOptions = ('剪刀', '石头', '布')while True:yourstake = input('请出拳:1. 剪刀 2. 石头 3. 布').strip()if yourstake in '123' and len(yourstake) == 1:print('{0}出“{1}”'.format(self.name, fistOptions[int(yourstake) - 1]))return fistOptions[int(yourstake) - 1]else:print('输入错误,请重新输入。')def __str__(self):return '角色名称:{}'.format(self.name)class Computer:def __init__(self, name='电脑', score=0):self.name = nameself.score = scoredef showFist(self):rdom = random.choice(['剪刀', '石头', '布'])print('{0}出“{1}”'.format(self.name, rdom))return rdomclass Game:noWin = 0role = Role()computer = Computer()def startGame(self):print(' 人机猜拳 '.center(100, '-'))self.role.chooseRole()while True:roleFist = self.role.showFist()computerFist = self.computer.showFist()self.judgeWinner(roleFist, computerFist)gameOver = input('是否结束游戏?任意键继续,按“y”退出。').strip()if gameOver.lower() == 'y':breakself.showResult()print('对战结束')def judgeWinner(self, rFist, cFist):fistComp = ('剪刀', '石头', '布')if rFist == cFist:print('平局')self.noWin += 1elif fistComp.index(rFist) + 1 == fistComp.index(cFist) or fistComp.index(rFist) - 2 == fistComp.index(cFist):print('{0}赢'.format(self.computer.name))self.computer.score += 1else:print('{0}赢'.format(self.role.name))self.role.score += 1def showResult(self):print(' {0} VS {1} '.center(100, '-').format(self.role.name, self.computer.name))print('{0}赢 {1} 局。'.format(self.role.name, self.role.score))print('{0}赢 {1} 局。'.format(self.computer.name, self.computer.score))print('平局 {0} 次。'.format(self.noWin))if self.role.score > self.computer.score:print('{0}赢了!'.format(self.role.name))elif self.role.score == self.computer.score:print('双方打平!')else:print('{0}赢了!'.format(self.computer.name))game = Game()
game.startGame()

Python 学习笔记-第9讲:面向对象练习-猜拳游戏相关推荐

  1. python面向对象编程72讲_2020-07-22 Python学习笔记27类和面向对象编程

    一些关于自己学习Python的经历的内容,遇到的问题和思考等,方便以后查询和复习. 声明:本人学习是在扇贝编程通过网络学习的,相关的知识.案例来源于扇贝编程.如果使用请说明来源. 第27关 类与面向对 ...

  2. PYTHON学习笔记(六)-- 面向对象

    1.面向对象编程–oop(object oriented programming) 面向过程–思考问题时,首先分析怎么按照步骤实现,然后将问题拆解成若干步骤,并一步步完成功能–怎么做 面向对象–关注的 ...

  3. Python学习笔记 十一:图形用户界面和小游戏开发

    1. 基于tkinter模块的GUI GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述. Python默认的GUI开发模块是tkinter(在Pyth ...

  4. Python学习笔记(十九)面向对象 - 继承

    Python学习笔记(十九)面向对象 - 继承 一.继承的概念 # 继承:子类继承父类的所有方法和属性# 1. 子类 class A(object):def __init__(self):self.n ...

  5. Python学习笔记:web开发3

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. Python学习笔记:常用内建模块3:struct

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:第十三站 接着找对象

    Python学习笔记 文章目录 Python学习笔记 第十三站 接着找对象 1. 封装 2. 继承 3. 方法重写 4. object类 5. 多态 6. 特殊方法和特殊属性 7. 类的赋值与拷贝 8 ...

  8. Python学习笔记 day5

    Python学习笔记 day5 参考/引用资料: 1.file a.打开文件方式(读写两种方式) 缓冲 with语句 b.文件对象的操作方法 c.学习对excel及csv文件进行操作 读写excel ...

  9. python学习笔记02

    python学习笔记02 面向对象Object Oriented 概述 类和对象 封装 继承 多态 类与类的关系 设计原则 总结 python学习笔记03 面向对象Object Oriented 概述 ...

最新文章

  1. 九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)
  2. 09.20类类型random
  3. 微信小程序封装storage(含错误处理)
  4. jstorm 读取mysql_zookeeper,kafka,jstorm,memcached,mysql流式数据处理平台部署
  5. 【每日一题】7月3日精讲—毒瘤xor
  6. pat 乙级 1020 月饼(C++实现)
  7. linux sha1sum命令,讲解Linux中校验文件的MD5码与SHA1码的命令使用
  8. mysql 常用数据库连接池_常见的数据库连接池
  9. 2台电脑一根网线传文件_黑龙江工程专用网线报价,黑电源线配件厂家
  10. (日常搬砖)voc(xml)格式的标注转换为coco(json)格式
  11. c语言中函数的知识点总结,c语言函数知识点总结
  12. Matlab 移动通信原理-扩频通信系统仿真实验(扩频通信系统的多用户数据传输、利用蒙特卡罗仿真方法对扩频增益进行性能仿真)
  13. protel相关资料
  14. favicon.ico在线制作
  15. Linux刻录光盘win10认不到,win10系统无法读取DVD和刻录光盘的具体操作步骤
  16. 腾讯云默认操作系统被安装的软件
  17. 不服?来战!2017 CCF BDCI百万元巨奖各有所属
  18. matlab给图片添加颜色条
  19. 利用Ajax访问后台数据
  20. bit、Byte、bps、Bps、pps、Gbps的单位详细说明及换算

热门文章

  1. Vue CSS3或者npmjs网站中的animate.css实现动画效果
  2. 三张图学懂移位运算符——有符号移位?无符号移位?
  3. word2vec 如何获得当前的所有词向量表
  4. 加拿大 计算机 硕士 授课型,说真的!加拿大研究型硕士和授课型硕士的区别你知道吗?...
  5. 区块链大规模应用“补位”开始了
  6. CTF练习题[MISC]-0和1的故事(二维码生成)
  7. 便利店行业全面爆发,“酷铺+掌合”先于京东完成百万门店布局
  8. 无字天书之Python第七页(基础数据结构—上)
  9. Mybatis 逆向工程代码
  10. 团队管理中的第六人模式