国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python基礎(chǔ)練習(xí)之幾個簡單的游戲

2020-01-04 16:31:00
字體:
供稿:網(wǎng)友

文檔介紹

利用python/279500.html">python/142943.html">python寫“猜數(shù)字”,“猜詞語”,“誰是臥底”這三個游戲,從而快速掌握python編程的入門知識,包括python語法/列表/元組/字典/流程控制/庫函數(shù)等等。

環(huán)境參數(shù)

linux平臺,python3.4。需要在linux中把python3.4編譯一下,這樣編寫python程序時保存為.py格式的文件并添加執(zhí)行權(quán)限再終端運行即可(原理跟shell腳本相同),非常方便。

ps:貼出來的python程序代碼在windows中也兼容,只不過運行方式不是命令行,而是要通過python軟件。python軟件可以上官網(wǎng)下載安裝點擊打開鏈接,在學(xué)習(xí)的時候,可以直接在python軟件上面輸入python語句即可打印結(jié)果,也就是說python無需編譯即可運行,很多人也稱之為“腳本”語言。

設(shè)計實現(xiàn)

猜數(shù)字

很多人在聚餐時都玩過猜數(shù)字游戲,由某人隨機出一個指定范圍內(nèi)的數(shù),然后其他人一個一個猜,猜的過程中區(qū)間不斷縮小,直到猜中為止。

這里的猜數(shù)字游戲就是用程序來代替那個出數(shù)字的人,程序算法設(shè)計為:

1.輸入數(shù)字區(qū)間--->2.系統(tǒng)產(chǎn)生區(qū)間內(nèi)的隨機數(shù)--->3.玩家輸入自己猜的數(shù)字--->4.比較玩家猜的與答案的高低并提示--->5.未猜中則回到3,猜中則提示猜次數(shù)

代碼很少,如下所示:

#!/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系統(tǒng)知道這是python3程序,random是產(chǎn)生隨機數(shù)的庫函數(shù),要注意的是python對格式要求很嚴格,因為它不用通過{}而是通過縮進量判斷流程。

通過這個可以掌握基本的語法和編寫規(guī)則了,下面再試試有點難度的,用到詞組和循環(huán)控制等知識。

猜詞語

電視節(jié)目中的”你來比劃我來猜“大家應(yīng)該都看過,而且很多人也玩過,規(guī)則就是一個人看詞語比劃相應(yīng)動作和說一些提示,另一個人看不到詞語要通過比劃的動作猜出來,猜的過程中主持人判斷是否符合規(guī)則。

某一組玩家猜詞語的算法設(shè)計為:

1.開始計時--->2.猜詞語--->3.答對則正確數(shù)加1并回到2,要跳過或犯規(guī)了則直接回到2,超時了直接跳到3--->3.循環(huán)10次后或時間結(jié)束后統(tǒng)計答對的題數(shù)

有num組玩家就進行以上流程的num次循環(huán),當(dāng)然也要準(zhǔn)備x組詞語,因為每組玩家猜的詞語是不同的。

代碼量不大,如下所示:

#!/usr/local/bin/python3import timenum = int(input('有多少組玩家/n'))guessWord = []correct = []#定義列表,num+10是不想讓guessWord下標(biāo)不合法for i in range(0,num+10):	guessWord.append(0)	correct.append(0)wordNum=10guessWord[0] = ['打情罵俏','海綿寶寶','嬌媚','金雞獨立','狼吞虎咽','睡眼朦朧','鶴立雞群','手舞足蹈','卓別林','穿越火線']guessWord[1] = ['眉飛色舞','英雄聯(lián)盟','扭秧歌','偷看美女','大搖大擺','回眸一笑','市場營銷','大眼瞪小眼','自戀','處女座']guessWord[2] = ['狗急跳墻','捧腹大笑','目不轉(zhuǎn)睛','愁眉苦臉','左顧右盼','宮保雞丁','升國旗','暗戀','臭襪子','趁火打劫']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		#統(tǒng)計用時		if (110<=sec<=120):			print ('還有10秒鐘')		if (sec>=120):			print ('時間到!游戲結(jié)束')			break				if (flag=='y'):			correct[i]=correct[i]+1			continue		else:			continue	str_temp=('第%d組答對數(shù)目:%d') % (i+1,correct[i])		print (str_temp)	

其實詞語可以做成從獨立的文件中讀入的方式,這樣方便更新和管理,下面就介紹一種用“字典”的方式來獲得“誰是臥底”的臥底詞。

誰是臥底

誰是臥底也是深受很多人喜歡的游戲,起碼要三人以上才能玩,大致分為幾個階段:1.分配平民詞語和臥底詞語--->2.玩家依次發(fā)言--->3.根據(jù)發(fā)言投票認為誰是臥底--->4.得到票數(shù)最多的玩家出局--->5.出局玩家剛好是臥底則平民勝利,如果出局玩家是平民則被冤死并繼續(xù)第2步,當(dāng)剩下的平民只有1個時臥底勝利。

特殊情況是,出現(xiàn)兩名或以上的玩家票數(shù)相同,則相同票數(shù)的玩家重新發(fā)言,然后全體針對這幾個玩家投票。

程序設(shè)計思想:輸入玩家數(shù)num,玩家編號為0~num-1,然后定義三個含有num個元素的列表:詞語列表,計算玩家票數(shù)的列表,死亡玩家的列表。列表下標(biāo)從0~num-1,隨機產(chǎn)生該區(qū)間的數(shù)x,代表x號玩家是臥底,然后分配臥底詞和平民詞。注意,提示幾號玩家是臥底或冤死的時候,要將打印信息時候的下標(biāo)加1,比如下標(biāo)數(shù)0代表的其實是1號玩家。在生活中,沒多少人會習(xí)慣說自己是“第0個人”這種說法吧,除了程序員--;

在每輪游戲中,依次進行發(fā)言,投票,票數(shù)最多的玩家出局(出現(xiàn)相同票數(shù)則重新發(fā)言),出局玩家歸入死亡玩家列表。然后開始下一輪。

那么,如果有num位玩家,則最多有多少輪游戲結(jié)束?因為進行到只有2位玩家游戲就結(jié)束了,所以答案是num-2輪!也就是說上述流程要循環(huán)num-2次。

編程思想定了就可以敲代碼了,程序代碼如下:

#!/usr/local/bin/python3import randomfrom spyword import spywordnum=int(input('請輸入玩家數(shù)(至少為3)/n'))#臥底玩家spy=random.randint(0,num-1)#隨機產(chǎn)生詞語 定義詞語列表 計算玩家票數(shù)的列表 統(tǒng)計死亡玩家的列表list_rand=spyword.popitem()word=[]cnt=[]dead=[]#給三個列表賦值for i in range(0,num):	word.append('a')	cnt.append(0)	dead.append(num+2)#給玩家詞語 其中print是調(diào)試用的,sanmeVote是出現(xiàn)相同票數(shù)的標(biāo)志,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號玩家發(fā)言時間'%(k+1))	print ('發(fā)言環(huán)節(jié)結(jié)束')	#將各位玩家的票數(shù)置0	for j in range(0,num):		if (j not in dead):			cnt[j]=0	for j in range(0,num):		if (j not in dead):			vote2p=int(input('請%d號玩家投票'%(j+1)))-1			cnt[vote2p]=cnt[vote2p]+1			sameVote=0	for y in range(0,num):		if((cnt[y]==max(cnt)) & (y!=cnt.index(max(cnt)))):			print ('不止一位玩家得到最高票數(shù),請這些玩家重新發(fā)言')			sameVote=1	if (sameVote==0):		dead[x]=cnt.index(max(cnt))		if (dead[x]==spy):			print ('臥底得到最多票數(shù),游戲結(jié)束')			spyWin=1			break		print ('%d號玩家被冤死!'%(dead[x]+1))#游戲結(jié)束if(spyWin==0):	print ('只剩兩名玩家,臥底勝利!')

有一行代碼是

from spyword import spyword 

這里spyword是我自己定義的臥底詞字典,運行時把這個文件放在python的工作目錄下,就可以讓python程序調(diào)用該字典了。要查看python工作目錄,你需要運行python后輸入

>>>importos

>>>os.getcwd()

當(dāng)然你也可以更改python工作目錄。

python是一門簡潔高效,通俗易懂的高階動態(tài)編程語言;很多人也稱之為“膠水語言”,在接到大項目時往往用python寫好主體框架,然后在一些特定模塊再用java/js/C++之類的語言實現(xiàn)特定需求。掌握python并不難,通過這篇博客講到的三個小游戲,希望您能發(fā)現(xiàn)python的樂趣,快速找到python編程的竅門。

總結(jié)

以上就是本文關(guān)于python基礎(chǔ)練習(xí)之幾個簡單的游戲的全部內(nèi)容,希望對大家有所幫助。有什么問題可以隨時留言,小編會及時回復(fù)大家的。感謝朋友們對本站的支持!


注:相關(guān)教程知識閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 客服| 滨州市| 福建省| 崇左市| 阳西县| 绍兴市| 体育| 房产| 赞皇县| 玉溪市| 华坪县| 南投市| 洛扎县| 南澳县| 临沭县| 曲周县| 长寿区| 四平市| 六枝特区| 浠水县| 雷州市| 铜川市| 广德县| 高州市| 会理县| 二连浩特市| 中方县| 宽甸| 客服| 临朐县| 连云港市| 定西市| 岢岚县| 友谊县| 连南| 伊春市| 建湖县| 巢湖市| 建湖县| 鄂伦春自治旗| 井冈山市|