小试牛刀的简易成语接龙。
思路——
1、网上下载成语字典的txt版本
2、通过python进行处理得到格式化的成语,并整理成字典(python字典查找速度快)
3、python程序,查找 用户输入的最后一个字和字典里首字一致的,放入列表,并通过random进行随机选择,然后输出
字典整理部分:转换成字典
file = open(r‘D:\Desktop\zidian.txt‘).readlines()
f= open(r‘D:\Desktop\zidian3.txt‘,‘w‘)
x={}
num=0for i infile:print i[2:10]
x[num]= i[2:10]
f.write("‘%s‘:u‘%s‘,\n"%(num,i[2:10]))
num+=1f.close()
转换成字典——类似格式
chengyu = {
‘0‘:u‘阿党比周‘,
‘1‘:u‘阿平绝倒‘,
‘2‘:u‘阿权膴仕‘,
‘3‘:u‘阿时趋俗‘,
‘4‘:u‘阿世媚俗‘,
‘5‘:u‘阿世取容‘……}
判断部分:通过input获取成语,然后截取最后一个字,在字典中寻找该字开头的成语,并输出。加入try,except,防止找不到成语的错误。(字典不全,只有20000+数据)
while 1:
list = []
s =raw_input(‘请输入成语:‘)
ns = s.decode(‘gbk‘)[-1:]
try:
for i in chengyu.values():
ni = i[:1]
if ns == ni:
list.append(i)
print u‘接龙:‘,len(list),random.choice(list)
except:
print u‘接龙:是在下输了‘
效果图:没有进行优化处理,没有判断用户输入是否输入正确成语。
程序比较简易,主要困难在于编码的转换,困惑了很久。
1、判断字是否相等的时候,如果编码格式不一致,是不能比较的,会发生错误。str是gbk编码,先解码成unicode,然后在进行比较。
2、如果不知道编码,可使用isinstance(s, unicode)判断,或者import chardet,然后用chardet.detect(TestData)查询格式
3、先解码s.decode(‘gbk‘)[-1:],和s[-1:].decode(‘gbk‘)是不一样的效果,前者是对的,后者也会出错
如果觉得《python成语接龙_python——成语接龙小游戏》对你有帮助,请点赞、收藏,并留下你的观点哦!