这是一篇用Python实现成语接龙小游戏的具体开发教程。Python实现这个功能非常容易,以下分为两个版本,一个是简易版,能够实现基本的功能。还有一个是拓展版,是在简易版上进行拓展,功能更为复杂且完善。
这个可以应用在很多方面,比如说聊天机器人,而且还可以结合itchat这个Python的微信接口玩出花样等等。
下面放实例:
开发环境:Windows
Python版本:3.x
外置模块准备:无
文件准备:成语库文件(例如我使用的是idiom.txt),当然也可以从网上抓取匹配成语,但效率相对要慢。本功能是完全可以在本地实现的。
文件内容图:
我整理出了共11174个常用成语,不是很全但一般使用是没有问题的,你们也可以酌情自行添加补充。
简易版实例
实现原理大家可能也想到了,就是调用本地成语库进行字符串首尾条件匹配。
先说一下简易版成语接龙规则:
1.接龙的成语的第一个字必须要与前一个成语结尾的字相同
2.接龙的成语必须是四字成语
3.已使用过的成语双方均不得再次使用
4.一方不按照规则接龙或接不下去时判定失败
我将其功能用函数分解了,这样结构更加清晰也方便调试,源码(文件名为"idiom_s.py")及注释如下:import random
def idiom_exists(x):
"""判断是否为成语的函数,参数为字符串,判断该字符串是否在成语库中"""
with open('idiom.txt','r') as f:
for i in set(f.readlines()):
if x == i.strip():
return True
return False
def idiom_test(idiom1, idiom2):
"""判断两个成语是否达成接龙条件"""
if idiom2[0] != idiom1[-1] or len(idiom2) != 4:
return False
return True
def idiom_select(x):
"""核心代码部分,参数x为成语,返回该成语的接龙匹配成语"""
if x == None:
with open('idiom.txt','r') as f:
return random.choice(f.readlines())[:-1]
else:
with open('idiom.txt','r') as f:
base = f.readlines()
random.shuffle(base)
for i in base:
if i[:-1] == x or len(i) != 5:
continue
if i[0] == x[-1]: