小试牛刀的简易成语接龙。

思路——

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 = 0
for i in file:
    print i[2:10]
    x[num] = i[2:10]
    f.write("'%s':u'%s',\n"%(num,i[2:10]))
    num+=1
f.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'接龙:是在下输了'

 

 

效果图:没有进行优化处理,没有判断用户输入是否输入正确成语。 

python 成语 Python成语接龙游戏_python

 

 

 

程序比较简易,主要困难在于编码的转换,困惑了很久。

1、判断字是否相等的时候,如果编码格式不一致,是不能比较的,会发生错误。str是gbk编码,先解码成unicode,然后在进行比较。 

2、如果不知道编码,可使用isinstance(s, unicode)判断,或者import  chardet,然后用chardet.detect(TestData)查询格式

3、先解码s.decode('gbk')[-1:],和s[-1:].decode('gbk')是不一样的效果,前者是对的,后者也会出错