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

python 成语接龙 # coding=utf-8 import xpinyin import random import pickle from collections import defaultdict #读文件获取词语列表 file = open('/tensorflow/py_aiplat_demo/data/ciyu.txt','r',encoding='gbk') line = file.readlin... 阅读详情

作者:小小明
原文链接:

https://blog.youkuaiyun.com/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 pd

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

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

import pandas as pd
import numpy as np

chengyu = 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"]]
words

Index(['舟车劳顿', '舟水之喻', '舟中敌国', '诌上抑下', '侜张为幻', '周而不比', '周而复始', '周公吐哺', '周规折矩',
       '周急继乏', '周郎顾曲', '周情孔思', '周穷恤匮', '周游列国', '诪张变眩', '诪张为幻', '粥少僧多', '粥粥无能'],
      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("程序结束")
        break
    n = int(n)
    if not (0 < n <= 100):
        print("非法数字,程序结束")
        break
    for _ in range(n):
        words = chengyu.index[chengyu.shoupin == chengyu.loc[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 = 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("程序结束")
        break
    n = int(n)
    if not (0 < n <= 100):
        print("非法数字,程序结束")
        break
    for _ in range(n):
        words = chengyu.index[chengyu.shoupin == chengyu.loc[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 = 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("你离开了游戏,再见!!!")
        break
    if word not in chengyu.index:
        print("你输入的不是一个成语,请重新输入!")
        continue
    if weipin and chengyu.loc[word, 'shoupin'] != weipin:
        print("你输入的成语并不能与机器人出的成语接上来,你输了,游戏结束!!!")
        break
    words = chengyu.index[chengyu.shoupin == chengyu.loc[word, "weipin"]]
    if words.shape[0] == 0:
        print("恭喜你赢了!成语机器人已经被你打败!!!")
        break
    word2 = np.random.choice(words)
    print(word2)
    weipin = chengyu.loc[word2, "weipin"]

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

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

from gooey import Gooey, GooeyParser
import pandas as pd

chengyu = 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.word
    if 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行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,领AI全套资料
【Python爆款】这款“成语接龙”太强大了?以后就靠它了、霸气。 ????前言 "胸藏文墨怀如谷,腹有诗书气自华"。 ——《和董传留别》 成语接龙是中华民族传统的文字游戏。 它历史悠久,是传统文字、文化、文明的一个缩影,也是老少皆宜的民间文化娱乐活动。 成语接龙:"龙腾虎跃,该你了!" 什么?你立刻接上了「跃马弯弓」? 确认过眼神,是高手没错了。 Hi~我是栗子,又见面了哇! 今天我带来了新技能解锁,没错,就是: ... 阅读详情

相关推荐

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

在 https://github.com/pwxcoo/chinese-xinhua 项目中可以下载到中华成语的语料库,该项目收录包括 14032 条歇后语,16142 个汉字,264434 个词语,31648 个成语。 结构如下: chinese-xinhua/ | +-data/<--数据文件夹 || |+-idiom.json<--成语 || |+-word.json<--汉字 || |+-xiehouyu.json<--歇...

m0_69951489的博客 1181

python成语接龙小游戏,成语大全版,无限流接龙成语

python成语接龙小游戏,成语大全版,无限流接龙成语

HQC66666的博客 1742

Python每日练习:成语接龙游戏

对于每个成语,我们检查它的第一个字是否与上一个成语的最后一个字相同。成语接龙是一种富有趣味性和挑战性的游戏,它要求玩家根据前一个成语的最后一个字,找到一个以该字开头的新成语。然后,我们使用一个无限循环来不断获取下一个成语,并将其打印出来。接下来,我们将编写一个函数,用于接收上一个成语并返回一个以最后一个字开头的新成语。我们将使用一个循环,不断提示玩家输入成语,并将其传递给find_idiom函数来获取下一个成语。首先,我们需要一个成语列表,用于存储可供选择的成语。这是一个简单的成语接龙游戏的实现。

TechPr的博客 592

Python自制成语接龙小游戏

作者:小小明 Python自制成语接龙小游戏 在 https://github.com/pwxcoo/chinese-xinhua 项目中可以下载到中华成语的语料库,该项目收录包括 14032 条歇后语,16142 个汉字,264434 个词语,31648 个成语。 结构如下: chinese-xinhua/ | +- data/ <-- 数据文件夹 | | | +- idiom.json <-- 成语 | | | +- word.json <-- 汉字 | | | +- .

小小明-代码实体的专栏 3万+

PYTHON成语接龙代码

PYTHON成语接龙代码/只要你装了PYTHON就可以运行。本质是从文本导入数据,然后利用循环遍历来完成成语接龙/注释很详细,适合新手学习使用

保姆级教程:用YOLOv5+ROS2 Humble搞定奥比中光Dabai DCW深度相机的3D物体定位

本教程详细介绍了如何使用YOLOv5模型和ROS2 Humble系统,结合奥比中光Dabai DCW深度相机实现3D物体定位。从环境配置、模型部署到深度数据融合,提供完整的实战指南,帮助开发者快速掌握三维坐标提取技术,适用于机器人开发和计算机视觉应用。

weixin_26765363的博客 271

用Python 做成语接龙,超简单,有语音,过年和孩子玩

用Python 做成语接龙,超简单,有语音,过年和孩子玩

hq606的博客 1835

使用在UE5中使用AirSim插件Eigen库头文件引用报错,出现报错的解决方式

如图所示,用红线圈出的两条头文件引用会报错,提示无法找到他们,但是可以发现的是,他们的路径书写是没有问题的。在终端中运行时候,会出现如下的报错。

GFCLJY的博客 1008

Python实现成语接龙

【代码】Python实现成语接龙。

Lamb的博客 1667

WebUI自动化测试框架搭建(python+pytest+selenium+allure)

将鼠标移动到要定位的元素上面>右键>点击“检查”>在元素代码上右键>复制>复制XPath。

m0_63729339的博客 1281

ESP32水墨屏日历实战:低功耗自动更新与HTTPS数据解析

本文详细介绍了ESP32水墨屏日历项目的开发实践,重点讲解了低功耗自动更新与HTTPS数据解析的实现方法。通过ESP32的自动休眠功能和水墨屏的零功耗特性,结合HTTPS请求安全获取网络数据,实现了高效节能的桌面日历应用。项目代码开源,适合物联网开发者参考。

xx56789的博客 778

成语接龙(深搜模板)

成语接龙(深搜模板) 描述   开门见山 山高水长 长夜难明 明争暗斗 斗志昂扬 扬眉吐气 气象万千 千载难逢 逢凶化吉……   成语接龙,顾名思义,成语一个接着一个,每一个成语的第一个字要和前一个成语的最后一个字相同。两个人玩成语接龙可以比谁先接不上,而一个人玩成语接龙也可以努力把龙接得尽量长。   现在给你若干“成语”(由小写英文字母组成的字符串),你可以利用这些给定的成语进行接龙游戏。对于每一个成语,你需要回答:如果以它开头,一条成语接龙中最多可以包含多少个成语(它自身也算一个)?   注意:每个成语

Foolishman的博客 2065

MATLAB小白也能搞定!BCT脑网络分析工具箱安装与入门指南

本文为零基础用户提供了一份详尽的BCT脑网络分析工具箱安装与入门指南。从MATLAB环境配置、BCT工具箱下载与路径添加,到连接矩阵构建、节点度与聚类系数等基础指标计算,手把手带领神经科学研究者跨越编程门槛,快速掌握脑影像数据分析的核心流程。

threejs5artist的博客 1092

【python】Python成语接龙游戏[1-3难度均有](源码+数据)【独一无二】

👉博__主👈:米码收割机👉技__能👈:C++/Python语言👉公众号👈:测试开发自动化【获取源码+商业合作】👉荣__誉👈:阿里云博客专家博主、51CTO技术博主👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。

测试开发自动化 1728

C#实现低通和高通滤波算法

低通滤波器允许通过低于某个截止频率的信号成分,并且抑制高于该频率的成分。而高通滤波器则允许通过高于某个截止频率的信号成分,并抑制低于该频率的成分。巴特沃斯滤波器是一种对称的滤波器,具有平坦的幅度响应和最小的群延迟。低通和高通滤波是数字信号处理中常用的滤波技术,用于滤除或增强信号中的特定频率成分。在本篇文章中,我们将使用C#编程语言来实现低通和高通滤波算法。以上就是使用C#实现低通和高通滤波算法的示例代码。你可以根据自己的需求调整截止频率和采样率,将这些代码应用于你的项目中。是滤波器的截止频率,

XisVisual_Basic的博客 1275

AIGC游戏测试自动化:AI如何提升游戏QA效率

随着游戏产业的蓬勃发展,游戏的复杂度和规模不断增加,传统的游戏测试方式面临着巨大的挑战。本文章的目的在于深入探讨AIGC技术在游戏测试自动化中的应用,分析AI如何提升游戏QA的效率。范围涵盖了从核心概念到实际应用的各个方面,包括算法原理、数学模型、项目实战案例以及未来发展趋势等。本文将按照以下结构进行阐述:首先介绍核心概念与联系,明确AIGC和游戏测试自动化的相关概念和关系;接着讲解核心算法原理和具体操作步骤,通过Python代码进行详细说明;然后介绍数学模型和公式,并举例说明;

AI 原生应用开发的博客 1357

python成语接龙源代码,基于Tkinter,带成语解释

python成语接龙源代码,基于Tkinter,带成语解释,接龙规则接出上一个成语最后一字相同或近音的成语即可。

Python代码大全 1735

vue2/3 - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

vue扫描二维码条形码,vue网页调用摄像头扫二维码条形码,vue移动端如何实现调用相机扫描二维码,vue移动端扫一扫功能,vue怎么做移动端h5扫一扫功能,vue识别二维码和条形码,vue实现点击按钮调用摄像头扫码,vue调用本地摄像头实现拍照功能,Vue中如何进行二维码生成与扫描,如何实现vue在手机浏览器中调用摄像头实现扫描二维码功能,VUE项目移动端H5调用摄像头扫码,vue项目中实现H5调取摄像头,网页调用摄像头实现二维码扫描功能,vue调用手机摄像头,vue在调用摄像头扫码,vue自定义打开摄像

✅ 精选推荐文章 1万+

python中成语接龙游戏_Python实现成语接龙

这是一篇用Python实现成语接龙小游戏的具体开发教程。Python实现这个功能非常容易,以下分为两个版本,一个是简易版,能够实现基本的功能。还有一个是拓展版,是在简易版上进行拓展,功能更为复杂且完善。这个可以应用在很多方面,比如说聊天机器人,而且还可以结合itchat这个Python的微信接口玩出花样等等。下面放实例:开发环境:WindowsPython版本:3.x外置模块准备:无文件准备:成语...

weixin_39629947的博客 3804

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python实现成语接龙

li =['发愤图强','笑容满面','意气风发','强颜欢笑']first_idiom = '万事如意'

qq_51684582的博客 735

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

第二篇【传奇开心果微博系列】Python微项目技术点案例示例:成语接龙游戏

如果输入的成语与当前成语的最后一个字相同,则更新当前成语,并清空玩家输入。该函数检查玩家输入的成语是否为空,并且判断玩家输入的成语的第一个字是否与当前成语的最后一个字相同。例如,你可以根据不同的策略选择电脑的回答,或者在电脑回答后添加额外的逻辑(例如判断电脑回答是否合法)。另外,你也可以使用本地的成语库或其他成语验证方法来验证成语的合法性。可以使用成语库或者在线成语接口来验证成语的合法性,确保玩家输入的成语是有效的。: 在判断成语合法后,需要判断该成语是否符合接龙规则,即是否与上一个成语的最后一个字相同。

jackchuanqi的博客 2888

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

python第4关:break的用法--成语接龙

本关任务:成语接龙。输入成语,如果该成语第一个字是前一个成语的最后一个字,将该成语加入接龙成语字符串,再输入下一条成语。如果该成语第一个字不是前一个成语的最后一个字,就结束输入,然后显示“接龙结束,所有成语为:”及所有接龙的成语。接龙的成语间有一个空格。根据提示,在右侧编辑器的begin...end之间补充代码。接龙结束,所有成语为:意气飞扬 扬眉吐气 气象万千 千军万马。接龙结束,所有成语为:人山人海 海阔天空 空中楼阁。

ZerilSavior的博客 577

python成语接龙代码_Python实现成语接龙

开发之前Python非常有意思,可以开发各种好玩的东西,而且代码很简洁。本文将指导大家怎样用Python实现成语接龙。我们将分为分为两个版本,一个是基础版,实现基本的成语接龙功能。还有一个是加强版,是在简易版上进行扩展,功能更为复杂且完善。这个可以应用在很多方面,比如说聊天机器人,而且还可以结合itchat这个Python的微信接口玩出花样等等。下面放实例:开发环境:WindowsPython版本...

weixin_39552204的博客 4623

python编写成语接龙

接收从键盘输入成语,并连接成长龙;检查成语收尾字 tmp="" i=1 while True: idiom = input("请输入第" + str(i) + "个成语:") if idiom == "": print("Game Over!") print(tmp) break else: if tmp == "": tmp=idiom i+=1 elif

xiaohu123_的博客 1782
上一篇: 强!8个Python优化提速的小技巧!
下一篇: 一道大厂Python面试题,4种解法,从青铜到王者引发的“思考”!
菜鸟学Python
博客等级 码龄9年 8089粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值