python中成语接龙游戏_python——成语接龙小游戏

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

思路——

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‘)是不一样的效果,前者是对的,后者也会出错

原文:http://www.cnblogs.com/vhills/p/7000791.html

你可能感兴趣的:(python中成语接龙游戏)