1. 程式人生 > >python新手入門程式——實驗6

python新手入門程式——實驗6

1、統計《三國演義》中人物出場次數最多的前 20 人。

'''
Python中的花括號{}:
代表dict字典資料型別,字典是Python中唯一內建的對映型別。
字典中的值沒有特殊的順序,但都是儲存在一個特定的鍵(key)下。
鍵可以是數字、字串甚至是元祖。
'''
import jieba
#定義一個集合,修正非人名,太多了,寫不完了
excludes = {'將軍','卻說','三人','天下','東吳','今日','不敢','陛下','人馬','後主','上馬','不知','太守',
            '魏兵','於是','不可','荊州','二人','如此','不能','都督','一人','蜀兵','眾將','只見','天子',
            '商議','如何','軍士','左右','軍馬','引兵','次日','大喜','漢中','大叫','先主','此人','後人'}
txt=open("三國演義.txt","r",encoding='utf-8').read()
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:
        continue
    elif word in excludes:
        continue
    elif word=="玄德" or word == "玄德曰":
        word = "劉備"
    elif word == "孔明" or word == "孔明曰":
        word = "諸葛亮"
    elif word == "孟德" or word == "孟德曰":
        word = "曹操"
    elif word == "關公" or word == "雲長":
        word = "關羽"
    else:
        counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(20):
    word,count=items[i]
    print("{0:<10}{1:>5}".format(word,count))

最終還是有很多不是人名的詞,還待改進

2、編寫程式,模擬抓狐狸小遊戲。假設一共有一排5個洞口,小狐狸最開始的時候在其中一個洞口,然後玩家隨機開啟一個洞口,如果裡面有狐狸就抓到了。如果洞口裡沒有狐狸就第二天再來抓, 但是第二天狐狸會在玩家來抓之前跳到隔壁洞口裡。

import random
n=5
#表示position只有一行資料第0行有n個數據
position=[0]*n
for i in range(n):
    position[i]=0
initPos=random.randint(0,n-1)
position[initPos-1]=1

def catchMe(initPos):
    maxsize = 10
    chance = 2
    while(maxsize):
        maxsize=maxsize-1
        try:
            x=input("開啟一個洞口:")
            x=int(x)
            if not 0<x<=n:
                chance -= 1
                if (chance <= 0):
                    print("又輸錯了,你沒有機會了")
                    break
                else:
                    print("輸錯了,在給你一次機會")
                    continue
        except:
            chance-=1
            if(chance<=0):
                print("智障,你沒有機會了")
                break
            else:
                print("叫你輸入數字,別瞎輸,在給你一次機會")
                continue
        if position[x-1]==1:
            print("抓到狐狸了")
            position[initPos - 1] = 0
        else:
            print("今天沒抓到,明天在來")
            position[initPos - 1] = 0
            if initPos==1:
                initPos=initPos+1
            elif initPos==5:
                initPos=initPos-1
            else:
                # choice() 方法返回一個列表,元組或字串的隨機項。
                initPos=initPos+random.choice((-1,1))
# 啟動遊戲, 開始抓狐狸吧
catchMe(initPos)