Python代码的人机大战(循环嵌套)
第一次动手写随笔,记录一下今早的1.5小时努力成果
题目是这样的 :
人和机器进行猜拳游戏写成一个类,首先选择角色:1 曹操 2张飞 3 刘备,然后选择的角色进行猜拳:1剪刀 2石头 3布 玩家输入一个1-3的数字;然后电脑出拳 随机产生1个1-3的数字,提示电脑出拳结果( 1剪刀 2石头 3布 ) ,双方出拳完毕后:角色和机器出拳对战,对战结束后,最后出示本局对战结果...赢...输,然后提示用户是否继续?按y继续,按n退出。最后结束的时候输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束。
代码如下:
import random
class game_huaquan(): def Gamer(self):
Part = int(input("请选择你要操作的角色,1.曹操 2.张飞 3.刘备 :"))
print('你选择的角色是:{}'.format(parts[Part]))
return Part
def Game(self,win=0,lose=0,draw=0):
s = ('1', '2', '3')
S = ("","剪刀", "石头", "布")
while True:
input_number = input("请输入出拳结果,1.剪刀 2.石头 3.布\n")
random_number = random.randint(1, 3)
Random = S[random_number]
if input_number not in s:
print('输入有误,请重新输入')
continue
else:
input_number = int(input_number)
Input = S[input_number]
while True:
if input_number == random_number:
print('您出拳结果:{}\n电脑出拳结果:{} \n打平'.format(Input,Random))
draw += 1
if (input_number == 1 and random_number== 2) or (input_number==2 and random_number== 3) or (input_number==3 and random_number== 1):
print('您出拳结果:{} \n电脑出拳结果:{} \n您输了'.format(Input,Random))
lose += 1
if (input_number == 2 and random_number == 1) or (input_number == 3 and random_number== 2) or (input_number == 1 and random_number == 3):
print('您出拳结果:{}\n电脑出拳结果:{} \n您赢了'.format(Input,Random))
win += 1
while True:
con = (input("输入'Y'继续游戏,输入'N'结束游戏:\n")).upper()
if con == 'Y':
break
elif con == 'N':
return win,lose,draw
else:
print("输入错误请重新输入!")
continue
break
def Game_console(self,Part,win,lose,draw):
gamer = parts[Part]
print('本次游戏中,您操作的角色{}赢{}局,输{}局,平{}局,进行了{}局'.format(gamer, win, lose, draw, (win+lose+draw)))
if __name__ == '__main__':
parts = ('曹操', '张飞', '刘备')
part = game_huaquan().Gamer()
Scene = game_huaquan().Game()
game_huaquan().Game_console(part,Scene[0],Scene[1],Scene[2])
注意要点有4处:
1.出拳情况应该往结果上靠,刚开头走错路,写了9个if,实际上3个就能解决了,要么赢、要么输、要么平。注意到这一点结果判定就很好解决了
2.循环的跳出,在最后一个break上浪费了我半小时,一直循环跳出不到出拳,以后要注意
3.不要进行无意义的格式转换,无意义的格式转换容易出错,哪怕第一次运行没问题,第二次,第三次总会出现各种各样奇怪的bug,而且很难找到问题根源
4.优化出拳结果的时候发现的,输入值是1-3,但是要取出拳结果值却是从0开始取,所以S中0位加一个占位,让取值从1开始
2019-2-22日 优化Game_console模块,缩减代码量,通过part[Part]定位选中角色,并传入打印
2019-2-25日 优化Game模块,减少循环中代码块,删去sum参数,通过win、draw、lose三个参数和来得出sum值,并解决了一个猜拳输入错误,程序崩溃的bug,优化显示问题,猜拳结果从数字转换成出拳方式
Python代码的人机大战(循环嵌套)的更多相关文章
- 【python基础语法】多重循环嵌套,函数(第6天课堂笔记)
1.什么是函数?函数有什么作用? 函数都是有特定功能的,都是由一些有特定功能的进行封装完成的 2.已经学过了哪些内置函数?分别有什么作用? print:输出 input:输入 type:查询数据类型 ...
- 【Python】两个for循环嵌套练习
要求:取下方篮框中内容并写入csv文件中.用两个for循环将每一行取出来作为一个元素存放到新数组中. # coding=utf-8 from selenium import webdriver fro ...
- Python基础之if判断,while循环,循环嵌套
if判断 判断的定义 如果条件满足,就做一件事:条件不满足,就做另一件事: 判断语句又被称为分支语句,有判断,才有分支: if判断语句基本语法 if语句格式: if 判断的条件: 条件成立后做的事 . ...
- Python基础总结之第八天开始【while循环以及for循环,循环嵌套等循环相关的知识点】(新手可相互督促)
ennnnn,年薪20万的梦想是不是又进了一步: 循环,什么是循环,循环就是电池有电,手机屏幕可以循环一整天的使用:循环就是地球不毁灭,太阳日复一日的出现...... 不接受反驳,谢谢!~ 只要条件满 ...
- Python代码阅读(第11篇):展开嵌套列表
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了展开嵌套列表的功能,将一个嵌套的list展开成一个一维list(不改变原有列表的顺序). 本篇阅读的代 ...
- [Python]循环嵌套nested loop-练习题
[python的for循环嵌套打印如下图形] 图形一: ******* ******* ******* ******* 图形二: * *** ***** ******* 图形三: * *** **** ...
- python中for、while循环、if嵌套的使用
1.for循环字符串就是一个有序的字符序列for i in range(5): print(i)定义一个死循环while True: pass2.break和continue肯定需要和 ...
- Python 三级菜单与优化(一层循环嵌套)
优化的思路是使用单层循环嵌套完成三级菜单,这个优化思路我非常喜欢,我喜欢在编程的时候用最少的东西写出同样的效果,通常这样会绕来绕去,但非常有趣!!! 需求: 1.运行程序输出第一级菜单: 2.选择一级 ...
- python利用for..in遍历,while循环嵌套编译九九乘法表的几种模式
运用for....in...遍历的四种方向的九九乘法表: 左下角: import sysfor i in range(1,10): for j in range(1,i+1): sys.stdout. ...
随机推荐
- RabbitMQ学习之旅(一)
RabbitMQ学习总结(一) RabbitMQ简介 RabbitMQ是一个消息代理,其接收并转发消息.类似于现实生活中的邮局:你把信件投入邮箱的过程,相当于往队列中添加信息,因为所有邮箱中的信件最终 ...
- Python学习笔记(day23更新)
第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 作用:操作系统用于协同 ...
- vue学习笔记——组件的优化
Vue 应用性能优化指南 1 给组件定义name,然后在同级目录新建index文件: import Count from './count.vue' export Count; 2 优化大数据的列表 ...
- goaccess geoip 测试
goaccess 是一个很不错的日志实时统计分析工具,我们可以用来方便的分析nginx apcahe iis 等的日志信息 对于geoip 的支持是需要源码编译的,所以基于官方docker 镜像添 ...
- 在Cygwin中出现JAVA_HOME出现故障找不到出现故障
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012516914/article/details/37689937 JAVA_HOME出现故障后查 ...
- Entity Framework教程翻译 ---- 系列教程
Entity Framework教程(第二版) (翻译)Entity Framework技巧系列之十四 - Tip 56 (翻译)Entity Framework技巧系列之十三 - Tip 51 - ...
- fullCalendar使用经验总结
fullCalendar日历控件官方网址: https://fullcalendar.io/ 1.需要引入的文件 <link href="~/assets/fullcalendar-3 ...
- GradleUserGuide中文版 19)Plugins 20)插件规范 21)Java插件
https://blog.csdn.net/roymuste/article/details/51321881
- ClassNotFoundException与NoClassDefFoundError异常
方法 loadClass()抛出的是 java.lang.ClassNotFoundException异常(一般是jar冲突或者没有引入jar):方法 defineClass()抛出的是 java.l ...
- shell脚本(二)
shell脚本(二)——变量 一.定义:用来存放各种数据,编程语言组成部分 变量的命名规则: 变量名由数字 字母下划线组成 必须以字母或者下划线开头 不能使用shell里面的关键词 ...