今天跟大家伙儿聊聊我昨天捯饬的“成语接龙一个顶俩”的小玩意儿,别看名字土,玩起来还真有点意思。
起因是这样的: 前两天熊孩子拿着成语词典非要跟我玩成语接龙,我这脑子,临时抱佛脚也接不上几个。痛定思痛,寻思着自己写个小程序,既能陪娃玩,又能偷偷提高下自己的词汇量,一举两得,岂不美哉?
说干就干,我立马打开电脑,撸起袖子就开始。第一步肯定是找数据源,巧妇难为无米之炊嘛我在网上扒拉半天,终于找到一个成语词典的txt文件,美滋滋的下下来,打开一看,好家伙,格式乱七八糟的,还得自己整理。
接下来就是数据清洗,用Python写个小脚本,把txt文件里的成语提取出来,存到一个列表里。这个过程简直是灾难,各种编码问题,各种奇怪符号,搞得我头昏脑涨。不过好在还是搞定,看着整理好的成语列表,成就感满满。
有成语列表,就开始写核心的接龙算法。我的思路很简单,就是从成语列表中找到所有以给定字开头的成语。为提高效率,我建一个字典,key是成语的第一个字,value是所有以这个字开头的成语列表。这样,查找起来就快多。
写完核心算法,就开始做用户界面。本来想用Qt或者Tkinter写个图形界面,但是想想太麻烦,干脆直接用命令行算,简单粗暴,能用就行。界面很简单,就是提示用户输入一个成语,然后程序给出所有以这个成语一个字开头的成语。
为增加点趣味性,我还加一个“一个顶俩”的功能。就是如果用户输入的成语没有接龙的,程序就自动从“两”字开头的成语开始接。这个功能也有限制,只能接一次,不然就没完没。
就是测试,自己先玩几把,发现还是有不少bug,比如有的成语不在词典里,有的成语有多个读音,等等。一一修复之后,总算是能正常使用。
昨天晚上,我把这个小程序拿给熊孩子玩,他玩得不亦乐乎,还不停的夸我厉害。看着他高兴的样子,我也觉得值。虽然这个小程序很简单,但是也花我不少心思,也算是我的一个小小作品。
这回实践让我体会到,做任何事情都要有耐心和毅力。遇到问题不要怕,一点一点解决,总能找到办法。技术是为生活服务的,能用简单的技术解决实际问题,才是最重要的。以后有时间,我还想继续完善这个小程序,加一些更高级的功能,比如成语解释,成语出处等等。
- 数据清洗很重要,直接影响后续的效率
- 核心算法是关键,要考虑各种情况
- 用户界面不一定要花哨,能用就行
希望我的分享对大家有所帮助,也欢迎大家多多交流。