最近開始在學(xué)用Python做數(shù)據(jù)分析漓雅,昨天課程,老師留了一個(gè)寫猜數(shù)字小游戲代碼的作業(yè)朽色,搗鼓了一個(gè)多小時(shí)邻吞,最后還請(qǐng)了大神幫忙??
題目是這樣的:
編寫猜數(shù)字小游戲的代碼:輸入一個(gè)數(shù)字,分別針對(duì)猜對(duì)數(shù)字葫男、猜錯(cuò)數(shù)字抱冷、輸入錯(cuò)誤給予判斷
作為一個(gè)沒寫過代碼的小白,拿到題目后我什么也沒分析梢褐,直接按照題目給的條件開始寫了
a = int(input('請(qǐng)輸入一個(gè)數(shù)字:'))
if(a==1):
? ? print('恭喜你旺遮,猜對(duì)了')
elif(a!=1):
? ? print('很遺憾,你猜錯(cuò)了,a的值為',a)
elif(a.isdigit() == False):
? ? print('輸入錯(cuò)誤')
我還自作聰明的給a定義了一個(gè)int盈咳,但是結(jié)果毫不意外地報(bào)錯(cuò)了耿眉,我也沒指望一次就能跑通??
在這里,我還沒意識(shí)到一個(gè)最底層的嚴(yán)重問題鱼响,就是判斷輸入內(nèi)容是不是數(shù)字應(yīng)該放在最開始(感謝大神最后指出)鸣剪。我一直被a的類型所困擾:
①如果a從一開始被定義為int型,那么在輸入str時(shí),與a的int矛盾會(huì)報(bào)錯(cuò)筐骇;
②如果a從一開始定義為str债鸡,那么在判斷是不是1的時(shí)候,因?yàn)?是int铛纬,就永遠(yuǎn)不會(huì)等于1厌均,且永遠(yuǎn)不會(huì)運(yùn)行到第三個(gè)判斷;
最后在大神的提醒下告唆,我改變了一下判斷順序:
a = input('請(qǐng)輸入一個(gè)數(shù)字:')
if(a.isdigit() == False):
? ? print('輸入錯(cuò)誤')
elif(a==1):
? ? print('恭喜你棺弊,猜對(duì)了')
elif(a!=1):
? ? print('很遺憾,你猜錯(cuò)了,a的值為',a)
但是這個(gè)還是有問題的悔详,還是之前的問題2镊屎,a的類型和1不同,導(dǎo)致永遠(yuǎn)無法作比較茄螃。所以為了解決這個(gè)問題缝驳,我想到了一個(gè)不完美的抖機(jī)靈解決方法,把1變?yōu)樽址?/p>
elif(a=='1'):
這樣代碼最終算是跑通了归苍,不過大神后面也給了種解法用狱,就是一開始定義a為字符型,后面在把a(bǔ)轉(zhuǎn)型為int拼弃,這樣就能比較了
a = input('請(qǐng)輸入一個(gè)數(shù)字:')
if(a.isdigit() == False):
? ? print('輸入錯(cuò)誤')
else:
? ? a = int(a)
? ? if (a==1):
? ? ? ? print('恭喜你夏伊,猜對(duì)了')
? ? else:
? ? ? ? print('很遺憾,你猜錯(cuò)了,a的值為', a)
感謝大神大晚上被我拉著吻氧,不厭其煩的給我答疑?( ′???` )
大神最近在重新整理他的博客溺忧,友情推廣:https://zhangze.me/