第一次动手写随笔,记录一下今早的1.5小时努力成果

题目是这样的 :

       人和机器进行猜拳游戏写成一个类,首先选择角色:1 曹操 2张飞 3 刘备,然后选择的角色进行猜拳:1剪刀 2石头 3布 玩家输入一个1-3的数字;然后电脑出拳 随机产生1个1-3的数字,提示电脑出拳结果( 1剪刀 2石头 3布 ) ,双方出拳完毕后:角色和机器出拳对战,对战结束后,最后出示本局对战结果...赢...输,然后提示用户是否继续?按y继续,按n退出。最后结束的时候输出结果 角色赢几局 电脑赢几局,平局几次 游戏结束。

代码如下:

  

  1. import random
  2. class game_huaquan():
  3.  
  4. def Gamer(self):
  5. Part = int(input("请选择你要操作的角色,1.曹操 2.张飞 3.刘备 :"))
  6. print('你选择的角色是:{}'.format(parts[Part]))
  7. return Part
  8. def Game(self,win=0,lose=0,draw=0):
  9. s = ('1', '2', '3')
  10. S = ("","剪刀", "石头", "布")
  11. while True:
  12. input_number = input("请输入出拳结果,1.剪刀 2.石头 3.布\n")
  13. random_number = random.randint(1, 3)
  14. Random = S[random_number]
  15. if input_number not in s:
  16. print('输入有误,请重新输入')
  17. continue
  18. else:
  19. input_number = int(input_number)
  20. Input = S[input_number]
  21. while True:
  22. if input_number == random_number:
  23. print('您出拳结果:{}\n电脑出拳结果:{} \n打平'.format(Input,Random))
  24. draw += 1
  25. if (input_number == 1 and random_number== 2) or (input_number==2 and random_number== 3) or (input_number==3 and random_number== 1):
  26. print('您出拳结果:{} \n电脑出拳结果:{} \n您输了'.format(Input,Random))
  27. lose += 1
  28. if (input_number == 2 and random_number == 1) or (input_number == 3 and random_number== 2) or (input_number == 1 and random_number == 3):
  29. print('您出拳结果:{}\n电脑出拳结果:{} \n您赢了'.format(Input,Random))
  30. win += 1
  31. while True:
  32. con = (input("输入'Y'继续游戏,输入'N'结束游戏:\n")).upper()
  33. if con == 'Y':
  34. break
  35. elif con == 'N':
  36. return win,lose,draw
  37. else:
  38. print("输入错误请重新输入!")
  39. continue
  40. break
  41. def Game_console(self,Part,win,lose,draw):
  42. gamer = parts[Part]
  43. print('本次游戏中,您操作的角色{}赢{}局,输{}局,平{}局,进行了{}局'.format(gamer, win, lose, draw, (win+lose+draw)))
  44. if __name__ == '__main__':
  45. parts = ('曹操', '张飞', '刘备')
  46. part = game_huaquan().Gamer()
  47. Scene = game_huaquan().Game()
  48. 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. Linux下安装oracle的步骤和一些问题

    今天在Linux64位系统安装oracle数据库,折腾了一天,终于搞定了,现在把安装步骤梳理下,防止以后忘记:    (以下内容来自http://blog.163.com/junwu_lb/blog/ ...

  2. 2019西湖论剑网络安全技能大赛(大学生组)--奇怪的TTL字段(补充)

    鉴于有人不会将得到的16进制数据在winhex中转成图片,我在这里写一个详细的步骤. 首先就是将六张图片的十六进制数据找出并提取出来. 打开winhex,新建一个文档. 大小可以选1bytes 将数据 ...

  3. 快速排序的两种实现 -- 种轴partition : 比值partition(更精巧)

    实现1:种轴partition,not in place--取定枢轴,将小于等于枢轴的放到枢轴左边,大于枢轴的放到右边 # python algorithm en_2nd edition p125de ...

  4. Vue创建头部组件示例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta ht ...

  5. CMake for MFC example

    cmake_minimum_required(VERSION 2.8) add_definitions(-D_AFXDLL) set(CMAKE_MFC_FLAG 2) set(SRCS MFCApp ...

  6. Mvc项目实例 MvcMusicStore 五

    Mvc项目实例 MvcMusicStore 一Mvc项目实例 MvcMusicStore 二Mvc项目实例 MvcMusicStore 三Mvc项目实例 MvcMusicStore 四Mvc项目实例 ...

  7. 爬虫之PyQuery

    PyQuery 是 Python 仿照 jQuery 的严格实现.语法与 jQuery 几乎完全相同. 官方文档:http://pyquery.readthedocs.io/ 安装 pip insta ...

  8. 兼容ie,火狐的判断回车键js脚本

    var event = window.event || arguments.callee.caller.arguments[0]; var keycode = event.keyCode || eve ...

  9. msvcp140.dll丢失解决方案

    [首先给出99%情况下都能解决这个问题的最简单办法]:   下载并安装微软VC++2015版运行库 (英文全称:Microsoft Visual C++ 2015 Redistributable Pa ...

  10. 华硕飞马3S,日常使用续航测试

    最近爱机荣耀6的电池1天2充,无奈换台新机,华为系列没大电池且价格贵,小米红米系列品控呵呵,其他品牌无小屏幕大容量电池: 然后换了台华硕飞马3S:5.2英寸 5000ma电池,日常工作娱乐使用1天半多 ...