关于布尔函数错误

问题描述 投票:0回答:6

在练习中: “帕洛阿尔托的松鼠一天中的大部分时间都在玩耍。特别是,如果温度在 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

我怀疑它不会考虑给定的每种输入,特别是因为最后两行,但是当我尝试运行此代码时,它在第二行给了我一条错误消息。我不知道这是什么,也没有看到任何解决方案。

python function boolean
6个回答
0
投票

您不必测试 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

0
投票

第一个有一个 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

0
投票
def squirrel_play(temp, is_summer):
    if is_summer:
        return 60 <= temp <= 100
    elif not is_summer:
        return 60 <= temp <= 90
    return False

0
投票

更简洁的版本:

def squirrel_play(temp, is_summer):
    return temp in range(60, 101 if is_summer else 91)

0
投票
def squirrel_play(temp, is_summer):
  if is_summer:
    return temp in range(60,101)
  else:
    return temp in range(60,91)

0
投票

def squirrel_play(temp, is_summer):

返回(温度>=60且温度<=90) or (temp>=90且温度<=100 and is_summer)

© www.soinside.com 2019 - 2024. All rights reserved.