日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

利用python實現(xiàn)你說我猜游戲的完整實例_python

作者:他們叫我技術(shù)總監(jiān) ? 更新時間: 2022-06-29 編程語言

前言

五一參加python技能書的答疑,發(fā)現(xiàn)題目中的邏輯存在問題,對應(yīng)的你說我猜游戲里面的都是恒相等的。就調(diào)試修正了對應(yīng)的代碼,分享給大家,供大家學(xué)習(xí)與娛樂。

一、游戲規(guī)則

請你使用類 KeyValueSet 完成一個交互式命令行你想我猜游戲。支持:

  • 裝載N個句子對
  • 你猜我想?闖關(guān),輸出上半句,等待用戶猜測下半句
  • 如果猜中就累加10分,否則扣2分
  • 全部結(jié)束輸出用戶本次得分

二、實現(xiàn)過程

1、基本框架

我們編寫一個新的class,內(nèi)部通過組合KeyValueSet來支持上述功能,程序框架如下:

# -*- coding: UTF-8 -*-
class GuessSentenceGame:
    def __init__(self):
        self.kv = KeyValueSet()
        self.score = 0
 
    def setup(self, sentences):
        # TODO(You): 請在此編寫裝載邏輯
    
    def guess(self, first_word):
        # TODO(You): 請在此編寫猜測結(jié)果,返回 err, value
    
    def run(self):
        self.score = 0
        for first_word in self.kv.keys():
            ret = input("猜一猜下半句是什么? {} -> :".format(first_word))
            err, value = self.guess(first_word)
            if err==0:
                print('你太厲害了,這都能猜得到!+10分!')
                self.score += 10
            else:
                self.score -= 2
                print('哈哈,肯定猜不到得啦:{}->{},扣除2分!'.format(first_word, value))
        print('游戲結(jié)束,你本次游戲得分:', self.score)
 
if __name__ == '__main__':
 
    sentences = [
        "hello world",
        'monkey king',
        'tomorrow is another day',
        "good bye"
    ]
 
    game = GuessSentenceGame()
    game.setup(sentences)
    game.run()

一個示例輸出是:

猜一猜下半句是什么? hello -> :world
你太厲害了,這都能猜得到!+10分!
猜一猜下半句是什么? monkey -> :king
你太厲害了,這都能猜得到!+10分!
猜一猜下半句是什么? tomorrow -> :is another day
你太厲害了,這都能猜得到!+10分!
猜一猜下半句是什么? good -> :a
哈哈,肯定猜不到得啦:good->bye,扣除2分!
游戲結(jié)束,你本次游戲得分: 28

2、完整案例

?代碼:

# -*- coding: UTF-8 -*-
class KeyValueSet:
    def __init__(self) -> None:
        self.dict = {}
 
    def set(self, key, value):
        self.dict[key] = value
 
    def get(self, key):
        return self.dict.get(key)
 
    def keys(self):
        return self.dict.keys()
# -*- coding: UTF-8 -*-
class GuessSentenceGame:
    def __init__(self):
        self.kv = KeyValueSet()
        self.score = 0
#獲取按空格截取的上下句
    def setup(self, sentences):
        for sentence in sentences:
            cut_pos = sentence.find(' ')
            first_word, rest = sentence[0:cut_pos], sentence[cut_pos + 1:].strip()
            self.kv.set(first_word, rest)
#根據(jù)上句返回對應(yīng)的值,這是原邏輯返回了一個狀態(tài)碼和下句值,但邏輯存在問題,狀態(tài)碼是恒等于0的因此我們比較輸入值與返回默認(rèn)下句是否一致即可
    def guess(self, first_word):
        value = self.kv.get(first_word)#
        err = 0 if value else 1
        #print(err, value)
        return err, value
 
    def run(self):
        self.score = 0
        for first_word in self.kv.keys():
            ret = input("猜一猜下半句是什么? {} -> :".format(first_word))
            err, value = self.guess(first_word)
            if  value==ret:#比較輸入值與返回默認(rèn)下句是否一致即可
                print('你太厲害了,這都能猜得到!+10分!')
                self.score += 10
            else:
                self.score -= 2
                print('哈哈,肯定猜不到得啦:{}->{},扣除2分!'.format(first_word, value))
        print('游戲結(jié)束,你本次游戲得分:', self.score)
 
 
if __name__ == '__main__':
    sentences = [
        "他們叫我 技術(shù)總監(jiān)",
        'hello world',
        'monkey king',
        'tomorrow is another day',
        'good bye',
        "謝謝 大家"
 
    ]
 
    game = GuessSentenceGame()
    game.setup(sentences)
    game.run()

效果圖:

?三、總結(jié)

原文鏈接:https://blog.csdn.net/qq_29061315/article/details/124577564

欄目分類
最近更新