因此,我正在CodingBat上做一个问题,这是一个提供JS和practice问题的网站。我遇到了一个意想不到的输出。顺便说一句,这是问题的链接:https://codingbat.com/prob/p135815。理论上,我的代码应该返回False,但当我将打印(squirrel_play(50,False))放入时,它将不返回。
代码:
def squirrel_play(temp, is_summer):
if is_summer:
if temp <= 100:
if temp >= 60:
return True
elif temp <= 60:
return False
elif temp >= 100:
return False
if not is_summer:
if temp <= 90:
if temp >= 60:
return True
elif temp >= 90:
return False
elif temp <= 60:
return False
当我运行打印(squirrel_play(50,False))时,我没有得到(我应该得到假)为什么?
发布于 2020-08-18 01:32:24
如果参数为is_summer of False,则在第二个条件块中:
if not is_summer:
if temp <= 90:
if temp >= 60:
return True
elif temp >= 90:
return False
elif temp <= 60:
return False
然后沿着这个街区走:
if temp <= 90:
if temp >= 60:
return True
这里所发生的事情是,您永远无法到达elif temp <= 60
,因为您处于第一个条件中。只有在不满足第一个条件的情况下,才能到达下面的elif。
在这个if temp <= 90
块的末尾,整个条件链结束,您的函数返回None
的默认值,因为您没有提供另一个返回值。
通过让整个代码读懂,您可能会更清楚地看到这一点:
def squirrel_play(temp, is_summer):
if is_summer:
if temp <= 100:
if temp >= 60:
return True
elif temp <= 60:
return False
elif temp >= 100:
return False
if not is_summer:
if temp <= 90:
if temp >= 60:
return True
else:
return "This is where I'm returning with 50, and True as my parameters"
elif temp >= 90:
return False
elif temp <= 60:
return False
发布于 2020-08-18 01:32:23
你试过调试它吗?对于squirrel_play(50, False)
,它将分为:
def squirrel_play(temp, is_summer):
if is_summer:
if temp <= 100:
if temp >= 60:
return True
elif temp <= 60:
return False
elif temp >= 100:
return False
if not is_summer:
if temp <= 90:
if temp >= 60:
return True
# HERE ( 50 is less than 90 but not greater than 60 )
# and you have no return statement for this case
elif temp >= 90:
return False
elif temp <= 60:
return False
发布于 2020-08-18 01:32:29
当前对其进行编码的方式,在
if temp <= 90:
if temp >= 60:
return True
elif ....
如果第一个if
测试计算为True,而第二个测试计算为False,则不会达到return
语句(请记住,由于第一个if
计算为true,因此没有执行后续的if
测试),因此函数返回None
。
实际上,您可以通过使用链式比较算子来简化函数
def squirrel_play(temp, is_summer):
if is_summer:
return 60 <= temp <= 100
else:
return 60 <= temp <= 90
https://stackoverflow.com/questions/63465686
复制相似问题