当前位置:首页 > 娱乐星闻

1 100打一成语,干货看这篇!我用 Python 自制成语接龙小游戏,刺激

作者:小小明原文链接: 本文为读者投稿 在 项目中可以下载到中华成语的语料库,该项目收录包括 14032 条歇后语,16142 个汉字,264434 个词语,31648 个成语。 达到当天最大量API KEY 超过次数限制

结构如下:

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

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

import pandas as pd

chengyu = (
";)

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

import pandas as pd
import numpy as np

chengyu = ("idiom.json")
c(2)

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

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

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

word = "阿党比周"

words = c[c == c[word, "weipin"]]
words

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

然后随机任取一个:

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

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

word = input("请输入一个成语:")
flag = True
if word not in c:
print("你输入的不是一个成语,程序结束!")
flag = False
while flag:
n = input("接龙的次数(1-100次的整数,输入任意字母表示结束程序)")
if not n.isdigit:
print("程序结束")
break
n = int(n)
if not (0 < n <= 100):
print("非法数字,程序结束")
break
for _ in range(n):
words = c[c == c[word, "weipin"]]
if words.shape[0] == 0:
print("没有找到可以接龙的成语,程序结束")
flag = False
break
word = np.random.choice(words)
print(word)
请输入一个成语:周郎顾曲
接下来程序自动接龙的次数(1-100次的整数,其他情况表示结束)10
曲尽奇妙
妙趣横生
声应气求
求人不如求己
掎挈伺诈
诈痴不颠
颠乾倒坤
昆山之玉
玉叶金枝
织当访婢
接下来程序自动接龙的次数(1-100次的整数,其他情况表示结束)no
结束

完整代码

import pandas as pd
import numpy as np

chengyu = ("idiom.json")
t = c
chengyu["shoupin"] = t.str[0]
chengyu["weipin"] = t.str[-1]
chengyu = c("word")[["shoupin", "weipin"]]

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

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

import pandas as pd
import numpy as np

chengyu = ("idiom.json")
t = c
chengyu["shoupin"] = t.str[0]
chengyu["weipin"] = t.str[-1]
chengyu = c("word")[["shoupin", "weipin"]]

is_head = input("是否先手(输入N表示后手,其他表示先手)")
if is_head == "N":
word2 = np.random.choice(c)
print(word2)
weipin = c[word2, "weipin"]
else:
weipin = ''
while True:
word = input("请输入一个成语(认输或离开请按Q):")
if word == "Q":
print("你离开了游戏,再见!!!")
break
if word not in c:
print("你输入的不是一个成语,请重新输入!")
continue
if weipin and c[word, 'shoupin'] != weipin:
print("你输入的成语并不能与机器人出的成语接上来,你输了,游戏结束!!!")
break
words = c[c == c[word, "weipin"]]
if words.shape[0] == 0:
print("恭喜你赢了!成语机器人已经被你打败!!!")
break
word2 = np.random.choice(words)
print(word2)
weipin = c[word2, "weipin"]
是否先手(输入N表示后手,其他表示先手)
请输入一个成语(认输或离开请按Q):妙趣横生
生米煮成熟饭
请输入一个成语(认输或离开请按Q):饭来开口
口呆目钝
请输入一个成语(认输或离开请按Q):遁名匿迹
计功谋利

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

from gooey import Gooey, GooeyParser
import pandas as pd

chengyu = ("idiom.json")
t = c
chengyu["shoupin"] = t.str[0]
chengyu["weipin"] = t.str[-1]
chengyu = c("word")[["shoupin", "weipin"]]


@Gooey
def main:
parser = GooeyParser(description="成语接龙查询器 - @小小明")
('word', help="被查询的成语")
args =
word = args.word
if word not in c:
print("你输入的不是一个成语,请重新输入!")
else:
words = c[c == c[word, "weipin"]]
if words.shape[0] > 0:
print("满足条件的成语有:")
print("、".join(words))
else:
print("抱歉,没有找到能够满足条件的成语")
print("-----" * 10)


if __name__ == '__main__':
main

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

pip install Gooey

项目地址:

体验一把:

点击start后:

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

1.《1 100打一成语,干货看这篇!我用 Python 自制成语接龙小游戏,刺激》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《1 100打一成语,干货看这篇!我用 Python 自制成语接龙小游戏,刺激》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/2157743.html

上一篇

10086交话费专题之手机话费误充给他人怎么办?小编带你找运营商要回来

下一篇

40岁女人征婚,干货看这篇!天呐!上海90岁帅气老爷叔征婚,竟找到失散40多年的儿女!

1 100打一成语,干货看这篇!小学数学趣味40题,假期和孩子一起玩

1 100打一成语,干货看这篇!小学数学趣味40题,假期和孩子一起玩

1 100打一成语相关介绍,生了1.5只鸡,5个鸡蛋。请在100天内给我100个鸡蛋。你需要几只鸡? 2.3人3天3桶水,9人9天几桶水? 3.三个孩子吃三个面包需要3分钟,90个孩子,90个面包需要多长时间? 4.如何使用最简...

1 100打一成语专题之老司机奥运速成手册丨东京奥运版“成语新解”

  • 1 100打一成语专题之老司机奥运速成手册丨东京奥运版“成语新解”
  • 1 100打一成语专题之老司机奥运速成手册丨东京奥运版“成语新解”
  • 1 100打一成语专题之老司机奥运速成手册丨东京奥运版“成语新解”
1 100打一成语看这里!小学数学趣味40题,假期和孩子一起玩

1 100打一成语看这里!小学数学趣味40题,假期和孩子一起玩

1 100打一成语相关介绍,生了1.5只鸡,5个鸡蛋。请在100天内给我100个鸡蛋。你需要几只鸡? 2.3人3天3桶水,9人9天几桶水? 3.三个孩子吃三个面包需要3分钟,90个孩子,90个面包需要多长时间? 4.如何使用最简...

【1 100打一成语】专题这有20道禁毒谜语,你猜出几个?广州松洲街全民猜谜齐禁毒

【1 100打一成语】专题这有20道禁毒谜语,你猜出几个?广州松洲街全民猜谜齐禁毒

1 100打一成语相关介绍,“音乐现在摇头”,“大致看起来像阿玛兰斯,晒干的话像茶叶”,“小名字是白面,但不能充饥。杀人是害人的。”.这些与毒品有关的谜,你能猜出几个吗?第34届国际禁毒日临近,广州白云区松州街举行了“全民制毒、...

【1 100打一成语】部编版语文四年级下册期中考试卷(含答案)

【1 100打一成语】部编版语文四年级下册期中考试卷(含答案)

1 100打一成语相关介绍,四年级下册语文期中考试试卷 班:名:满分:100分考试时间:90分钟 标题顺序 一个;一个。工作;工作。1 两个;两个。这个;这个。2 三;三;3 萨 五;哦;5 六;六 总分 得分 第一,看拼音,写...

1 100打一成语,干货看这篇!部编版语文四年级下册期中考试卷(含答案)

1 100打一成语,干货看这篇!部编版语文四年级下册期中考试卷(含答案)

1 100打一成语相关介绍,四年级下册语文期中考试试卷 班:名:满分:100分考试时间:90分钟 标题顺序 一个;一个。工作;工作。1 两个;两个。这个;这个。2 三;三;3 萨 五;哦;5 六;六 总分 得分 第一,看拼音,写...

【1 100打一成语】专题部编版一年级语文下册期末冲刺专项练习——词(词语归类及搭配)

  • 【1 100打一成语】专题部编版一年级语文下册期末冲刺专项练习——词(词语归类及搭配)
  • 【1 100打一成语】专题部编版一年级语文下册期末冲刺专项练习——词(词语归类及搭配)
  • 【1 100打一成语】专题部编版一年级语文下册期末冲刺专项练习——词(词语归类及搭配)
1 100打一成语,干货看这篇!100个常见成语及注释(附造句)家长们快转走吧!

1 100打一成语,干货看这篇!100个常见成语及注释(附造句)家长们快转走吧!

1 100打一成语相关介绍,学习成语的目的是为了熟悉成语,要熟练地使用成语,必须掌握成语的含义,这样才能使话更简洁、更准确、更生动。 下面是老师整理的100个常考成语,试试看,你能不能用这些成语造出句子呢? 01 1.兴高采烈:...