Python实现成语接龙

如图:

详细代码实现:

python 复制代码
# coding:utf-8
import string
import pypinyin
import sys
import random

print("初始化中,请稍等......")


def main():
    f2 = open('./idiom.txt', 'r', encoding='utf-8')
    f = f2.read()  # 一次性读取完成

    new3_list = f.split("\n")

    robot = ["哀鸿遍野", "言外之意", "口干舌燥", "地久天长", "不期而遇", "坐享其成", "知书达理", "遮天蔽日", "张灯结彩",
             "再接再厉", "月明星稀", "缘木求鱼", "永无止境", "引人入胜", "易如反掌", "烟消云散", "形影不离", "相依为命",
             "万马齐喑", "脱口而出", "天下太平", "手下留情", "杀气腾腾", "日月如梭", "全力以赴", "倾盆大雨", "奇形怪状",
             "朴实无华", "呕心沥血", "名不虚传", "眉开眼笑", "马到成功", "良苦用心", "聚沙成塔", "尽心尽力", "豁然开朗",
             "和颜悦色", "骨肉相连", "恶语伤人", "得意门生", "大惊小怪", "层次分明", "半死不活"]

    for i in new3_list:
        randomvar = random.randint(0, 1)
        if randomvar == 0:
            robot.append(i)

    robotpy1 = []
    for k in robot:
        robotpy1.append(pypinyin.pinyin(k, style=pypinyin.NORMAL)[0])

    py2_l = []

    py2 = ""
    for i2 in new3_list:
        for i in pypinyin.pinyin(str(i2), style=pypinyin.NORMAL):
            i = str(i).replace("[", '')
            i = str(i).replace("]", '')
            i = str(i).replace("'", '')
            py2 = py2 + str(i)
        py2_l.append(py2)

    def ifcy():
        for i in new3_list:
            if i == da:
                return True
        return False

    upcy = ' '
    while True:
        js = False
        da = input("你:")
        py3 = pypinyin.pinyin(da, style=pypinyin.NORMAL)[0]
        py6 = pypinyin.pinyin(da, style=pypinyin.NORMAL)[len(pypinyin.pinyin(da, style=pypinyin.NORMAL)) - 1]
        upcy1 = pypinyin.pinyin(upcy, style=pypinyin.NORMAL)[len(pypinyin.pinyin(upcy, style=pypinyin.NORMAL)) - 1]
        py = ""
        for i in pypinyin.pinyin(da, style=pypinyin.NORMAL):
            i = str(i).replace("[", '')
            i = str(i).replace("]", '')
            i = str(i).replace("'", '')
            py = py + str(i)

        if ifcy():
            if not upcy == " ":
                if py3 == upcy1:
                    print("你接上了!!!")
                else:
                    print("你没有接上,所以输了!!!")
                    input("按回车退出!!!")
                    sys.exit()
            l = 0
            for py5 in robotpy1:
                if py5 == py6:
                    print("小土豆:" + robot[l])
                    upcy = robot[l]
                    js = True
                    break
                l = l + 1

        else:
            print("不是成语!!!")
            input("按回车退出!!!")
            sys.exit()

        if not js:
            print("我输了,不过我会学习的!!!")
            input("按回车退出!!!")
            sys.exit()


def trydef(max_attempts=3):  # 设置一个最大尝试次数
    if max_attempts == 0:
        print("达到最大尝试次数,退出程序。")
        return
    try:
        main()
    except Exception as e:
        print(f"发生异常:{e}")
        trydef(max_attempts-1)  # 减少尝试次数

trydef()

关注私信我!发送idiom.txt文件!!!

相关推荐
煤泥做不到的!18 分钟前
挑战一个月基本掌握C++(第十一天)进阶文件,异常处理,动态内存
开发语言·c++
F-2H21 分钟前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
老大白菜1 小时前
Windows 11 安装 Dify 完整指南 非docker环境
windows·docker·容器
bryant_meng1 小时前
【python】OpenCV—Image Moments
开发语言·python·opencv·moments·图片矩
若亦_Royi2 小时前
C++ 的大括号的用法合集
开发语言·c++
KevinRay_2 小时前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
Captain823Jack2 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
资源补给站3 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
Captain823Jack3 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
m0_748247553 小时前
Web 应用项目开发全流程解析与实战经验分享
开发语言·前端·php