【Python小程序】这款成语接龙小程序,让孩子轻松记住500个成语,和孩子常玩,语文直上135,仅此一份,快收藏!(太强大啦~)

207 阅读4分钟

前言

学习路上,那我同行。

哈喽~大家晚上好呀,我是你们的栗子同学。

成语接龙是一个传统的文字游戏。很多孩子都喜欢玩。多玩成语接龙不仅可以增长知识,还可

以开动脑筋,在玩的同时掌握了不少词汇。

完整的源码💓免费自取👇👇厚台关注我滴滴我即可哦!

完整的源码💓免费自取👇👇厚台关注我滴滴我即可哦!

词汇是语文考试中最基本的模块,成语的积累一方面可以帮助孩子提升语文的基本功,另一方

面也对于孩子的语文作文提升大有裨益,单纯的成语记诵枯燥乏味,难以让孩子提起兴趣,也

很难记住,成语接龙是一种不错的娱乐方式,游戏娱乐的同时,帮助孩子记忆了大量的成语词

汇,小编今天就整理了一些成语接龙,可以回去和孩子玩,一边做游戏一边涨知识,一举两得

哦!

今天来给大家来给大家写一款成语接龙小游戏啦,期待嘛!?

总的是分为一款简单的成语接龙小程序+一款Python基于PyQt5 GUI有界面的成语接龙,两款

代码随你挑选啦。

和孩子一起来玩成语接龙游戏吧,保证你停!不!下!来!

正文

一、准备环境

1)环境安装

本文用到的环境如下——

 Python3、Pycharm社区版,自带的库只 要安装完 Python就可 以直接使用了,

需要安装 的库的话看教程下🎐 

 一般安装:pip install +模块名 

 镜像源安装:pip install -i pypi.douban.com/simple/+模块名 

 (之前有说过安装报错的几种方式跟解决方法,不会安装的可以去看下,还有很多国内镜像源 

也有文章的)

2)准备文字素材

需要提前准备好相应的成语接龙的文本文字素材。

二、简易成语接龙小程序

1)主程序

#下列以"'a'bao'zhi'gong 阿保之功\n"做实例

#处理一个成语手册中一行获得其开头|a
def GetHead(line):
    return line.split("'")[1]

#处理一个成语手册中一行获得其结尾|gong 阿保之功
def GetEnd(line):
    return line.split("'")[-1].rstrip('\n')

#处理一个成语手册中一行导入成语字典
def SetIn(line,dic):
         Head=GetHead(line)
         End=GetEnd(line)
         #若成语字典中尚且没有这个值,就为之新建一个列表
         if dic.__contains__(Head)==False:
             dic[Head]=[]
         dic[Head].append(End)
        
#获得一个列表中的随机一个
def GetRandom(array):
   return array[int(random.random()*len(array))]

    
#判断一个字符串是不是成语
def GetKey(Dic,string):
    for Head, End in Dic.items():
        for item in End:
            if item[-4:]==string:
                return Head
    return ''


#打开成语手册
f=open(r'四字成语.txt')


#逐行读取手册,将其中有价值的信息提取到ChengYus中
#ChengYus={‘a’:['gong 阿保之功','lao 阿保之劳',...],'ai':[...]}
Dic={}
while True:
     line = f.readline()     
     #读到末尾暂停
     if line == "":
        break
     SetIn(line,Dic)
#关闭文件
f.close()

#PlayTheGame
import random
#第一个
Head=GetRandom(list(Dic.keys()))
End=GetRandom(Dic[Head])
print('您好,我是机器人Garry,来和我玩成语接龙吧,我先来:'+End[-4:]+'\n'+\
      '您需要接'+End[-1]+' '+End.split()[0])
#之后每一组
while True:
    #接受用户的输入,直到用户输入对为止
    while True:
        User_Input=input()
        Key=GetKey(Dic,User_Input)
        if Key!='':
            break;    
        User_Input=print('您输的好像不是成语呢')
    End=GetRandom(Dic[Key])
    print('这个难不倒我'+End[-4:]+' '+End.split()[0])

2)效果展示

三、界面化成语接龙小程序

1)主程序

'''
import os
import sys
import random
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


'''成语接龙'''
class IdiomSolitaire(QWidget):
    def __init__(self, parent=None, **kwargs):
        super(IdiomSolitaire, self).__init__(parent)
        # 读取数据
        self.idiom_data, self.valid_idioms = self.readData('data/data.txt')
        self.ai_answer = None
        # 定义界面
        self.setWindowTitle('成语接龙小程序-就差你了!')
        self.setWindowIcon(QIcon('data/02.png'))
        self.setFixedSize(600, 400)
        self.user_input_label = QLabel('我方:')
        self.user_input_edit = QLineEdit()
        self.user_input_button = QPushButton('确定')
        self.ai_input_label = QLabel('电脑方:')
        self.ai_input_edit = QLineEdit()
        self.restart_button = QPushButton('重新开始')
        self.user_explain_label = QLabel('我方成语释义:')
        self.user_explain_edit = QLineEdit()
        self.ai_explain_label = QLabel('电脑方成语释义:')
        self.ai_explain_edit = QLineEdit()
        # 布局
        self.grid = QGridLayout()
        self.grid.setSpacing(12)
        self.grid.addWidget(self.user_input_label, 0, 0)
        self.grid.addWidget(self.user_input_edit, 0, 1)
        self.grid.addWidget(self.user_input_button, 0, 2)
        self.grid.addWidget(self.user_explain_label, 1, 0)
        self.grid.addWidget(self.user_explain_edit, 1, 1, 1, 2)
        self.grid.addWidget(self.ai_input_label, 2, 0)
        self.grid.addWidget(self.ai_input_edit, 2, 1)
        self.grid.addWidget(self.restart_button, 2, 2)
        self.grid.addWidget(self.ai_explain_label, 3, 0)
        self.grid.addWidget(self.ai_explain_edit, 3, 1, 1, 2)
        self.setLayout(self.grid)
        # 按键绑定
        self.user_input_button.clicked.connect(self.airound)
        self.restart_button.clicked.connect(self.restart)
    '''电脑接龙'''
    def airound(self):
        idiom = self.user_input_edit.text()
        idiom = idiom.strip()
        if (not self.isvalid(idiom)) or (self.ai_answer and idiom[0] != self.ai_answer[0][-1]):
            QMessageBox.warning(self, '成语输入错误', '你输入的成语不对哦, 不可以耍小聪明哒!', QMessageBox.Yes | QMessageBox.No)
        else:
            self.user_explain_edit.setText('读音: %s; 含义: %s' % (self.valid_idioms[idiom][0], self.valid_idioms[idiom][1]))
            if idiom[-1] in self.idiom_data:
                answers = self.idiom_data[idiom[-1]]
                answer = random.choice(answers)
                self.ai_answer = answer.copy()
                self.ai_input_edit.setText(self.ai_answer[0])
                self.ai_explain_edit.setText('读音: %s; 含义: %s' % (self.valid_idioms[answer[0]][0], self.valid_idioms[answer[0]][1]))
            else:
                QMessageBox.information(self, '你赢啦', '电脑都接不上你的成语, 你太厉害啦!', QMessageBox.Yes | QMessageBox.No)
    '''重新开始'''
    def restart(self):
        self.ai_answer = None
        self.ai_input_edit.clear()
        self.ai_explain_edit.clear()
        self.user_input_edit.clear()
        self.user_explain_edit.clear()
    '''检测成语是否合法'''
    def isvalid(self, idiom):
        return (idiom in self.valid_idioms)
    '''读取成语数据'''
    def readData(self, filepath):
        fp = open(filepath, 'r', encoding='utf-8')
        idiom_data = {}
        valid_idioms = {}
        for line in fp.readlines():
            line = line.strip()
            if not line: continue
            item = line.split('\t')
            if len(item) != 3: continue
            if item[0][0] not in idiom_data:
                idiom_data[item[0][0]] = [item]
            else:
                idiom_data[item[0][0]].append(item)
            valid_idioms[item[0]] = item[1:]
        return idiom_data, valid_idioms


'''run'''
if __name__ == '__main__':
    app = QApplication(sys.argv)
    client = IdiomSolitaire()
    client.show()
    sys.exit(app.exec_())

2)效果展示

总结

这款界面化小程序,成语接龙还有成语释义的哦边学习还可以记住意思啦

感觉特别适合小孩子玩儿。边玩儿边学习岂不快哉~成语接龙大汇总,收藏陪孩子玩吧!

整的源码💓免费自取👇👇厚台关注我滴滴我即可哦!

完整的源码💓免费自取👇👇厚台关注我滴滴我即可哦!