python——成语接龙小游戏
小試牛刀的簡(jiǎn)易成語接龍。
思路——
1、網(wǎng)上下載成語字典的txt版本
2、通過python進(jìn)行處理得到格式化的成語,并整理成字典(python字典查找速度快)
3、python程序,查找 用戶輸入的最后一個(gè)字和字典里首字一致的,放入列表,并通過random進(jìn)行隨機(jī)選擇,然后輸出
?
字典整理部分:轉(zhuǎn)換成字典
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()轉(zhuǎn)換成字典——類似格式
chengyu = {
'0':u'阿黨比周',
'1':u'阿平絕倒',
'2':u'阿權(quán)膴仕',
'3':u'阿時(shí)趨俗',
'4':u'阿世媚俗',
'5':u'阿世取容'……}
?
?
判斷部分:通過input獲取成語,然后截取最后一個(gè)字,在字典中尋找該字開頭的成語,并輸出。加入try,except,防止找不到成語的錯(cuò)誤。(字典不全,只有20000+數(shù)據(jù))
while 1:list = []s =raw_input('請(qǐng)輸入成語:')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'接龍:是在下輸了'?
?
效果圖:沒有進(jìn)行優(yōu)化處理,沒有判斷用戶輸入是否輸入正確成語。
?
?
?
程序比較簡(jiǎn)易,主要困難在于編碼的轉(zhuǎn)換,困惑了很久。
1、判斷字是否相等的時(shí)候,如果編碼格式不一致,是不能比較的,會(huì)發(fā)生錯(cuò)誤。str是gbk編碼,先解碼成unicode,然后在進(jìn)行比較。?
2、如果不知道編碼,可使用isinstance(s, unicode)判斷,或者import ?chardet,然后用chardet.detect(TestData)查詢格式(偶然看到關(guān)于編碼,這里有比較好的說明http://www.cnblogs.com/drsnow/p/7017129.html)
3、先解碼s.decode('gbk')[-1:],和s[-1:].decode('gbk')是不一樣的效果,前者是對(duì)的,后者也會(huì)出錯(cuò)
?
轉(zhuǎn)載于:https://www.cnblogs.com/vhills/p/7000791.html
總結(jié)
以上是生活随笔為你收集整理的python——成语接龙小游戏的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单利用HTTP中的PUT协议拿下SHE
- 下一篇: python_day7 绑定方法与非绑定