看板 Python 關於我們 聯絡資訊
昨天開始看書學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了 想請教是哪裡有問題,寫了好久想不出來... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.122.53.87 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1590205131.A.1C1.html
lemon651: 你的getage沒有return東西 所以你print(getage())這邊就 05/23 12:13
lemon651: 會是None 05/23 12:13
lemon651: 第二 你第一個agenum是1 進入另一個getage() 輸入18 跳 05/23 12:16
lemon651: 出那層出來接continue 但是你的agenum還是1沒有被變過 05/23 12:16
lemon651: 所以基本就是無限迴圈 我覺得你自己一步一步把結果寫出 05/23 12:16
lemon651: 來或是開debug模式看一下就知道了 05/23 12:16
cuteSquirrel: agenum 在使用者輸入後要記得再賦值一次 05/23 12:41
cuteSquirrel: https://onlinegdb.com/r1nTtQLsL 05/23 12:43
outshaker: 看一下你的while的跳出方式,是看agenum的數值對吧? 05/23 12:44
outshaker: 只要進入while迴圈,agenum內容沒有更動過的話 05/23 12:47
outshaker: 就基本不太可能離開while了,要記得更新agenum的內容 05/23 12:48
outshaker: 另外在函數內呼叫函數,這種遞迴寫法也不是這樣子用的 05/23 12:48
outshaker: 然後 print 只是在螢幕上顯示數字,並不是回傳喔 05/23 12:59
感謝以上各位熱心大大,終於看懂問題了,謝謝<(_ _)> ※ 編輯: kslman (218.187.182.6 臺灣), 05/23/2020 16:44:55
salmon12706: 工研院人工智慧課程推薦https://reurl.cc/4RDRaK 06/29 16:17