代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Python
】
Python版的文曲星猜数字
作者:
鬼目
/ 发布于
2013/9/2
/
1012
# -*- coding: utf-8 -*- import random #数字类 class NumberItem: #数字个数 _GUESS_NUMBER_COUNT_ = 4 def __init__(self): self._num_ = [] #长度是否标准 def IsFormat(self): return self._num_.__len__() == self._GUESS_NUMBER_COUNT_ #生成随机数 def RestRandomNumber(self): allNum = range(10) for index in range(self._GUESS_NUMBER_COUNT_): self._num_.append(allNum.pop(random.randrange(10-index))) #校验输入数 def CheckNumber(self, input_number): result = NumberCheckResult() for index in range(self._GUESS_NUMBER_COUNT_): if (input_number._num_[index] == self._num_[index]): result.Add_A() elif(input_number._num_[index] in self._num_): result.Add_B() return result #返回字符串 def GetNumber(self): return self._num_ #竞猜结果 xAxB class NumberCheckResult: def __init__(self): self._guess_A_ = 0 self._guess_B_ = 0 def GetCheckResult(self): return '%d A %d B' % (self._guess_A_, self._guess_B_) def Add_A(self): self._guess_A_ += 1 def Add_B(self): self._guess_B_ += 1 #竞猜历史项 class GuessHisItem: def __init__(self): self._guessNum_ = NumberItem() self._guessResult_ = NumberCheckResult() def ShowItem(self): print self._guessNum_.GetNumber() , ' - ' , self._guessResult_.GetCheckResult() #游戏类 class GuessNumberGame(): #机会次数 _MAX_GUESS_TIMES_ = 8 def __init__(self): self.ResetGameDate() #重置游戏数据 def ResetGameDate(self): self._guessNum_ = NumberItem() self._guessHis_ = [] def GetGuessTimes(self): return self._guessHis_.__len__() #输入字符串的格式转换 def ChangeInputNumberFormat(self, numberStr): parseNum = NumberItem() if (numberStr.isdigit()): for eachNum in numberStr: parseNum._num_.append(int(eachNum)) return parseNum #打印竞猜历史 def ShowGuessHis(self): print '' print '你已经猜了 %d次, 总共%d次机会' % (self.GetGuessTimes(), self._MAX_GUESS_TIMES_) print '' for eachItem in self._guessHis_: eachItem.ShowItem() print '' def ShowHelp(self): print '' print '输入 \'help\' 显示命令列表.' print '输入 \'his\' 显示竞猜历史' print '输入 \'cheat\' 显示作弊结果' print '输入 \'quit\' 结束游戏' print '' def ShowCheat(self): print '' print '要猜的数字是 ', self._guessNum_.GetNumber() print '' def StartOneGame(self): self.ResetGameDate() print '开始猜数字游戏!' self._guessNum_.RestRandomNumber() print '随机号码 [*' + ',*'*(self._guessNum_._GUESS_NUMBER_COUNT_-1) + ']已经生成,你有%d次机会!' % self._MAX_GUESS_TIMES_ #猜中标志 guess_result = False quit_flag = False while (self.GetGuessTimes() < self._MAX_GUESS_TIMES_ and guess_result != True and quit_flag != True): print '你还剩%d次机会,输入你猜的数字:' % (self._MAX_GUESS_TIMES_- self.GetGuessTimes()) input_str = raw_input(); if (input_str == 'help'): self.ShowHelp() elif(input_str == 'his'): self.ShowGuessHis() elif(input_str == 'cheat'): self.ShowCheat() elif(input_str == 'quit'): quit_flag = True else: #转换输入并校验 hisItem = GuessHisItem() hisItem._guessNum_ = self.ChangeInputNumberFormat(input_str) if (hisItem._guessNum_.IsFormat() != True): print '数字格式错误, 重新输入!' else: #竞猜历史 hisItem._guessResult_ = self._guessNum_.CheckNumber(hisItem._guessNum_) self._guessHis_.append(hisItem) hisItem.ShowItem() #猜中 if (hisItem._guessResult_._guess_A_ == NumberItem._GUESS_NUMBER_COUNT_): guess_result = True print '恭喜,你猜中了数字' , self._guessNum_.GetNumber() , ' 用了%d次机会' % self.GetGuessTimes() elif(self.GetGuessTimes() == self._MAX_GUESS_TIMES_ ): print '' print '挑战失败,你已经猜了%d次,' % self.GetGuessTimes(), '正确的数字是', self._guessNum_.GetNumber() return quit_flag def StartGame(self): quit_flag = False while(quit_flag != True): quit_flag = self.StartOneGame() if (quit_flag != True): print '' print '再玩一局?(Y/N)' input_str = raw_input(); if (input_str != 'Y'): quit_flag = True print '再见!' ###### MAIN ####### if __name__ == '__main__': game = GuessNumberGame() game.StartGame()
试试其它关键字
同语言下
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
可能有用的
.
比较两个图片的相似度
.
过urllib2获取带有中文参数的url内容
.
不下载获取远程图片的宽度和高度及文件大小
.
通过qrcode库生成二维码
.
通过httplib发送GET和POST请求
.
Django下解决小文件下载
.
遍历windows的所有窗口并输出窗口标题
.
根据窗口标题调用窗口
.
python 抓取搜狗指定公众号
.
pandas读取指定列
鬼目
贡献的其它代码
(
2
)
.
字符串组合高效算法
.
Python版的文曲星猜数字
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3