Python递归day()函数转int失败 移除print后代码失效问题
问题根因
两个问题由同一个代码缺陷导致:
day()函数没有有效返回值:递归到hour < 24的终止分支时,原代码用了无参数的裸return,Python中这种写法默认返回None。外层的print(int(day(hour)))本质是尝试对None做整数转换,自然得不到预期结果。- 原代码运行时能看到数值,完全靠函数内部的
print(hour)语句输出中间计算值,这行和函数返回逻辑无关。删掉这行后,函数既没有内部打印逻辑,也无法向外层传递有效计算结果,就会表现为"完全无法运行"。 - 原代码还存在边界遗漏:没有处理
hour == 24的场景,这种情况下两个条件判断都不命中,同样会返回None。
修复后代码
删除冗余的内部打印语句,补全终止分支的返回值,同时去掉多余的条件判断覆盖边界场景:
minute_input = int(input("minutes: ")) minute = minute_input % 60 hour = minute_input / 60 def day(hour): if hour < 24: return hour return day(hour / 24) print(int(day(hour)))
内容的提问来源于stack exchange,提问作者chrisr69
相关产品推荐
相关产品推荐

