[问题] 新手问题,不知错在哪

楼主: 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