作者:小小明
原文链接:

https://blog.csdn.net/as604049322/article/details/118154687
本文为读者投稿

在 https://github.com/pwxcoo/chinese-xinhua 项目中可以下载到中华成语的语料库,该项目收录包括 14032 条歇后语,16142 个汉字,264434 个词语,31648 个成语。

结构如下:

chinese-xinhua/
|
+- data/ <-- 数据文件夹
|  |
|  +- idiom.json <-- 成语
|  |
|  +- word.json <-- 汉字
|  |
|  +- xiehouyu.json <-- 歇后语
|  |
|  +- ci.json <-- 词语

可以直接从网络读取该github的json文件:

import pandas as pdchengyu = pd.read_json("https://github.com/pwxcoo/chinese-xinhua/blob/master/data/idiom.json?raw=true")

不过有可能网络不佳导致读取失败,下载好之后读取本地文件更佳:

import pandas as pd
import numpy as npchengyu = pd.read_json("idiom.json")
chengyu.head(2)

该库有很多列,word列是我们需要的成语,pinyin列已经帮我们转换出了对应的拼音。下面我们整理出我们需要的数据:

t = chengyu.pinyin.str.split()
chengyu["shoupin"] = t.str[0]
chengyu["weipin"] = t.str[-1]
chengyu = chengyu.set_index("word")[["shoupin", "weipin"]]
chengyu

测试获取任意一个成语的接龙结果集:

word = "阿党比周"words = chengyu.index[chengyu.shoupin == chengyu.loc[word, "weipin"]]
wordsIndex(['舟车劳顿', '舟水之喻', '舟中敌国', '诌上抑下', '侜张为幻', '周而不比', '周而复始', '周公吐哺', '周规折矩','周急继乏', '周郎顾曲', '周情孔思', '周穷恤匮', '周游列国', '诪张变眩', '诪张为幻', '粥少僧多', '粥粥无能'],dtype='object', name='word')

然后随机任取一个:

np.random.choice(words)
'诪张为幻'

测试没有问题,我们可以写一个批量接龙程序:

word = input("请输入一个成语:")
flag = True
if word not in chengyu.index:print("你输入的不是一个成语,程序结束!")flag = False
while flag:n = input("接龙的次数(1-100次的整数,输入任意字母表示结束程序)")if not n.isdigit():print("程序结束")breakn = int(n)if not (0 < n <= 100):print("非法数字,程序结束")breakfor _ in range(n):words = chengyu.index[chengyu.shoupin == chengyu.loc[word, "weipin"]]if words.shape[0] == 0:print("没有找到可以接龙的成语,程序结束")flag = Falsebreakword = np.random.choice(words)print(word)

请输入一个成语:周郎顾曲
接下来程序自动接龙的次数(1-100次的整数,其他情况表示结束)10
曲尽奇妙
妙趣横生
声应气求
求人不如求己
掎挈伺诈
诈痴不颠
颠乾倒坤
昆山之玉
玉叶金枝
织当访婢
接下来程序自动接龙的次数(1-100次的整数,其他情况表示结束)no
结束

完整代码

import pandas as pd
import numpy as npchengyu = pd.read_json("idiom.json")
t = chengyu.pinyin.str.split()
chengyu["shoupin"] = t.str[0]
chengyu["weipin"] = t.str[-1]
chengyu = chengyu.set_index("word")[["shoupin", "weipin"]]word = input("请输入一个成语:")
flag = True
if word not in chengyu.index:print("你输入的不是一个成语,程序结束!")flag = False
while flag:n = input("接龙的次数(1-100次的整数,输入任意字母表示结束程序)")if not n.isdigit():print("程序结束")breakn = int(n)if not (0 < n <= 100):print("非法数字,程序结束")breakfor _ in range(n):words = chengyu.index[chengyu.shoupin == chengyu.loc[word, "weipin"]]if words.shape[0] == 0:print("没有找到可以接龙的成语,程序结束")flag = Falsebreakword = np.random.choice(words)print(word)

我们还可以写一个与机器对战的成语接龙小游戏:

import pandas as pd
import numpy as npchengyu = pd.read_json("idiom.json")
t = chengyu.pinyin.str.split()
chengyu["shoupin"] = t.str[0]
chengyu["weipin"] = t.str[-1]
chengyu = chengyu.set_index("word")[["shoupin", "weipin"]]is_head = input("是否先手(输入N表示后手,其他表示先手)")
if is_head == "N":word2 = np.random.choice(chengyu.index)print(word2)weipin = chengyu.loc[word2, "weipin"]
else:weipin = ''
while True:word = input("请输入一个成语(认输或离开请按Q):")if word == "Q":print("你离开了游戏,再见!!!")breakif word not in chengyu.index:print("你输入的不是一个成语,请重新输入!")continueif weipin and chengyu.loc[word, 'shoupin'] != weipin:print("你输入的成语并不能与机器人出的成语接上来,你输了,游戏结束!!!")breakwords = chengyu.index[chengyu.shoupin == chengyu.loc[word, "weipin"]]if words.shape[0] == 0:print("恭喜你赢了!成语机器人已经被你打败!!!")breakword2 = np.random.choice(words)print(word2)weipin = chengyu.loc[word2, "weipin"]

是否先手(输入N表示后手,其他表示先手)
请输入一个成语(认输或离开请按Q):妙趣横生
生米煮成熟饭
请输入一个成语(认输或离开请按Q):饭来开口
口呆目钝
请输入一个成语(认输或离开请按Q):遁名匿迹
计功谋利

由于成语积累量较少,几局就已经快玩不下去,于是我打算再写个成语查询器方便开挂后再上,而不是疯狂的百度,代码如下:

from gooey import Gooey, GooeyParser
import pandas as pdchengyu = pd.read_json("idiom.json")
t = chengyu.pinyin.str.split()
chengyu["shoupin"] = t.str[0]
chengyu["weipin"] = t.str[-1]
chengyu = chengyu.set_index("word")[["shoupin", "weipin"]]@Gooey
def main():parser = GooeyParser(description="成语接龙查询器 - @小小明")parser.add_argument('word', help="被查询的成语")args = parser.parse_args()word = args.wordif word not in chengyu.index:print("你输入的不是一个成语,请重新输入!")else:words = chengyu.index[chengyu.shoupin == chengyu.loc[word, "weipin"]]if words.shape[0] > 0:print("满足条件的成语有:")print("、".join(words))else:print("抱歉,没有找到能够满足条件的成语")print("-----" * 10)if __name__ == '__main__':main()

这里我使用了Gooey,需要pip安装:

pip install Gooey

项目地址:https://github.com/chriskiehl/Gooey

体验一把:

点击start后:

要重新开始查询只需点击Edit按钮即可。Gooey支持的组件还挺多的,可以参考GitHub项目说明。虽然Gooey远不如专业的图形化框架专业,但对于简单的需求也挺简单便捷,能快速把命令行程序转换为图形化程序。

左手Python,右手Java,升职就业不愁啦!

推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

  • 1).卧槽!Pdf转Word用Python轻松搞定!

  • 2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃

  • 3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密

  • 4).80行代码!用Python做一个哆来A梦分身

  • 5).你必须掌握的20个python代码,短小精悍,用处无穷

  • 6).30个Python奇淫技巧集

  • 7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货

  • 8).再见Python!我要学Go了!2500字深度分析!

  • 9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片

点阅读原文,领AI全套资料

我用 Python 自制成语接龙小游戏,刺激!相关推荐

  1. 我用 Python 自制成语接龙小游戏,刺激

    在 https://github.com/pwxcoo/chinese-xinhua 项目中可以下载到中华成语的语料库,该项目收录包括 14032 条歇后语,16142 个汉字,264434 个词语, ...

  2. python成语接龙到为所欲为_Python小伙用简单爬虫实现成语接龙小游戏!

    闲来无事,写了一个成语接龙小游戏,抓取某成语接龙网站内容,请大家指正. Python实现这个功能非常简单,当然,这里我也是写了个简单版的,实现了基本功能就好.话不多说,先上干货: 开发前准备及思路: ...

  3. python爬虫的使用——成语接龙小游戏

    python爬虫的使用--成语接龙小游戏 游戏介绍 本游戏采用python进行开发,利用爬虫技术,能够自动获取代理服务器IP地址,可从常用汉字中选取查找成语随机出题,可进行人与电脑的对弈,可进行多轮较 ...

  4. 简单c语言实现的成语接龙小游戏

    一.目标: 成语接龙小游戏,玩家输入一个成语,程序(电脑)输出一个.按成语接龙规则(最后一个字与接下来第一个字相同) 二.算法流程图: 三.实现代码: #include<stdio.h> ...

  5. c语言成语接龙编程,C语言完成成语接龙小游戏

    用C语言实现成语接龙小游戏(新手上路,大神勿喷) 1.首先需要找到一个成语库(从网上下载即可,保存为.txt文件) 2.整体思路如下 由于要用的成语保存在文件里,一边用一边读取会降低代码的效率,所以我 ...

  6. C语言接龙,C语言完成成语接龙小游戏

    用C语言实现成语接龙小游戏(新手上路,大神勿喷) 1.首先需要找到一个成语库(从网上下载即可,保存为.txt文件) 2.整体思路如下 由于要用的成语保存在文件里,一边用一边读取会降低代码的效率,所以我 ...

  7. python推箱子小游戏_小伙利用Python自制一个推箱子小游戏!

    原标题:小伙利用Python自制一个推箱子小游戏! 导语 月初更波python制作小游戏系列吧用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧 小伙利用Python自制一个推箱子 ...

  8. C语言完成成语接龙小游戏

    用C语言实现成语接龙小游戏(新手上路,大神勿喷) 1.首先需要找到一个成语库(从网上下载即可,保存为.txt文件) 2.整体思路如下 由于要用的成语保存在文件里,一边用一边读取会降低代码的效率,所以我 ...

  9. python——成语接龙小游戏

    小试牛刀的简易成语接龙. 思路-- 1.网上下载成语字典的txt版本 2.通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快) 3.python程序,查找 用户输入的最 ...

  10. python中成语接龙游戏_python——成语接龙小游戏

    小试牛刀的简易成语接龙. 思路-- 1.网上下载成语字典的txt版本 2.通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快) 3.python程序,查找 用户输入的最 ...

最新文章

  1. EM: 生而为菌,自强不息-嗜酸杆菌在重金属污染土壤中的生态适应性机制
  2. xss跳转代码_从某cms的xss漏洞来学习代码审计
  3. 在T-SQL语句中访问远程数据库(openrowset/opendatasource/openquery)
  4. DAY10-万物皆对象-2018-2-2
  5. ubuntu下wps无法使用搜狗输入法输入中文
  6. python怎么加图片_python怎么实现添加图片
  7. FreeSql (三十二)Aop
  8. Serial Old收集器和Parallel Old收集器
  9. jquery操作select选项
  10. 一名 40 岁“老”程序员的反思
  11. 软考:软件设计师(历年真题汇总)|希赛网
  12. android gps free,GPS HUD Speedometer Free
  13. c盘是不是越大越好_C盘分区并非越大越好
  14. Spring Cloud微服务技术栈学习(导读)
  15. 抢Google等巨头生意,纽约大学小伙挖掘并出售自己数据
  16. 假设检验实例(python)
  17. Windows server 2016 Windows 10 离线下载与离线安装补丁教程 支持批量安装(其他win系统类似)
  18. 【机器学习】机器学习泛泛之谈
  19. 介绍一个全局最优化的方法:随机游走算法(Random Walk)
  20. 机器视觉2D点旋转中心标定及旋转后坐标计算

热门文章

  1. matlab画直方图
  2. 汇编语言——伪指令和汇编指令详解
  3. Postman测试post接口
  4. SPSS实现游程检验
  5. keil C51代码优化等级介绍
  6. Arduino提高篇01—点亮OLED显示屏
  7. LTCC带通滤波器设计
  8. 4.14 在数字的左侧进行补零 [原创Excel教程]
  9. IE8卸载再回到IE6
  10. Android UI个性style开源组件