用python语言,使用类 KeyValueSet 完成一个交互式命令行你想我猜游戏。支持: 装载N个句子对 你猜我想 闯关,输出上半句,等待用户猜测下半句 如果猜中就累加10分,否则扣2分 全部结束输出用户本次得分

时间: 2023-08-31 11:43:23 浏览: 114
### 回答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分。最后输出用户本次得分。 注意:这里只是一个简单的示例,实际中可以根据需要进行修改和扩展。

相关推荐

最新推荐

recommend-type

Java与Python之间使用jython工具类实现数据交互

今天小编就为大家分享一篇关于Java与Python之间使用jython工具类实现数据交互,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

用python+pyqt5手工编写一个含交互界面的简易的词法分析器

python+pyqt5手工编写一个含交互界面的简易词法分析器 @author:x1nge. 编译原理基础实验 基础 在之前的一篇博文中我记录了一个不含交互界面的简易词法分析器程序编写内容 点击此处查看 在本文我将用pyqt5写一个...
recommend-type

python分割一个文本为多个文本的方法

主要为大家详细介绍了python分割一个文本为多个文本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Python实现保证只能运行一个脚本实例

主要介绍了Python实现保证只能运行一个脚本实例,本文直接给出实现代码,需要的朋友可以参考下
recommend-type

python3使用pyqt5制作一个超简单浏览器的实例

下面小编就为大家带来一篇python3使用pyqt5制作一个超简单浏览器的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。