文檔介紹
利用python寫“猜數字”,“猜詞語”,“誰是臥底”這三個游戲,從而快速掌握python編程的入門知識,包括python語法/列表/元組/字典/流程控制/庫函數等等。
環境參數
linux平臺,python3.4。需要在linux中把python3.4編譯一下,這樣編寫python程序時保存為.py格式的文件并添加執行權限再終端運行即可(原理跟shell腳本相同),非常方便。
ps:貼出來的python程序代碼在windows中也兼容,只不過運行方式不是命令行,而是要通過python軟件。python軟件可以上官網下載安裝點擊打開鏈接,在學習的時候,可以直接在python軟件上面輸入python語句即可打印結果,也就是說python無需編譯即可運行,很多人也稱之為“腳本”語言。
設計實現
猜數字
很多人在聚餐時都玩過猜數字游戲,由某人隨機出一個指定范圍內的數,然后其他人一個一個猜,猜的過程中區間不斷縮小,直到猜中為止。
這里的猜數字游戲就是用程序來代替那個出數字的人,程序算法設計為:
1.輸入數字區間--->2.系統產生區間內的隨機數--->3.玩家輸入自己猜的數字--->4.比較玩家猜的與答案的高低并提示--->5.未猜中則回到3,猜中則提示猜次數
代碼很少,如下所示:
#!/usr/local/bin/python3import randombot=int(input('Set range bottom/n'))top=int(input('Set range top/n'))rand=random.randint(bot,top)print ('Random number in ['+str(bot)+','+str(top)+'] generated!')num=int(input('###Guess the number###/n'))cnt=1while (num!=rand): if (num<rand): print('*_* Lower than the answer') else: print('T_T Higher than the answer') num=int(input('###Guess the number###/n')) cnt=cnt+1print('^_^ You get the answer with [%d] times'%cnt)第一行是要讓linux系統知道這是python3程序,random是產生隨機數的庫函數,要注意的是python對格式要求很嚴格,因為它不用通過{}而是通過縮進量判斷流程。
通過這個可以掌握基本的語法和編寫規則了,下面再試試有點難度的,用到詞組和循環控制等知識。
猜詞語
電視節目中的”你來比劃我來猜“大家應該都看過,而且很多人也玩過,規則就是一個人看詞語比劃相應動作和說一些提示,另一個人看不到詞語要通過比劃的動作猜出來,猜的過程中主持人判斷是否符合規則。
某一組玩家猜詞語的算法設計為:
1.開始計時--->2.猜詞語--->3.答對則正確數加1并回到2,要跳過或犯規了則直接回到2,超時了直接跳到3--->3.循環10次后或時間結束后統計答對的題數
有num組玩家就進行以上流程的num次循環,當然也要準備x組詞語,因為每組玩家猜的詞語是不同的。
代碼量不大,如下所示:
#!/usr/local/bin/python3import timenum = int(input('有多少組玩家/n'))guessWord = []correct = []#定義列表,num+10是不想讓guessWord下標不合法for i in range(0,num+10): guessWord.append(0) correct.append(0)wordNum=10guessWord[0] = ['打情罵俏','海綿寶寶','嬌媚','金雞獨立','狼吞虎咽','睡眼朦朧','鶴立雞群','手舞足蹈','卓別林','穿越火線']guessWord[1] = ['眉飛色舞','英雄聯盟','扭秧歌','偷看美女','大搖大擺','回眸一笑','市場營銷','大眼瞪小眼','自戀','處女座']guessWord[2] = ['狗急跳墻','捧腹大笑','目不轉睛','愁眉苦臉','左顧右盼','宮保雞丁','升國旗','暗戀','臭襪子','趁火打劫']flag='n'for i in range(0,num): start = time.time() for k in range(0,wordNum): #顯示詞語 print (('%d.%s')%(k+1,guessWord[i][k])) flag = input('請答題,答對請輸入y,跳過請輸入任意鍵') end = time.time() sec = end-start #統計用時 if (110<=sec<=120): print ('還有10秒鐘') if (sec>=120): print ('時間到!游戲結束') break if (flag=='y'): correct[i]=correct[i]+1 continue else: continue str_temp=('第%d組答對數目:%d') % (i+1,correct[i]) print (str_temp)
|
新聞熱點
疑難解答