群友教你使用Python編程來實(shí)現(xiàn)“猜數(shù)字”游戲
回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書
大家好,我是Python進(jìn)階者。
一、前言
前幾天在Python鉆石交流群有個(gè)叫【dcpeng】的粉絲問了一個(gè)關(guān)于Python實(shí)現(xiàn)“猜數(shù)字”游戲的問題,這里拿出來給大家分享下,一起學(xué)習(xí)。

大概意思是說隨機(jī)產(chǎn)生一個(gè)數(shù)字,然后你自己輸入一個(gè)數(shù)字,一直猜,直到猜對(duì)為止,退出循環(huán)。
二、解決過程
這里給出【馮誠(chéng)】和【德善堂小兒推拿-瑜亮老師】大佬的解答,一共兩個(gè)方法,一起來看看吧!
【馮誠(chéng)】解答
其實(shí)這個(gè)題目的邏輯和思路也相對(duì)簡(jiǎn)單,使用while循環(huán)和random庫,借用input()函數(shù),下面是【馮誠(chéng)】大佬給的代碼,如下所示:
import?random
n=random.randint(1,100)
while?True:
????a=int(input('請(qǐng)輸入數(shù)字:'))
????if?a>n:
????????print('猜大了')
????elif?a????????print('猜小了')
????else?:
????????print('恭喜你猜對(duì)了')
????????break
這個(gè)方法還是蠻好理解的,比較好理解,基本上運(yùn)氣好的話,幾次運(yùn)行結(jié)果,就會(huì)答對(duì)了?!綿cpeng】自己也寫了一份代碼,和這個(gè)基本上一樣的,就不單獨(dú)展示了。

【德善堂小兒推拿-瑜亮老師】解答
這里加入了重新賦值的方法,使得交互性更強(qiáng)了一些,代碼如下:
#-*-coding:utf8;-*-
#qpy:console
import?random
key=random.randint(1,100)
btm=1
top=100
count=1
while?True:
????try:
????????user=int(input("請(qǐng)輸入數(shù)字:"))
????except:
????????continue
????if?user>key:
????????print('猜大了')
????????print(f'數(shù)字區(qū)間為{btm}-{user}')
????????top=user
????elif?user????????print('猜小了')
????????print(f'數(shù)字區(qū)間為{user}-{top}')
????????btm=user
????else:
????????print(f'恭喜你共使用{count}次機(jī)會(huì),猜對(duì)正確數(shù)字{key}')
????????break
????count+=1
這樣還能清楚的知道下一步的猜數(shù)是哪個(gè)具體的區(qū)間,確實(shí)好看很多。

不過后來【月神】日常測(cè)試,皮了一下,發(fā)現(xiàn)了一個(gè)小問題,如下圖所示:

不仔細(xì)測(cè)試的話,是很難發(fā)現(xiàn)這個(gè)小問題。

后來【瑜亮老師】?jī)?yōu)化了他的這個(gè)代碼,最新的代碼如下所示:
import?random
key?=?random.randint(1,?100)
btm?=?1
top?=?100
count?=?1
while?True:
????try:
????????user?=?int(input("請(qǐng)輸入數(shù)字:"))
????except:
????????continue
????if?user?>?key:
????????if?top?>=?user:
????????????top?=?user
????????print(f'錯(cuò)誤!正確數(shù)字比{user}小,答案就在區(qū)間{btm}-{top}之中')
????elif?user?????????if?btm?<=?user:
????????????btm?=?user
????????print(f'錯(cuò)誤!正確數(shù)字比{user}大,答案在區(qū)間{btm}-{top}之中')
????else:
????????print(f'恭喜你共使用{count}次機(jī)會(huì),猜對(duì)正確數(shù)字{key}')
????????if?count?>?7:
????????????print('請(qǐng)繼續(xù)努力!您還需要多練習(xí)猜數(shù)。')
????????elif?count?==?1:
????????????print('啥也甭說了,快去買彩票!')
????????else:
????????????print('你真是個(gè)機(jī)靈的小可愛!')
????????break
????count?+=?1
最新代碼修復(fù)了輸入錯(cuò)誤數(shù)字時(shí)提示區(qū)間顯示的錯(cuò)誤。加入一些互動(dòng),玩起來更有意思一些,這樣就更加完美了。

真是太秀了。

三、總結(jié)
大家好,我是Python進(jìn)階者。這篇文章基于粉絲提問,針對(duì)Python實(shí)現(xiàn)猜數(shù)游戲的問題,給出了具體說明和演示,并且在實(shí)現(xiàn)過程中,群友們不斷的測(cè)試和優(yōu)化,精益求精,順利地幫助粉絲解決了問題,讓程序玩起來更有意思一些。
最后感謝粉絲【dcpeng】提問,感謝【馮誠(chéng)】和【德善堂小兒推拿-瑜亮老師】大佬給出的示例和代碼支持,感謝粉絲【月神】、【馮誠(chéng)】、【Function】參與調(diào)測(cè)支持,感謝【孤煙逐云】、【東哥】、【某嘟】、【Function】、【布洛芬】、【果凍】等人參與學(xué)習(xí)交流。

小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。
-------------------?End?-------------------
往期精彩文章推薦:

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說一兩句吧~
