python 循环嵌套break continue猜字游戏_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基础语法】多重循环嵌套,函数(第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]循环嵌套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. ...

python之路day04--列表的增删改查,嵌套、元组的嵌套、range、for循环嵌套

列表增删改查 增加 append li = ['taibai','zy','nvshen'] li.append('aa') print(li) #['taibai', 'zy', 'nvshen', ...

随机推荐

封装RabbitMQ.NET Library 的一点经验总结

这篇文章内容会很短,主要是想给大家分享下我最近在做一个简单的rabbitmq客户端类库的封装的经验总结,说是简单其实一点都不简单.为了节省时间我主要按照Library的执行顺序来介绍,在你看来这里仅仅 ...

FastFDFS_Jave客户端调用(亲测可用)

一.配置文件(fdfs_client.properties) 1 2 3 4 5 6 7 8 9 10 connect_timeout = 30 network_timeout = 60 charse ...

WP8.1&Win10开发:TextBox获取和失去焦点小技巧

获取焦点:用Focus方法让Textbox获取焦点.代码示例:textbox.Focus(FocusState.Pointer); 失去焦点:让其他控件获取焦点,如Textblock控件(注意要将Te ...

DS实验题 sights

算法与数据结构实验题 6.3 sights ★实验任务 美丽的小风姑娘打算去旅游散心,她走进了一座山,发现这座山有 n 个景点, 由于山路难修,所以施工队只修了最少条的路,来保证 n 个景点联通,娇弱 ...

iOS设置某个界面强制横屏,进入就横屏

最近有一个项目,例如:A界面跳转到B界面,A界面是竖屏的,B界面进入就要横屏. 花了半天的时间在网上搜索解决方案,有些论坛的大牛也就贴两行代码,具体实现也没有,对我们这种菜鸟造成一万点真实伤害.为了避 ...

最大流 Dinic + Sap 模板

不说别的,直接上模板. Dinic+当前弧优化: struct Edge{ int x,y,c,ne; }e[M*]; int be[N],all; int d[N],q[N]; int stack[ ...

jquery-scrollstop

$(window) .on("scrollstart", function() { // Paint the world yellow when scrolling starts. ...

React Native 系列(七) -- ListView

前言 本系列是基于React Native版本号0.44.3写的.几乎所有的App都使用了ListView这种组件,这篇文章将学习RN中ListView的平铺样式和分组样式. ListView平铺样式 ...

HashMap源码阅读

HashMap是Map家族中使用频度最高的一个,下文主要结合源码来讲解HashMap的工作原理. 1. 数据结构 HashMap的数据结构主要由数组+链表+红黑树(JDK1.8后新增)组成,如下图所示 ...

python 对象和json互相转换

一.python对json的支持 从python2.6开始,python标准库中添加了对json的支持,操作json时,只需要import json即可. 二.python对象转换成json字符串 在 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值