python基礎練習之幾個簡單的遊戲,python基礎練習
文檔介紹
利用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 ('時間到!遊戲結束')breakif (flag=='y'):correct[i]=correct[i]+1continueelse:continuestr_temp=('第%d組答對數目:%d') % (i+1,correct[i])print (str_temp)
其實詞語可以做成從獨立的檔案中讀入的方式,這樣方便更新和管理,下面就介紹一種用“字典”的方式來獲得“誰是臥底”的臥底詞。
誰是臥底
誰是臥底也是深受很多人喜歡的遊戲,起碼要三人以上才能玩,大致分為幾個階段:1.分配平民詞語和臥底詞語--->2.玩家依次發言--->3.根據發言投票認為誰是臥底--->4.得到票數最多的玩家出局--->5.出局玩家剛好是臥底則平民勝利,如果出局玩家是平民則被冤死並繼續第2步,當剩下的平民只有1個時臥底勝利。
特殊情況是,出現兩名或以上的玩家票數相同,則相同票數的玩家重新發言,然後全體針對這幾個玩家投票。
程式設計思想:輸入玩家數num,玩家編號為0~num-1,然後定義三個含有num個元素的列表:詞語列表,計算玩家票數的列表,死亡玩家的列表。列表下標從0~num-1,隨機產生該區間的數x,代表x號玩家是臥底,然後分配臥底詞和平民詞。注意,提示幾號玩家是臥底或冤死的時候,要將列印資訊時候的下標加1,比如下標數0代表的其實是1號玩家。在生活中,沒多少人會習慣說自己是“第0個人”這種說法吧,除了程式員--;
在每輪遊戲中,依次進行發言,投票,票數最多的玩家出局(出現相同票數則重新發言),出局玩家歸入死亡玩家列表。然後開始下一輪。
那麼,如果有num位玩家,則最多有多少輪遊戲結束?因為進行到只有2位玩家遊戲就結束了,所以答案是num-2輪!也就是說上述流程要迴圈num-2次。
編程思想定了就可以敲代碼了,程式碼如下:
#!/usr/local/bin/python3import randomfrom spyword import spywordnum=int(input('請輸入玩家數(至少為3)\n'))#臥底玩家spy=random.randint(0,num-1)#隨機產生詞語 定義詞語列表 計算玩家票數的列表 統計死亡玩家的列表list_rand=spyword.popitem()word=[]cnt=[]dead=[]#給三個列表賦值for i in range(0,num):word.append('a')cnt.append(0)dead.append(num+2)#給玩家詞語 其中print是調試用的,sanmeVote是出現相同票數的標誌,spyWin是臥底勝利的判決條件for i in range(0,num):if (i==spy):word[i]=str(list_rand[1])else:word[i]=str(list_rand[0])print (word[i])sameVote=0spyWin=0#遊戲開始for x in range(0,num-1):for k in range(0,num):if ((k not in dead) & (sameVote==0)):print ('%d號玩家發言時間'%(k+1))print ('發言環節結束')#將各位玩家的票數置0for j in range(0,num):if (j not in dead):cnt[j]=0for j in range(0,num):if (j not in dead):vote2p=int(input('請%d號玩家投票'%(j+1)))-1cnt[vote2p]=cnt[vote2p]+1sameVote=0for y in range(0,num):if((cnt[y]==max(cnt)) & (y!=cnt.index(max(cnt)))):print ('不止一位玩家得到最高票數,請這些玩家重新發言')sameVote=1if (sameVote==0):dead[x]=cnt.index(max(cnt))if (dead[x]==spy):print ('臥底得到最多票數,遊戲結束')spyWin=1breakprint ('%d號玩家被冤死!'%(dead[x]+1))#遊戲結束if(spyWin==0):print ('只剩兩名玩家,臥底勝利!')
有一行代碼是
from spyword import spyword
這裡spyword是我自己定義的臥底詞字典,運行時把這個檔案放在python的工作目錄下,就可以讓python程式調用該字典了。要查看python工作目錄,你需要運行python後輸入
>>>importos
>>>os.getcwd()
當然你也可以更改python工作目錄。
python是一門簡潔高效,通俗易懂的高階動態程式設計語言;很多人也稱之為“膠水語言”,在接到大項目時往往用python寫好主體架構,然後在一些特定模組再用java/js/C++之類的語言實現特定需求。掌握python並不難,通過這篇部落格講到的三個小遊戲,希望您能發現python的樂趣,快速找到python編程的竅門。
總結
以上就是本文關於python基礎練習之幾個簡單的遊戲的全部內容,希望對大家有所協助。感興趣的朋友可以繼續參閱本站:Python3中的列表,元組,字典,字串相關知識小結、Python爬蟲執行個體爬取網站搞笑段子、python實現Face Service代碼等,有什麼問題可以隨時留言,小編會及時回複大家的。感謝朋友們對本站的支援!