1 回答

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