利用python實(shí)現(xiàn)你說(shuō)我猜游戲的完整實(shí)例
前言
五一參加python技能書(shū)的答疑,發(fā)現(xiàn)題目中的邏輯存在問(wèn)題,對(duì)應(yīng)的你說(shuō)我猜游戲里面的都是恒相等的。就調(diào)試修正了對(duì)應(yīng)的代碼,分享給大家,供大家學(xué)習(xí)與娛樂(lè)。
一、游戲規(guī)則
請(qǐng)你使用類 KeyValueSet 完成一個(gè)交互式命令行你想我猜游戲。支持:
- 裝載N個(gè)句子對(duì)
- 你猜我想 闖關(guān),輸出上半句,等待用戶猜測(cè)下半句
- 如果猜中就累加10分,否則扣2分
- 全部結(jié)束輸出用戶本次得分
二、實(shí)現(xiàn)過(guò)程
1、基本框架
我們編寫一個(gè)新的class,內(nèi)部通過(guò)組合KeyValueSet來(lái)支持上述功能,程序框架如下:
# -*- coding: UTF-8 -*-
class GuessSentenceGame:
def __init__(self):
self.kv = KeyValueSet()
self.score = 0
def setup(self, sentences):
# TODO(You): 請(qǐng)?jiān)诖司帉懷b載邏輯
def guess(self, first_word):
# TODO(You): 請(qǐng)?jiān)诖司帉懖聹y(cè)結(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()一個(gè)示例輸出是:
猜一猜下半句是什么? 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ù)上句返回對(duì)應(yīng)的值,這是原邏輯返回了一個(gè)狀態(tài)碼和下句值,但邏輯存在問(wèn)題,狀態(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é)
到此這篇關(guān)于利用python實(shí)現(xiàn)你說(shuō)我猜游戲的文章就介紹到這了,更多相關(guān)python你說(shuō)我猜游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python實(shí)現(xiàn)的簡(jiǎn)單猜數(shù)字游戲
- python實(shí)現(xiàn)猜數(shù)字游戲
- python實(shí)現(xiàn)猜拳小游戲
- python3.3使用tkinter開(kāi)發(fā)猜數(shù)字游戲示例
- python實(shí)現(xiàn)猜數(shù)字小游戲
- Python實(shí)現(xiàn)的搖骰子猜大小功能小游戲示例
- python實(shí)現(xiàn)猜數(shù)字游戲(無(wú)重復(fù)數(shù)字)示例分享
- python實(shí)現(xiàn)猜單詞小游戲
- python簡(jiǎn)單猜數(shù)游戲?qū)嵗?/a>
- Python實(shí)現(xiàn)簡(jiǎn)單猜數(shù)字游戲
相關(guān)文章
python 遞歸深度優(yōu)先搜索與廣度優(yōu)先搜索算法模擬實(shí)現(xiàn)
這篇文章主要介紹了python 遞歸深度優(yōu)先搜索與廣度優(yōu)先搜索算法模擬實(shí)現(xiàn) ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10
opencv 實(shí)現(xiàn)特定顏色線條提取與定位操作
這篇文章主要介紹了opencv 實(shí)現(xiàn)特定顏色線條提取與定位操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
PyQt5連接MySQL及QMYSQL driver not loaded錯(cuò)誤解決
這篇文章主要介紹了PyQt5連接MySQL及QMYSQL driver not loaded錯(cuò)誤解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Python一行代碼實(shí)現(xiàn)自動(dòng)發(fā)郵件功能
最近在自己學(xué)習(xí)Python爬蟲(chóng),學(xué)到了用Python發(fā)送郵件,覺(jué)得這個(gè)可能以后比較實(shí)用。所以這篇文章主要給大家介紹了如何通過(guò)Python一行代碼實(shí)現(xiàn)自動(dòng)發(fā)郵件功能的相關(guān)資料,需要的朋友可以參考下2021-05-05
Selenium 配置啟動(dòng)項(xiàng)參數(shù)的方法
這篇文章主要介紹了Selenium 配置啟動(dòng)項(xiàng)參數(shù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python實(shí)現(xiàn)全自動(dòng)安裝第三方庫(kù)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)全自動(dòng)安裝第三方庫(kù)的方法,一說(shuō)Python要安裝哪個(gè)模塊,我們第一反應(yīng),win+r輸入cmd,pip?instll安裝,但是如果換電腦了,Python第三方庫(kù)那么多,難道要一次一次的敲擊pip?install,本文就介紹一個(gè)簡(jiǎn)單的方法解放雙手,需要的朋友可以參考下2023-07-07
pytorch實(shí)現(xiàn)focal loss的兩種方式小結(jié)
今天小編就為大家分享一篇pytorch實(shí)現(xiàn)focal loss的兩種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01

