作者:JiawuZhang
出品:JiawuLab(ID:jiawulab)
微項目系列是JiawuLab原創欄目,每期選取一個自創項目或發現有趣的項目,進行代碼、邏輯分析,達到python學習目的。
大家好,我是JiawuZhang,本次微項目是——幸運球抽獎。
最近翻看手機上的老視頻,發現了很多,以前學習python時拍下的一些項目視頻。
現在看看,還是能感受到當時能做出這個功能的喜悅之情。
其中一個項目,我至今還能回憶起來當時的感受,這個項目就是幸運球抽獎。
播放
暫停
進入全屏
退出全屏
00:00
00:00
重播請
刷新
試試這是我剛剛學完培訓課第三課,掌握了判斷(if…else…)和循環(for…/while…)。
那天晚上做完課後練習後,頭腦裡面就開始想,我能不能自己弄一個項目,然後自己來碼代碼解決掉
於是經歷了兩小時的構思,拋掉各種套路,直擊遊戲本身,所以就有了這個項目
一個抽獎遊戲,一個我自己也不知道正確答案的遊戲,而概率能達到萬分之一。
於是就有了這個項目的框架,如下
總共有6關,
每一關,有5只杯子,編號1、2、3、4、5,一個小球,
將小球隨機放入一隻杯子,
如果你猜中小球所在杯子編號,進入下一關
只要你猜錯了,跳回到第一關
總共有6次機會進行
如果6關都猜對,輸出“恭喜你,全通關,你獲得了萬中挑一的稱號!”
如果6次機會都用完,沒有猜對,退出程序。
然後就開始分析,怎麼來寫代碼呢?
1、小球隨機放入杯子,而且是每關都要隨機,可是隨機還沒有學過,於是百度知道了有random庫,很方便的解決我的問題。
只需要先導入“random”,然後整數1-5中選擇一個,於是知道了“randint(1, 5)”,可以滿足我的需求。
小編注:您可以看到,當你希望解決問題,一定會去主動找尋解決辦法,因此你就能學習原本不知道的更多東西,而這種學習會記憶更深刻。
2、猜這個動作,可以用到"input"這個方法,來給項目輸入信息。
3、當猜中或猜錯,會有相應的動作,那用判斷(if…else…)正好解決。
4、有6次機會,所以需要用到循環,那兩種循環用哪個呢? 兩個都能用,只在處理過程中會有點不同
5、當猜中,進入下一關,達到6關,全通關,只要猜錯,回到第一關,所以這裡要設置兩個變量,一個勝利次數,一個失敗次數
好了,分析完畢,我們也知道了應該運用哪些知識點來操作,現在開始碼代碼:
運行下來,和上面視頻顯示的效果一樣,灰常Good~
你認為這樣就結束了嗎?
沒有,學習是不斷進行的,之後學習到了函數,我再想,用函數來改造這個小項目,正好也能實踐一下函數
函數可以傳參,所以我在想這個遊戲次數也可以改動啊,做為參數傳進去
同時我還想到把列表也放進去,以及字符串拼接,上面代碼中是用最基礎的方式
但是後來學到了佔位符,用“%s”來進行,這正好是新知識的應用
同時使用"for…"循環來實踐,於是我就把代碼改造成下面這樣:
代碼分析一下:
1、有5個杯子,所以中獎數字就是在[1, 2, 3, 4, 5]中,所以設置luckylist列表
2、傳參,我這裡設置為6,如果這時我想把機會設置成為8次,只用改最後的數字就好,也可以做更多可能
比如,當完成指定動作後,可以增加抽獎次數,這個參數可以做出相應調整。
發現沒有?對的,就像各大電商平臺,當你完成指定任務,可以增加抽獎次數,我們可以將這個功能放進更多大項目中。
後來,我就把這個小項目,放入我自己原創的一個文字遊戲中,做為一個小功能來增強整個遊戲的可玩性,並改造成各種獎勵。
所以,很多時候,你做的一個小項目,不僅能學會更多python的知識,也能促進你學習更多新的知識
同時也能成為你日後,一些大項目的一部分,能快速的改造增強功能等。
所以我一直認為:
要想學會python,多做一些小項目,尤其是自己從生活中找到靈感的小項目。
本次的微項目——幸運球抽獎——分享結束。如果您喜歡這期文章,請點贊,支持一下。
歡迎您關注我,或者給我留言,說說你遇到的問題,我們一起探討。