石头剪刀布python编程_《python核心编程第二版》练习题——游戏:石头剪刀布

习题里比较有意思的一个题目,实现石头剪刀布这个游戏,起初设计的时候走弯路了(主要时被习题里那个“尽量少用if判断”给整晕了),想的太复杂,后来发现其实非常简单,完全可以不写if语句。

还是枚举法:

#! /usr/bin/env python

import random

choicetuple = ('rock','scissors','paper')

#枚举所有的比较结果,格式定义为{‘玩家-电脑’:‘结果’}

judgedict = {'rock-rock':'OK!Draw!','scissors-scissors':'OK!Draw!','paper-paper':'OK!Draw!','rock-scissors':'OK!You Win!', 'rock-paper':'HAHA!You lose!', 'scissors-rock':'HAHA!You lose!', 'scissors-paper':'OK!You Win!', 'paper-rock':'OK!You Win!', 'paper-scissors':'HAHA!You lose!'}

def rockscissorspaper(playerchoice, randomchoice):

newstr = playerchoice+'-'+randomchoice

#get内建函数是亮点,因为我之前用的是try expect这种傻乎乎的东西,看到第7章的内容,果断用get()

return judgedict.get(newstr, 'Computer is played badly!')

if __name__ == '__main__':

print('rock!!scissors!!paper!!')

while True:

playerchoice = input('COME ON!SHOW ME YOUR HAND STYLE:')

randomchoice = choicetuple[random.randint(0,len(choicetuple)-1)]

print('Eat this:%s'% randomchoice)

resultstr = rockscissorspaper(playerchoice, randomchoice)

print(resultstr)

这个玩法正常情况下,玩家想赢电脑,概率是三分之一(平局当然不算赢),但是,这么玩游戏也太没劲了,胜利得来太容易啊!

玩游戏果断得有VIP(RMB)玩家和平民玩家之分啊!VIP0~9,9级VIP,赢的概率是3分之一,依次往下推,0级VIP,赢主要看脸!

怎么实现呢?嘿嘿,有兴趣的同学可以试一哈!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMvc面试题

f-sm-1. 讲下SpringMvc和Struts1,Struts2的比较的优势 性能上Struts1>SpringMvc>Struts2 开发速度上SpringMvc和Struts2差不多,比Struts1要高f-sm-2. 讲下SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么 SpringMvc的是DispatchServlet,Struts1的是ActionServl…

python 鸭子类型

DAY 10. 鸭子类型 这个概念来源于美国印第安纳州的诗人詹姆斯惠特科姆莱利(James Whitcomb Riley,1849-1916)的诗句:”When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.”…

thinkphp一句话疑难解决笔记

URL_PATHINFO_DEPR, depr表示 网页路径"分隔符",用"-", 有利于seo,注意是从 sername/index.php(开始的)/home-user-login-var-value开始的,pathinfo也支持普通的参数传值(仅仅支持参数...). 在thinkphp中,有两个地方使用depr,另一个就是tpl的文件目录组织分…

python选取特定行_pandas.DataFrame选取/排除特定行的方法

pandas.DataFrame选取特定行使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame,如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列表方式传入&a…

学校选址_洛谷U3451_带权中位数

题目描述 在一条大路一旁有许多栋楼,每栋楼里有许多小学生(哈哈哈一波小学生来袭!)。但是这条路上没有小学!!!!所以唯恐世界不乱的牛A打算在路上(汽车什么的都不敢来这个…

python 重载的实现(single-dispatch generic function)

DAY 11. python 重载 函数重载是指允许定义参数数量或类型不同的同名函数,程序在运行时会根据所传递的参数类型选择应该调用的函数 ,但在默认情况下,python是不支持函数重载的,定义同名函数会发生覆盖 def foo(a:int):print(fin…

SQL中的多表查询,以及JOIN的顺序重要么?

说法是,一般来说,JOIN的顺序不重要,除非你要自己定制driving table。 示例: SELECT a.account_id, c.fed_id, e.fname, e.lname-> FROM account AS a INNER JOIN customer AS c-> ON a.cust_id c.cust_id-> INNER JOIN …

python可变对象 不可变对象_【Python】可变对象和不可变对象

在 Python 中一切都可以看作为对象。每个对象都有各自的 id, type 和 value。id: 当一个对象被创建后,它的 id 就不会在改变,这里的 id 其实就是对象在内存中的地址,可以使用 id() 去查看对象在内存中地址。type: 和 id 一样当对象呗创建之后…

MySQL 调优基础(三) Linux文件系统

Linux的文件系统有点像MySQL的存储引擎,它支持各种各样的文件系统。它最上层是通过 virtual files system虚拟文件系统作为一个抽象接口层来对外提供调用的。然后下层的各种文件系统实现这些调用接口就行了。 1. Linux 中的 日志文件系统和非日志文件系统 文件内容的…

python 经典类和新式类

DAY 12. python新式类和旧式类 继承自object基类的类叫做新式类,否则叫做旧式类,python3中的类默认是新式类,之前版本默认是旧式类 rootkail:~# python python 2.7.15 (default,Jul 28 2018,11:29:29) [GCC 8.1.0] on linux2 Type "he…

Why does pthread_cond_signal not work?【转】

转自:http://stackoverflow.com/questions/16819169/why-does-pthread-cond-signal-not-work# 0 down vote favorite I am currently learing all around POSIX threads (pthread). I now have created a simple program which increased a shared value by 7 until…

Android开发技术周报 Issue#72

新闻 Android N 最初预览版:开发者 API 和工具教程 Gradle依赖的统一管理 理解Java垃圾回收机制 浅谈 Android 编程思想和架构 由Android 65K方法数限制引发的思考 Android音频开发(1):基础知识 Android音频开发(…

python 单例模式的四种实现方法

DAY 13. 单例设计 13.1 什么是单例设计 一个类每次实例化返回的都是同一个对象,这种设计模式叫做单例设计,这个类叫做单例类 13.2 实现单例设计的方法 13.2.1 重写__new__() class Foo:def __new__(cls,*args, **kwargs):# 如果是第一次实例化&…

Redis3.2.5部署(单节点)

1.安装jdk1.8 [rootsht-logstash-01 ~]# cd /usr/java/ [rootsht-logstash-01 java]# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicenseaccept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111…

字节跳动 设计模式 pdf_凭这份pdf我拿下了美团、字节跳动、阿里、小米等大厂的offer...

关于程序员,除了做项目来提高自身的技术之外,还有一种提升自己的专业技能就是:多!看!书!小编整理出一篇Java进阶架构师之路的核心知识,同时也是面试时面试官必问的知识点,篇章也是包…

B. One Bomb (#363 Div.2)

B. One Bombtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a description of a depot. It is a rectangular checkered field of n  m size. Each cell in a field can be empty (".") or…

力扣交替打印FooBar

这道题要注意的是两个线程唤醒和等待的顺序,应为第一个线程会比第二个线程更早结束,所以如果第一个线程已经结束,而第二个线程还在等待被唤醒,那第二个线程会一直等待下去,因此第一个线程要先等待后唤醒,这…

项目开发容易出错情况统计

2016年11月17日 11:30:45 星期四 1.适配: a) APP弹窗大屏幕适配(例如, 是否居中) 2.按钮状态: a) 按钮点击后没有disable 如果新页面加载卡顿导致用户多次点击,生成多次请求 b) 按钮disable后什么时候enabl…

python会不会出4_无极4网人生苦短,Python会不会被取代?国外网友

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。人生苦短,我该不该选择Python?编程语言几年一变样,榜单之争也是愈演愈烈,还架不住时不时杀出个黑马……而对于Python,自2010年初以来一直蓬…

android 音频播放总结 soundlPool,MediaPlay

soundlPool 用于小音频的播放多个同时播放。 使用步骤: 步骤一: 首先下载音频文件可以将其放入assets文件夹下或者res下的raw文件夹下,区别在于assets下可以再新建文件夹而raw不行,assets内部单个文件超过1m时可能存在bug而raw不会…