首页 > 解决方案 > 为什么代码 1 可以正常工作,而代码 2 不能?(Python)

问题描述

我在 Codebat 上尝试这个练习:

给定一个数字 n,如果 n 在 1..10 范围内,则返回 True,包括 1..10。除非 outside_mode 为 True,在这种情况下,如果数字小于或等于 1,或者大于或等于 10,则返回 True。

代码 1:

def in1to10(n, outside_mode):
  if not outside_mode:
      return  n in range(1,11)
  return n <= 1 or n >= 10 

代码 2:

def in1to10(n, outside_mode):
  if outside_mode and  n <= 1 and n >= 10:
    return True
  elif n >= 1 and n <= 10:
    return True
  else:
    return False

有人可以向我解释一下,因为我认为这些代码非常相似。

标签: pythonpython-3.x

解决方案


这一行是错误的:

if outside_mode and  n <= 1 and n >= 10:

n 不可能同时小于(或等于)1 和大于(或等于)10,它应该是:

def in1to10(n, outside_mode):
  if outside_mode and  n <= 1 or n >= 10:
    return True
  elif n >= 1 and n <= 10:
    return True
  else:
    return False

推荐阅读