欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python基礎練習之幾個簡單的游戲

 更新時間:2017年11月10日 16:44:57   作者:iKeepGoing  
這篇文章主要介紹了python基礎練習之幾個簡單的游戲,具有一定參考價值,需要的朋友可以了解下。

文檔介紹

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

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

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

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

設計實現(xiàn)

猜數(shù)字

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

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

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

代碼很少,如下所示:

#!/usr/local/bin/python3

import random

bot=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=1
while (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+1
print('^_^ You get the answer with [%d] times'%cnt)

第一行是要讓linux系統(tǒng)知道這是python3程序,random是產(chǎn)生隨機數(shù)的庫函數(shù),要注意的是python對格式要求很嚴格,因為它不用通過{}而是通過縮進量判斷流程。

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

猜詞語

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

某一組玩家猜詞語的算法設計為:

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

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

代碼量不大,如下所示:

#!/usr/local/bin/python3

import time
num = int(input('有多少組玩家\n'))
guessWord = []
correct = []
#定義列表,num+10是不想讓guessWord下標不合法
for i in range(0,num+10):
	guessWord.append(0)
	correct.append(0)
wordNum=10
guessWord[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步,當剩下的平民只有1個時臥底勝利。

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

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

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

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

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

#!/usr/local/bin/python3
import random
from spyword import spyword
num=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ù)的標志,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=0
spyWin=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()

當然你也可以更改python工作目錄。

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

總結(jié)

以上就是本文關于python基礎練習之幾個簡單的游戲的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python3中的列表,元組,字典,字符串相關知識小結(jié)、Python爬蟲實例爬取網(wǎng)站搞笑段子、python實現(xiàn)人臉識別代碼等,有什么問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!

相關文章

  • Python之Class&Object用法詳解

    Python之Class&Object用法詳解

    今天小編就為大家分享一篇Python之Class&Object用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 如何使用 Python 中的功能和庫創(chuàng)建 n-gram

    如何使用 Python 中的功能和庫創(chuàng)建 n-gram

    在計算語言學中,n-gram 對于語言處理、上下文和語義分析非常重要,它們是從令牌字符串中相鄰的連續(xù)單詞序列,本文將討論如何使用 Python 中的功能和庫創(chuàng)建 n-gram,感興趣的朋友一起看看吧
    2023-09-09
  • 淺談Pycharm調(diào)用同級目錄下的py腳本bug

    淺談Pycharm調(diào)用同級目錄下的py腳本bug

    今天小編就為大家分享一篇淺談Pycharm調(diào)用同級目錄下的py腳本bug,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python大批量寫入數(shù)據(jù)(百萬級別)的方法

    Python大批量寫入數(shù)據(jù)(百萬級別)的方法

    這篇文章主要給大家介紹了關于Python大批量寫入數(shù)據(jù)(百萬級別)的相關資料,在日常處理數(shù)據(jù)的過程中,我們都有批量寫入數(shù)據(jù)的需求,文中給出了詳細的示例代碼,需要的朋友可以參考下
    2023-07-07
  • Python Django 簡單分頁的實現(xiàn)代碼解析

    Python Django 簡單分頁的實現(xiàn)代碼解析

    這篇文章主要介紹了Python Django 簡單分頁的實現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python目標檢測YoloV4當中的Mosaic數(shù)據(jù)增強方法

    python目標檢測YoloV4當中的Mosaic數(shù)據(jù)增強方法

    這篇文章主要為大家介紹了python目標檢測YoloV4當中的Mosaic數(shù)據(jù)增強方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python中連通域分割Two-Pass算法的原理與實現(xiàn)詳解

    Python中連通域分割Two-Pass算法的原理與實現(xiàn)詳解

    兩遍掃描法(?Two-Pass?),正如其名,指的就是通過掃描兩遍圖像,將圖像中存在的所有連通域找出并標記,本文將詳細介紹Two-Pass算法的原理與實現(xiàn),需要的可以參考下
    2023-12-12
  • 基于python實現(xiàn)智能用例生成工具

    基于python實現(xiàn)智能用例生成工具

    這篇文章主要為大家詳細介紹了如何基于python實現(xiàn)智能用例生成工具,即根據(jù)輸入的功能點,生成通用測試點,感興趣的小伙伴可以跟隨小編一起了解下
    2023-09-09
  • pytorch部署到jupyter中的問題及解決方案

    pytorch部署到jupyter中的問題及解決方案

    這篇文章主要介紹了pytorch部署到jupyter中,在這里需要注意我再輸入的時候出現(xiàn)了一些無法定位的提示,但是我的電腦沒有影響使用jupyter,還是可以使用jupyter并且可以import torch,本文給大家講解的非常詳細,需要的朋友參考下吧
    2022-05-05
  • python神經(jīng)網(wǎng)絡Keras實現(xiàn)GRU及其參數(shù)量

    python神經(jīng)網(wǎng)絡Keras實現(xiàn)GRU及其參數(shù)量

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡Keras實現(xiàn)GRU及其參數(shù)量,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05

最新評論