关于布尔函数错误
Posted
技术标签:
【中文标题】关于布尔函数错误【英文标题】:About a boolean function error 【发布时间】:2018-12-29 17:31:41 【问题描述】:在练习中: “帕洛阿尔托的松鼠大部分时间都在玩耍。特别是,如果温度在 60 到 90(含)之间,它们就会玩耍。除非是夏天,否则上限是 100 而不是 90。给定一个 int 温度和一个布尔值 is_summer,如果松鼠玩耍则返回 True,否则返回 False。”
def squirrel_play(temp, is_summer):
for temp in range(61,101) and is_summer = True:
return True
elif is_summer = False and temp > 90:
return False
else:
return True
或者这个:
def squirrel_play(temp, is_summer):
if is_summer = True and temp is in range(61,101): #Changed
return True
elif is_summer = False and temp > 90:
return False
else:
return True
我怀疑它不会考虑给定的每一种输入,特别是因为最后两行,但是当我尝试运行这段代码时,它在第二行给了我一条错误消息。我不知道它是什么,我还没有看到任何解决方案。
【问题讨论】:
is_summer = False
-> is_summer == False
和 is_summer = True
-> is_summer == True
,你想要比较,而不是赋值。或者只使用not is_summer
和is_summer
您不需要明确比较布尔值与True
或False
【参考方案1】:
您不必针对 True 或 False 进行测试。您可以通过if
或if not
进行检查
def squirrel_play(temp, is_summer):
low_temp = 60
hi_temp = 91
if is_summer: # implicit check for True
hi_temp = 101
if temp in range(low_temp, hi_temp):
return True
return False
【讨论】:
【参考方案2】:第一个有一个 for 语句,所以它肯定是错误的。
第二个也是错误的,因为如果 is_summer
为 False 并且温度低于 60,那么它将求助于 else 块并给出 True
这是错误的
def squirrel_play(temp, is_summer):
if is_summer == True and temp in range(60,101):
return True
elif is_summer == False and temp in range(60, 91):
return True
else:
return False
【讨论】:
如果输入“squirrel_play(60, False)”,这将给出“False”,正确答案是 True,无论如何,谢谢。 啊!第一个参数的包容性!但我认为你明白了要点【参考方案3】:def squirrel_play(temp, is_summer):
if is_summer:
return 60 <= temp <= 100
elif not is_summer:
return 60 <= temp <= 90
return False
【讨论】:
is_summer
是布尔值。所以elif
不是必需的(它可以是else
),最后一个return
永远不会发生......【参考方案4】:
更简洁的版本:
def squirrel_play(temp, is_summer):
return temp in range(60, 101 if is_summer else 91)
【讨论】:
【参考方案5】:def squirrel_play(temp, is_summer):
if is_summer:
return temp in range(60,101)
else:
return temp in range(60,91)
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。以上是关于关于布尔函数错误的主要内容,如果未能解决你的问题,请参考以下文章
PHP:致命错误:未捕获的错误:在布尔值上调用成员函数 execute() [重复]
Codeigniter 致命错误:在布尔值上调用成员函数 result()
在 CakePHP 3 中调用布尔错误时的成员函数 build()
Codeigniter - 在布尔值上调用成员函数 result_array() - 本地设置安装错误