【问题标题】:codingbat Problem: close_far | failing only one test | heeeelpcodingbat 问题:close_far |只通过一项测试|嘻嘻
【发布时间】:2021-02-16 11:46:43
【问题描述】:

锻炼: 给定三个整数 a b c,如果 b 或 c 之一为“接近”(与 a 最多相差 1),而另一个为“远”,与其他两个值相差 2 或更多,则返回 True。注意:abs(num) 计算一个数字的绝对值。

https://codingbat.com/prob/p160533

我的代码:

def close_far(a, b, c):
  if (b == a + 1 or a - 1 or a) or (c == a + 1 or a - 1 or a):        #looking for the "close" one
    if (c > a + 2 and b + 2) or (c <= a - 2 and b - 2):               #looking for c to be the "far" one
        return True
    elif (b > (a + 2 and c + 2)) or (b <= (a - 2 and c - 2)):         #looking for b to be the "far" one
        return True
    else:    
      return False

错误答案 -> close_far(4, 3, 5) → False True X

我的代码给出了 True,尽管它是 False。


我实际上不知道我在那里做错了什么。我想我的第二个 if 语句有问题......括号?或/和? 感谢您的帮助!

screenshot

【问题讨论】:

标签: python if-statement logic


【解决方案1】:

嗯,我猜对了!我弄乱了 elif 语句中的括号,导致测试失败。你让我走上了正轨 Johnny Mopp,感谢您的帮助。

def close_far(a, b, c):
  if (b == a + 1 or a - 1 or a) or (c == a + 1 or a - 1 or a):              #looking for the "close" one
    if ((c > a + 2) and (c > b + 2)) or ((c <= a - 2) and (c <= b - 2)):    #looking for c to be the "far" one
        return True
    elif (b > (a + 2 and c + 2)) or ((b <= a - 2) and (b <= c - 2)):        #looking for b to be the "far" one
        return True
    else:    
      return False

【讨论】:

    【解决方案2】:

    尝试了简单的 OR 和 AND 操作。为我工作得很好。

    def close_far(a, b, c):
      if abs(b-c)>=2:
        if (abs(a-b)<=1 and abs(a-c)>=2) or ( abs(a-c)<=1 and abs(a-b)>=2):
          return True
      return False
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多