学习完类的使用后的第一道习题,详见技能树答题,该习题答案均为错误。所有选项都没有把输入内容和正确答案进行比较,怎么能得出是否猜对呢?
按照下面的代码可以让程序正常运行。
注意,def run(self):中输入部分ret赋值时,前面加self.,否则该变量作用域只限于该函数体。
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()
class GuessSentenceGame:
def __init__(self):
self.kv = KeyValueSet()
self.score = 0
def setup(self, sentences):
for sentence in sentences:
self.append(sentence)
def append(self, sentence):
cut_pos = sentence.find(' ')
first_word, rest = sentence[0:cut_pos], sentence[cut_pos+1:].strip()
self.kv.set(first_word, rest)
def guess(self, first_word):
ret1 = self.kv.get(first_word)
if self.ret !=ret1:
return 1, ret1
else:
return 0, ret1
def run(self):
self.score = 0
for first_word in self.kv.keys():
self.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('游戏结束,你本次游戏得分:', self.score)
if __name__ == '__main__':
sentences = [
"hello world",
'monkey king',
'tomorrow is another day',
"good bye"
]
game = GuessSentenceGame()
game.setup(sentences)
game.run()
猜一猜下半句是什么? hello -> :1 哈哈,肯定猜不到得啦:hello->world,扣除2分! 猜一猜下半句是什么? monkey -> :king 你太厉害了,这都能猜得到!+10分! 猜一猜下半句是什么? tomorrow -> :1 哈哈,肯定猜不到得啦:tomorrow->is another day,扣除2分! 猜一猜下半句是什么? good -> :bye 你太厉害了,这都能猜得到!+10分! 游戏结束,你本次游戏得分: 16