用python语言,使用类 KeyValueSet 完成一个交互式命令行你想我猜游戏。支持: 装载N个句子对 你猜我想 闯关,输出上半句,等待用户猜测下半句 如果猜中就累加10分,否则扣2分 全部结束输出用户本次得分
时间: 2023-08-31 09:43:23 浏览: 321
### 回答1:
以下是一个可能的实现,使用了类 KeyValueSet 来存储句子对,使用 random 模块来随机选择题目。
```python
import random
class KeyValueSet:
def __init__(self):
self.keys = []
self.values = []
def add_pair(self, key, value):
self.keys.append(key)
self.values.append(value)
def get_value(self, key):
if key in self.keys:
index = self.keys.index(key)
return self.values[index]
else:
return None
sentences = KeyValueSet()
while True:
command = input("请输入命令(load, play, exit):")
if command == "load":
filename = input("请输入句子对文件名:")
with open(filename, "r") as f:
for line in f:
line = line.strip()
if line:
parts = line.split(",")
key = parts[0].strip()
value = parts[1].strip()
sentences.add_pair(key, value)
elif command == "play":
score = 0
count = 0
keys = sentences.keys[:]
random.shuffle(keys)
for key in keys:
value = sentences.get_value(key)
if value is None:
continue
count += 1
print("上半句:", key)
guess = input("请输入下半句:")
if guess == value:
score += 10
print("猜对了!")
else:
score -= 2
print("猜错了,正确答案是:", value)
print("本次得分:", score)
print("完成题目数:", count)
elif command == "exit":
break
else:
print("无效命令")
```
使用示例:
```
请输入命令(load, play, exit):load
请输入句子对文件名:sentences.txt
请输入命令(load, play, exit):play
上半句: 春眠不觉晓
请输入下半句:处处闻啼鸟
猜对了!
上半句: 白日依山尽
请输入下半句:黄河入海流
猜错了,正确答案是: 心高气傲不服输
上半句: 得道多助,失道寡助
请输入下半句:天助自助者
猜错了,正确答案是: 多劳多得
本次得分: 8
完成题目数: 2
请输入命令(load, play, exit):exit
```
注意:本示例仅作为参考代码,实际应用中需要更完善的异常处理和数据校验。例如在读取文件时,应该检查文件是否存在和是否能够成功打开。此外,句子对的键和值都不能包含逗号,否则会导致数据读取错误。如果需要支持包含逗号的内容,应该考虑使用更复杂的文件格式,并使用相关的库来解析。
### 回答2:
下面是用Python语言编写的基于类KeyValueSet的交互式命令行猜词游戏:
```python
class KeyValueSet:
def __init__(self):
self.key_value_pairs = []
self.score = 0
def load_sentence_pairs(self, sentence_pairs):
self.key_value_pairs = sentence_pairs
def play_game(self):
for pair in self.key_value_pairs:
print(pair[0])
guess = input("你猜我想:")
if guess == pair[1]:
self.score += 10
print("猜对了!")
else:
self.score -= 2
print("猜错了!答案是:" + pair[1])
print("本次得分:" + str(self.score))
# 创建一个KeyValueSet实例
kv_set = KeyValueSet()
# 装载句子对
sentence_pairs = [("我是谁?", "你猜"), ("你爱我吗?", "是的"), ("世界上最高的山是哪座?", "珠穆朗玛峰"), ("今天天气怎么样?", "晴朗")]
kv_set.load_sentence_pairs(sentence_pairs)
# 开始游戏
kv_set.play_game()
```
运行以上代码,程序会逐一输出上半句,等待用户猜测下半句。如果用户猜测正确,则得分加10;如果猜错,则得分扣2。最后输出用户本次得分。
例如,用户可以依次输入:"你猜","是的","珠穆朗玛峰"和"阴天"。最终输出本次得分为34(因为前三次猜对,最后一次猜错扣2分)。
### 回答3:
以下是基于Python语言的交互式命令行“你想我猜”游戏的实现,使用了类KeyValueSet来完成:
```python
class KeyValueSet:
def __init__(self):
self.key_value_pairs = {}
def add(self, key, value):
self.key_value_pairs[key] = value
def get(self, key):
return self.key_value_pairs.get(key, None)
def main():
kv_set = KeyValueSet()
score = 0
# 装载句子对到 KeyValueSet
# 注意:这里只是示例,实际中可以根据需要添加更多的句子对
kv_set.add("你想", "我猜")
kv_set.add("天黑了", "你吃了晚饭吗")
kv_set.add("你喜欢什么颜色", "我喜欢蓝色")
for key in kv_set.key_value_pairs:
print(key) # 输出上半句
guess = input("请输入下半句:") # 等待用户猜测下半句
if guess == kv_set.get(key): # 猜中
score += 10
else: # 没猜中
score -= 2
print("本次得分:", score) # 输出用户本次得分
if __name__ == "__main__":
main()
```
运行以上代码,程序会逐个输出上半句,并等待用户输入下半句的猜测。如果猜对,得分加10;如果猜错,扣2分。最后输出用户本次得分。
注意:这里只是一个简单的示例,实际中可以根据需要进行修改和扩展。
阅读全文