[問題] 新手問題,不知錯在哪

作者: kslman   2020-05-23 11:38:48
昨天開始看書學python,學到elif這邊的時候想試著寫加上while的邏輯,但這邊卡住了
=====程式碼如下=====
def getage(agenum):
while True:
if agenum<16:
print('can`t eat')
getage(int(input()))
continue
elif agenum<18:
print('close')
getage(int(input()))
continue
print('ya')
break
print(getage(int(input())))
=====以上=====
但輸入數字的時候很奇怪,如果直接輸入18,會回傳ya和None然後break
但搞不懂None是怎麼來的?
如果先輸入1,會回傳can`t eat
再輸入18,會回傳ya和can`t eat,然後不會break
之後再輸入數字都就都不會break了
想請教是哪裡有問題,寫了好久想不出來...
作者: lemon651 (小明)   2020-05-23 12:13:00
你的getage沒有return東西 所以你print(getage())這邊就會是None第二 你第一個agenum是1 進入另一個getage() 輸入18 跳出那層出來接continue 但是你的agenum還是1沒有被變過所以基本就是無限迴圈 我覺得你自己一步一步把結果寫出來或是開debug模式看一下就知道了
作者: cuteSquirrel (松鼠)   2020-05-23 12:41:00
agenum 在使用者輸入後要記得再賦值一次https://onlinegdb.com/r1nTtQLsL
作者: outshaker (out)   2020-05-23 12:44:00
看一下你的while的跳出方式,是看agenum的數值對吧?只要進入while迴圈,agenum內容沒有更動過的話就基本不太可能離開while了,要記得更新agenum的內容另外在函數內呼叫函數,這種遞迴寫法也不是這樣子用的然後 print 只是在螢幕上顯示數字,並不是回傳喔
作者: salmon12706 (Ellen)   2020-06-29 16:17:00
工研院人工智慧課程推薦https://reurl.cc/4RDRaK

Links booklink

Contact Us: admin [ a t ] ucptt.com