文章目录步骤1、创建文件idiom_chain.py代码接入词库梦想成真了自己搞一个。步骤1、创建文件idiom_chain.py代码importjsonimportrandom# # 第一部分数据加载模块# defget_builtin_data(): 内置的100个常用成语数据 实际开发中这里可以是空直接读取外部文件 return[一心一意,意气风发,发扬光大,大庭广众,众志成城,城门失火,火上浇油,油腔滑调,调虎离山,山清水秀,秀外慧中,中流砥柱,柱石之坚,坚持不懈,舍己为人,人定胜天,天下太平,平步青云,云开见日,日新月异,异口同声,声东击西,西窗剪烛,烛照数计,计上心来,来日方长,长治久安,安居乐业,业精于勤,勤能补拙,拙嘴笨舌,舌战群儒,儒雅风流,流连忘返,返老还童,童叟无欺,欺世盗名,名副其实,实事求是,是非曲直,直言不讳,讳疾忌医,医时救弊,弊绝风清,清风明月,月下老人,人山人海,海阔天空,空前绝后,后继有人,人云亦云,云淡风轻,轻而易举,举一反三,三心二意,意气用事,事半功倍,倍道而行,行云流水,水落石出,出生入死,死里逃生,生龙活虎,虎口拔牙,牙牙学语,语重心长,长年累月,月黑风高,高枕无忧,忧国忧民,民不聊生,生搬硬套,套头裹脑,脑满肠肥,肥头大耳,耳聪目明,明察秋毫,毫发无损,损人利己,己所不欲,欲速不达,达官贵人,人杰地灵,灵机一动,动人心弦,弦外之音,音容笑貌,貌合神离,离经叛道,道听途说,说三道四,四面楚歌,歌舞升平,平易近人]defload_json_data(file_pathidioms.json): 【核心功能】如何对接 Chinese Idioms JSON 假设你下载了一个包含成语的 JSON 文件 try:withopen(file_path,r,encodingutf-8)asf:datajson.load(f)# 假设 JSON 结构是 [{word: ..., def: ...}, ...]# 我们只提取成语列表idiom_list[item[word]foritemindata]print(f✅ 成功从{file_path}加载了{len(idiom_list)}个成语。)returnidiom_listexceptFileNotFoundError:print(f⚠️ 未找到文件{file_path}将使用内置的100个成语演示。)returnget_builtin_data()exceptExceptionase:print(f❌ 读取 JSON 出错:{e})returnget_builtin_data()# # 第二部分游戏逻辑模块# classIdiomGame:def__init__(self,idioms):self.all_idiomsidioms# 为了快速查找我们建立一个字典{首字: [成语列表]}self.index{}self._build_index()self.last_idiomdef_build_index(self):建立索引提高查找速度foridiominself.all_idioms:first_charidiom[0]iffirst_charnotinself.index:self.index[first_char][]self.index[first_char].append(idiom)deffind_next_idiom(self,last_char):根据最后一个字找到一个成语iflast_charinself.index:candidatesself.index[last_char]# 随机选一个避免每次都说一样的returnrandom.choice(candidates)returnNonedefstart(self):print( 欢迎来到成语接龙输入 quit 退出。)print(电脑先开局)# 电脑随机出一个成语self.last_idiomrandom.choice(self.all_idioms)print(f电脑:{self.last_idiom})whileTrue:# 1. 玩家输入user_inputinput(f请接 {self.last_idiom[-1]} 字: ).strip()ifuser_input.lower()quit:print(游戏结束再见)break# 2. 校验玩家输入ifnotself.validate_input(user_input,self.last_idiom[-1]):continue# 输入无效不进入下一轮# 3. 电脑回合last_charuser_input[-1]computer_responseself.find_next_idiom(last_char)ifcomputer_response:print(f电脑:{computer_response})self.last_idiomcomputer_responseelse:print(f电脑: 哎呀我接不上了你赢了(以 {last_char} 开头的成语太难了))# 游戏继续让玩家继续出或者重新开始self.last_idiomuser_inputdefvalidate_input(self,user_idiom,required_char):# 检查是否为空ifnotuser_idiom:print(❌ 输入不能为空。)returnFalse# 检查字数 (简单检查是否为4字成语也可以放宽限制)iflen(user_idiom)4:print(❌ 成语通常至少四个字哦。)returnFalse# 检查首字是否匹配ifuser_idiom[0]!required_char:print(f❌ 你的成语必须以 {required_char} 开头。)returnFalse# 检查是否在词库中 (防止玩家乱造词)# 注意如果词库很大这里可以用 set 来加速查找ifuser_idiomnotinself.all_idioms:# 宽容模式如果词库里没有但符合规则也可以算过视难度设定而定# 这里为了严谨我们要求必须在词库里或者至少符合逻辑print(⚠️ 词库里好像没有这个成语但我暂且信你一次)# return False # 如果想严格模式取消这行注释returnTrue# # 第三部分启动游戏# if__name____main__:# 1. 加载数据 (如果你有 idioms.json它会自动读取)idiom_listload_json_data()# 2. 初始化游戏gameIdiomGame(idiom_list)# 3. 开始game.start()运行输入词语即可开始游戏。接入词库示例用了100个词的词组如果想更多词怎么办有现成的词库。地址https://raw.githubusercontent.com/pwxcoo/chinese-xinhua/master/data/idiom.json复制到浏览器另存为json文件如idoms.json然后放到python项目中即可。这个库是以word作为key所以代码中根据这个字段解即可。