随机数之石头剪刀布游戏
此问题源于Ptyhon核心编程上的一道题:
Random Numbers. Design a “rock, paper, scissors” game,sometimes called “Rochambeau,” a game you may have played as a kid. Here are the rules. At the same time, using specified hand motions, both you and your opponent have to pick from one of the following: rock, paper, or scissors. The winner is determined by these rules, which form some-what of a fun paradox:
(a) the paper covers the rock,
(b) the rock breaks the scissors,
(c) the scissors cut the paper. In your computerized version,
the user enters his/her guess, the computer randomly chooses, and your program should indicate a winner or draw/tie. Note: The most algorithmic solutions use the fewest number of if statements.
最后一句提到,最好的算法要尽可能的少使用if语句。
所以在求解这个问题的时候,我在思索如何归纳三个选项之间的关系。user有三个选项,computer有三个选项,相互比较的话,应该是比较9次。然而,计算机无法识别三个选项到底那个能胜出。所以必须将石头剪刀布转化成计算机能识别的符号,再加以高效的算法,这个问题就解决了。
(1)函数应该有两个参数,分别是user和computer的选择。
(2)将选项分别与数字映射,让计算机通过比较数字的大小来判定结果。
(3)通过两个选项所对应数字的绝对值进行判定,再配合min(),max()就可以很简单的实现。
Ptyhon代码:
# -*- coding: utf-8 -*-
import random
def Rochambeau(num1, num2):num1 = int(num1)dic = {1:'stone', 2:'shears', 3:'cloth'}re = {num1:'user', num2:'computer'}if num1 == num2:return 'the same choose:' + dic[num1]elif abs(num1 - num2) == 1:return 'your choice is: ' + dic[num1] + '\n' \+ 'computer\'s choice is:' + dic[num2] + '\n' \'the winner is ' + re[min(num1, num2)]else:return 'your choice is: ' + dic[num1] + '\n' \+ 'computer//s choice is:' + dic[num2] + '\n' \'the winner is ' + re[max(num1, num2)]print Rochambeau(raw_input(
"""
Enter the number of choice:1 -> stone2 -> shears3 -> cloth
"""
), random.randint(1, 3))
注意:dic和re两个字典都有各自的用处。用于本人的英语不太好,所以元素命名有些随意,阅读代码时还望谅解,日后逐步提高。
随机数之石头剪刀布游戏相关推荐
- Python编程基础:第三十七节 石头剪刀布游戏Rock, Paper, Scissors Game
第三十七节 石头剪刀布游戏Rock, Paper, Scissors Game 前言 实践 前言 我们这一节的内容主要是对前边学习内容的一个综合应用,以石头,剪刀,布游戏为例讲解列表.随机数.用户输入 ...
- 利用Java模拟石头剪刀布游戏
模拟石头剪刀布游戏 import java.util.Scanner;public class Sjb {public static void main(String[] args) {Scanner ...
- 3.9 编写程序,模拟石头剪刀布游戏。程序随机产生一个数,这个数为2、1或0,分别表示石头剪刀和布。
1. 题目要求编写程序,模拟石头剪刀布游戏.程序随机产生一个数,这个数为2.1或0,分别表示石头剪刀和布.提示用户输入值2.1或0.然后显示一条消息,表明用户和计算机谁赢了游戏.下面是运行示例:你出什 ...
- java石头剪刀布界面_利用Java模拟石头剪刀布游戏
模拟石头剪刀布游戏 import java.util.Scanner; public class Sjb { public static void main(String[] args) { Scan ...
- VBScript终极破产版石头剪刀布游戏(VBS语言实现)
前两天拜读失泽久雄先生所著写的<计算机是怎样跑起来的>,当时看书中的代码用VBS语言写的一个石头剪刀布游戏特别好玩,于是手敲了一遍,并做了些改进--石头剪刀布小游戏.结果后来给一个朋友看, ...
- 《计算机是怎样跑起来的》优化使用VBScript语言编写的石头剪刀布游戏
今天在看失泽久雄先生著写的<计算机是怎样跑起来的>时,其中有一段使用VBScript编写的石头剪刀布游戏.由于自己是个小白,从来没听说过这种不是特别热门的脚本语言,一看用windows系统 ...
- 课设——石头剪刀布游戏
存个代码 问题: 样式图: 代码: package Main; import java.awt.*; //导入抽象窗口工具类包: import java.awt.event.*; //导入事件处理工具 ...
- javaWeb实现石头剪刀布游戏。jsp
目录 一.题目要求 二.使用步骤 1.game.jsp 2.gameResult.jsp 三.结果展示 一.题目要求 实现石头剪刀布游戏.页面的输出有"平局","你赢了! ...
- 石头剪刀布游戏高级版(Java编写)
石头剪刀布 1.问题描述 [问题描述] 用 JAVA 语言设计如下界面的石头剪刀布游戏.游戏的一方点击界面上石头.剪刀.布按钮,游戏的 另一方计算机随机选择,然后给出游戏结果. [基本要求] 按照下面 ...
最新文章
- 如何将分表汇总到总表_轻松实现多表汇总数据(多表汇总成单表)
- Java8 ConcurrentHashMap详解
- 面向连接和无连接的套接字到底有什么区别?
- java严格模式_“use strict” 严格模式使用(前端基础系列)
- Spring / Hibernate应用程序的性能调优
- 22岁大学生获谷歌天价offer,击败6000人年薪百万
- 《Effective Debugging:软件和系统调试的66个有效方法》一第2条:在网上确切地查询你所遇到的问题,以寻求解决问题的灵感...
- [已解决] org.hibernate.AnnotationException:未为实体类指定标识符
- Android学习笔记(18):编辑框EditText
- php中的数据库操作和字符串操作session与cookie操作,PHP的cookie与session原理及用法详解...
- 关于重装系统后,电脑出现提示许可证过期的解决方案
- web前端开发视频教程完整54讲下载
- python写出租车计费系统_出租车自动计费器设计(课程设计报告模板)
- 各种手机处理器排行榜_手机处理器性能排行榜和代表机型介绍
- 嵌入式linux dlna,DLNA 编译
- 如何在Chrome中自定义新标签页
- HDR:Recovering High Dynamic Range Radiance Maps from Photographs
- PMS进化论:回顾过去才能更好地看向未来!
- 音乐推荐系统搭建试验
- socket编程之read()/write()