初學(xué)Python寫猜數(shù)字游戲
眾所周知,當(dāng)我們學(xué)習(xí)randint這個函數(shù)時,就會了解到猜數(shù)字游戲這么一個東西。 Python中的randint函數(shù)是用來生成隨機(jī)數(shù)的一個函數(shù)。系統(tǒng)使用這個函數(shù)來隨機(jī)生成一個已知區(qū)間的數(shù)字,而我們要做的就是猜出這個數(shù)字是多少。無止境的猜測是枯燥無味的,我們通常使用print語句提供一些提示(大了還是小了)。我們只需要運(yùn)用if來判斷該給哪一種提示,如下:
我們引入random庫使用randint函數(shù),定義變量i=random.randint(1,100)即在1-100內(nèi)隨機(jī)生成一個數(shù)字。在定義g=0,當(dāng)g不等于i時讓代碼循環(huán)運(yùn)行,從而使玩家可以一直猜測直到答對停止循環(huán)。不同情況用print語句輸出不同提示,使游戲更具可操作性。而input是為了讓電腦知道你所猜測的答案,int可使我們輸入的字符串變成可以進(jìn)行數(shù)學(xué)運(yùn)算的數(shù)字使電腦判斷出提示語句。 而這顯得過于枯燥無味,我們增加一點點細(xì)節(jié)。 Python函數(shù)庫中有winsound這個函數(shù)庫,其內(nèi)有Beep這個有趣的函數(shù),它的作用就是發(fā)出特定頻率的音,并且可以調(diào)節(jié)發(fā)音時間。winsound.Beep(500,1000),其中500為頻率,1000為時間,單位分別為hz和ms。不同的答題次數(shù)我們可以制作不同的評級,另外加上不同的音,這會顯得有趣的多。如果你有足夠的實力,使用Beep創(chuàng)作一段音樂也不是不可以,不過這十分麻煩。而現(xiàn)在我們要做的就是統(tǒng)計玩家的猜測次數(shù),這非常簡單,我們只需要在循環(huán)語句中加入計數(shù)器即可。
這就完成了嗎?或許我們可以在增加一點點細(xì)節(jié)。有的玩家總是猜不對,而這樣的提示過于籠統(tǒng),我們是否可以提示的再詳細(xì)一點?數(shù)字是電腦隨機(jī)生成的,我們本身是不知道答案的,那么我們怎么樣知道答案?顯然我們可以直接print出來,可這也太沒有意思了。
One hundred years later 我們可以再次使用計數(shù)器,讓它一直轉(zhuǎn),直到進(jìn)入答案上下特定范圍內(nèi),使用if語句print出來。可是這樣玩過幾次就會發(fā)現(xiàn)提示與答案的差值是固定的,這又失去了意義。怎么樣可以隨機(jī)生成提示呢? Tow hundred years later 或許可以再次使用random.randint這個函數(shù),我們重新定義一個變量,讓它一直循環(huán)運(yùn)作,知道隨機(jī)生成的數(shù)進(jìn)入答案上下的特定范圍然后輸出,這樣就保證了提示的隨機(jī)性。
現(xiàn)在我們要思考另一個問題了,什么時候提示,提示多少次?我是這樣設(shè)計的,開始時有一次選擇提示的機(jī)會,當(dāng)答題次數(shù)超過五次再次彈出是否需要提示,第一次提示錯過不再出現(xiàn),超過五次后的提示選擇了否可繼續(xù)在下一次選擇提示,但有且只有一次機(jī)會。
先定義n=0,通過使用變量n來使提示次數(shù)只能為一次。 后來又學(xué)習(xí)了一個新的函數(shù)庫os,里面的os.system可以調(diào)用電腦中的文件。通過這個,我們可以改進(jìn)上面的評級功能,不同評級調(diào)用不同音頻文件。最后我們再加入是否繼續(xù)游玩讓玩家可以選擇繼續(xù)或退出,適當(dāng)改變從屬關(guān)系讓代碼按照我們的意思運(yùn)行,這樣我們就完成了猜數(shù)字游戲升級版。
(以上為完整代碼)