最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python版的文曲星猜數(shù)字游戲代碼

 更新時(shí)間:2013年09月02日 11:03:27   作者:  
最近開(kāi)始研究python,于是寫(xiě)了個(gè)Python版的文曲星猜數(shù)字游戲,喜歡的朋友可以參考下

復(fù)制代碼 代碼如下:

# -*- coding: utf-8 -*-

import random

#數(shù)字類
class NumberItem:

    #數(shù)字個(gè)數(shù)
    _GUESS_NUMBER_COUNT_ = 4

    def __init__(self):
        self._num_ = []

    #長(zhǎng)度是否標(biāo)準(zhǔn)   
    def IsFormat(self):
        return self._num_.__len__() == self._GUESS_NUMBER_COUNT_

    #生成隨機(jī)數(shù)   
    def RestRandomNumber(self):
        allNum = range(10)
        for index in range(self._GUESS_NUMBER_COUNT_):
            self._num_.append(allNum.pop(random.randrange(10-index)))

    #校驗(yàn)輸入數(shù)       
    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_

   
#競(jìng)猜結(jié)果 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

   
#競(jìng)猜歷史項(xiàng)   
class GuessHisItem:
    def __init__(self):
        self._guessNum_ = NumberItem()
        self._guessResult_ = NumberCheckResult()

    def ShowItem(self):
        print self._guessNum_.GetNumber() , ' - ' , self._guessResult_.GetCheckResult()

#游戲類
class GuessNumberGame():

    #機(jī)會(huì)次數(shù)
    _MAX_GUESS_TIMES_ = 8

    def __init__(self):
        self.ResetGameDate()

    #重置游戲數(shù)據(jù)   
    def ResetGameDate(self):
        self._guessNum_ = NumberItem()
        self._guessHis_ = []

    def GetGuessTimes(self):
        return self._guessHis_.__len__()

    #輸入字符串的格式轉(zhuǎn)換
    def ChangeInputNumberFormat(self, numberStr):
        parseNum = NumberItem()
        if (numberStr.isdigit()):
            for eachNum in numberStr:
                parseNum._num_.append(int(eachNum))

        return parseNum

   
    #打印競(jìng)猜歷史
    def ShowGuessHis(self):
        print ''
        print '你已經(jīng)猜了 %d次, 總共%d次機(jī)會(huì)' % (self.GetGuessTimes(), self._MAX_GUESS_TIMES_)
        print ''

        for eachItem in self._guessHis_:
            eachItem.ShowItem()
        print ''

    def ShowHelp(self):
        print ''
        print '輸入 \'help\' 顯示命令列表.'
        print '輸入 \'his\' 顯示競(jìng)猜歷史'
        print '輸入 \'cheat\' 顯示作弊結(jié)果'
        print '輸入 \'quit\' 結(jié)束游戲'
        print ''

    def ShowCheat(self):
        print ''
        print '要猜的數(shù)字是 ', self._guessNum_.GetNumber()
        print ''

       
    def StartOneGame(self):

        self.ResetGameDate()

        print '開(kāi)始猜數(shù)字游戲!'

        self._guessNum_.RestRandomNumber()

        print '隨機(jī)號(hào)碼 [*' + ',*'*(self._guessNum_._GUESS_NUMBER_COUNT_-1) + ']已經(jīng)生成,你有%d次機(jī)會(huì)!' % self._MAX_GUESS_TIMES_

        #猜中標(biāo)志
        guess_result = False
        quit_flag = False

        while (self.GetGuessTimes() < self._MAX_GUESS_TIMES_
               and guess_result != True and quit_flag != True):

            print '你還剩%d次機(jī)會(huì),輸入你猜的數(shù)字:' % (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:
                #轉(zhuǎn)換輸入并校驗(yàn)
                hisItem = GuessHisItem()

                hisItem._guessNum_ = self.ChangeInputNumberFormat(input_str)
                if (hisItem._guessNum_.IsFormat() != True):
                    print '數(shù)字格式錯(cuò)誤, 重新輸入!'
                else:

                    #競(jìng)猜歷史
                    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 '恭喜,你猜中了數(shù)字' , self._guessNum_.GetNumber() , ' 用了%d次機(jī)會(huì)' % self.GetGuessTimes()
                    elif(self.GetGuessTimes() == self._MAX_GUESS_TIMES_ ):
                        print ''
                        print '挑戰(zhàn)失敗,你已經(jīng)猜了%d次,' % self.GetGuessTimes(), '正確的數(shù)字是', 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 '再見(jiàn)!'

       
###### MAIN #######

if __name__ == '__main__':

    game = GuessNumberGame()
    game.StartGame()       

相關(guān)文章

  • 使用 django orm 寫(xiě) exists 條件過(guò)濾實(shí)例

    使用 django orm 寫(xiě) exists 條件過(guò)濾實(shí)例

    這篇文章主要介紹了使用 django orm 寫(xiě) exists 條件過(guò)濾實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • Python數(shù)據(jù)結(jié)構(gòu)與算法中的隊(duì)列詳解(1)

    Python數(shù)據(jù)結(jié)構(gòu)與算法中的隊(duì)列詳解(1)

    這篇文章主要為大家詳細(xì)介紹了Python的隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • python常用的時(shí)間模塊之datetime模塊示例詳解

    python常用的時(shí)間模塊之datetime模塊示例詳解

    這篇文章主要介紹了python常用的時(shí)間模塊之datetime模塊,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Jupyter Notebook讀取csv文件出現(xiàn)的問(wèn)題及解決

    Jupyter Notebook讀取csv文件出現(xiàn)的問(wèn)題及解決

    這篇文章主要介紹了Jupyter Notebook讀取csv文件出現(xiàn)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • pandas?groupby?用法實(shí)例詳解

    pandas?groupby?用法實(shí)例詳解

    在日常數(shù)據(jù)分析過(guò)程中,經(jīng)常有分組的需求。具體來(lái)說(shuō),就是根據(jù)一個(gè)或者多個(gè)字段,將數(shù)據(jù)劃分為不同的組,然后進(jìn)行進(jìn)一步分析,比如求分組的數(shù)量,分組內(nèi)的最大值最小值平均值等,下面我們就來(lái)看看pandas中的groupby怎么使用,需要的朋友可以參考下
    2022-11-11
  • Python多線程原理與用法實(shí)例剖析

    Python多線程原理與用法實(shí)例剖析

    這篇文章主要介紹了Python多線程原理與用法,結(jié)合具體的爬蟲(chóng)實(shí)例剖析了多線程的相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • python列表使用實(shí)現(xiàn)名字管理系統(tǒng)

    python列表使用實(shí)現(xiàn)名字管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python列表使用實(shí)現(xiàn)名字管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python設(shè)計(jì)模式中的策略模式詳解

    Python設(shè)計(jì)模式中的策略模式詳解

    策略模式屬于Python-設(shè)計(jì)模式中行為模式之一,該模式定義了一系列算法,并將每個(gè)算法封裝起來(lái),使它們可以相互替換。本文將通過(guò)示例詳細(xì)講解這一模式,需要的可以參考一下
    2023-02-02
  • python如何統(tǒng)計(jì)字符串漢字?jǐn)?shù)量

    python如何統(tǒng)計(jì)字符串漢字?jǐn)?shù)量

    這篇文章主要介紹了python如何統(tǒng)計(jì)字符串漢字?jǐn)?shù)量問(wèn)題,
    2024-05-05
  • python二維列表一維列表的互相轉(zhuǎn)換實(shí)例

    python二維列表一維列表的互相轉(zhuǎn)換實(shí)例

    今天小編就為大家分享一篇python二維列表一維列表的互相轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07

最新評(píng)論

南昌市| 隆昌县| 兴国县| 璧山县| 山东| 甘孜| 东明县| 威宁| 红安县| 尼木县| 桃江县| 惠州市| 合阳县| 宕昌县| 吴忠市| 昂仁县| 丽江市| 大田县| 华容县| 阳山县| 广安市| 彩票| 双城市| 哈巴河县| 营口市| 江安县| 杂多县| 三门县| 池州市| 宁德市| 彰武县| 大丰市| 河西区| 称多县| 富源县| 广东省| 内黄县| 青海省| 同仁县| 和平县| 高邮市|