关于布尔函数错误

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 == Falseis_summer = True -> is_summer == True,你想要比较,而不是赋值。或者只使用not is_summeris_summer 您不需要明确比较布尔值与TrueFalse 【参考方案1】:

您不必针对 True 或 False 进行测试。您可以通过ifif 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() - 本地设置安装错误

函数不起作用:PHP 致命错误:在布尔值上调用成员函数 bind_param()

致命错误:调用 C:\xampp\htdocs\index.php 中布尔值的成员函数 bind_param()