我知道這個意思是.isdigit不能接受整型數據輸入,但是input不是會把輸入的數字都變成字符串類型的嗎?我輸入什么都是變成字符串類型啊。所以為什么還會有這種報錯提示?網上說要用raw_input(),但是現在的python3已經沒有這個函數了,我用的是3.8
1 回答

一只斗牛犬
TA貢獻1784條經驗 獲得超2個贊
之所以報錯是因為while循環從第2次開始執行時, selectcourse這個變量的類型就變成 整型 了, 而整型是沒有isdigit()函數的, 所以才會報錯.
咱們簡單的過一下代碼的執行過程:
a.第12行執行后, 你輸入的是2, 所以此時selectcourse這個變量是字符串類型值'2', 從你的提問來看,這一點你是理解的, 接著向下看
b.然后就執行while True這個循環了, 我們先看這個while循環第一次執行, 第14行的if語句條件判斷是true,因為2是數字, 所以if下的15,16行會被執行, 這塊是關鍵, 第15行執行后, selectcourse的類型就不再是一開始的字符串類型了, 而是變成了整型; 16行打印輸出就不講了. 這是while True循環的第一次執行, 這次執行最最關鍵的就是將selectcourse這個變量的類型由字符串類型改為了整型(報錯的起始點就在這).
c.再看while循環的第2次執行, 第2次執行又到第14行判斷if條件這了, 你的報錯其實就是這會兒出現的, 因為第1次while循環已經將selectcourse這個變量的類型改為了整型, 所以第2次再去執行if的條件時, 就會報錯了, 因為selectcourse此時是整型, 而整型是沒有isdigit()函數的.
添加回答
舉報
0/150
提交
取消