作者kslman ()
看板Python
标题[问题] 新手问题,不知错在哪
时间Sat May 23 11:38:48 2020
昨天开始看书学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://webptt.com/cn.aspx?n=bbs/Python/M.1590205131.A.1C1.html
1F:推 lemon651: 你的getage没有return东西 所以你print(getage())这边就 05/23 12:13
2F:→ lemon651: 会是None 05/23 12:13
3F:推 lemon651: 第二 你第一个agenum是1 进入另一个getage() 输入18 跳 05/23 12:16
4F:→ lemon651: 出那层出来接continue 但是你的agenum还是1没有被变过 05/23 12:16
5F:→ lemon651: 所以基本就是无限回圈 我觉得你自己一步一步把结果写出 05/23 12:16
6F:→ lemon651: 来或是开debug模式看一下就知道了 05/23 12:16
7F:推 cuteSquirrel: agenum 在使用者输入後要记得再赋值一次 05/23 12:41
9F:推 outshaker: 看一下你的while的跳出方式,是看agenum的数值对吧? 05/23 12:44
10F:→ outshaker: 只要进入while回圈,agenum内容没有更动过的话 05/23 12:47
11F:→ outshaker: 就基本不太可能离开while了,要记得更新agenum的内容 05/23 12:48
12F:→ outshaker: 另外在函数内呼叫函数,这种递回写法也不是这样子用的 05/23 12:48
13F:→ outshaker: 然後 print 只是在萤幕上显示数字,并不是回传喔 05/23 12:59
感谢以上各位热心大大,终於看懂问题了,谢谢<(_ _)>
※ 编辑: kslman (218.187.182.6 台湾), 05/23/2020 16:44:55