第一次动手写随笔,记录一下今早的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代码的人机大战(循环嵌套)的更多相关文章

  1. 【python基础语法】多重循环嵌套,函数(第6天课堂笔记)

    1.什么是函数?函数有什么作用? 函数都是有特定功能的,都是由一些有特定功能的进行封装完成的 2.已经学过了哪些内置函数?分别有什么作用? print:输出 input:输入 type:查询数据类型 ...

  2. 【Python】两个for循环嵌套练习

    要求:取下方篮框中内容并写入csv文件中.用两个for循环将每一行取出来作为一个元素存放到新数组中. # coding=utf-8 from selenium import webdriver fro ...

  3. Python基础之if判断,while循环,循环嵌套

    if判断 判断的定义 如果条件满足,就做一件事:条件不满足,就做另一件事: 判断语句又被称为分支语句,有判断,才有分支: if判断语句基本语法 if语句格式: if 判断的条件: 条件成立后做的事 . ...

  4. Python基础总结之第八天开始【while循环以及for循环,循环嵌套等循环相关的知识点】(新手可相互督促)

    ennnnn,年薪20万的梦想是不是又进了一步: 循环,什么是循环,循环就是电池有电,手机屏幕可以循环一整天的使用:循环就是地球不毁灭,太阳日复一日的出现...... 不接受反驳,谢谢!~ 只要条件满 ...

  5. Python代码阅读(第11篇):展开嵌套列表

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了展开嵌套列表的功能,将一个嵌套的list展开成一个一维list(不改变原有列表的顺序). 本篇阅读的代 ...

  6. [Python]循环嵌套nested loop-练习题

    [python的for循环嵌套打印如下图形] 图形一: ******* ******* ******* ******* 图形二: * *** ***** ******* 图形三: * *** **** ...

  7. python中for、while循环、if嵌套的使用

    1.for循环字符串就是一个有序的字符序列for i in range(5):     print(i)定义一个死循环while True:     pass2.break和continue肯定需要和 ...

  8. Python 三级菜单与优化(一层循环嵌套)

    优化的思路是使用单层循环嵌套完成三级菜单,这个优化思路我非常喜欢,我喜欢在编程的时候用最少的东西写出同样的效果,通常这样会绕来绕去,但非常有趣!!! 需求: 1.运行程序输出第一级菜单: 2.选择一级 ...

  9. python利用for..in遍历,while循环嵌套编译九九乘法表的几种模式

    运用for....in...遍历的四种方向的九九乘法表: 左下角: import sysfor i in range(1,10): for j in range(1,i+1): sys.stdout. ...

随机推荐

  1. spring(三、spring中的eheche缓存、redis使用)

    spring(三.spring中的eheche缓存.redis使用) 本文主要介绍为什么要构建ehcache+redis两级缓存?以及在实战中如何实现?思考如何配置缓存策略更合适?这样的方案可能遗留什 ...

  2. JAVA高级篇(一、JVM基本概念)

    一.什么是JVM VM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机. JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,这时候J ...

  3. Selenium 基础知识

    被测产品是B/S 结构,那么推荐selenium selenium 并不是单纯的一个工具,他是一组工具的集合 1. selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器 ...

  4. [ Codeforces Round #549 (Div. 2)][D. The Beatles][exgcd]

    https://codeforces.com/contest/1143/problem/D D. The Beatles time limit per test 1 second memory lim ...

  5. MVC 中Scripts.Render、Styles.Render

    在ASP.NET MVC项目中,可以在视图中利用Scripts.Render.Styles.Render统一加载js.css文件,需要利用BundleConfig类来Add 各种Bundle,例如:b ...

  6. git初始化本地项目及关联github远程库

    一.初始化本地项目 idea中在项目文件夹下执行:git init . 二.在github官网上创建一个库 三.执行如下命令关联远程库: git remote add origin 你创建的git远程 ...

  7. react 在 componentWillMount() 中调用异步函数时,componentWillMount() finishes after render()

    刚开始使用 react,很多属性.方法不是很熟.在此记录下我所遇到的问题及解决方法. 我在 componentWillMount() 中调用了一个异步函数,在返回结果中调用 this.setState ...

  8. redis5.0.4 集群搭建

    准备工作用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-5.0.4 版本. 两台虚拟机都是 CentOS ,一台 CentOS ...

  9. 总结:Java 集合进阶精讲1

    知识点:Java 集合框架图 总结:Java 集合进阶精讲1 总结:Java 集合进阶精讲2-ArrayList 集合进阶1---为集合指定初始容量 集合在Java编程中使用非常广泛,当容器的量变得非 ...

  10. MySQL 大数据备份方案之Percona XtraBackup

    Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbacku ...