【问题标题】:Upper bound equal to lower in Python range上限等于 Python 范围内的下限
【发布时间】:2020-04-20 22:34:50
【问题描述】:

有人可以向我解释为什么这段代码也适用于 2:

def is_prime_v1(n):
  '''Return True if 'n' is prime. False otherwise.'''
  if n == 1:
    return False

  for d in range(2,n):
    if n % d == 0:
      return False

  return True

当代码到达时

for d in range(2,n):
    if n % d == 0:
      return False
  return True

它不会将其视为从 2 开始,而是向上且不包括 2 吗? 这对我来说并不完全有意义。 该公式有效,但如果您尝试在该范围内创建一个列表,如下所示:

x = list(range(2,2))

你得到一个空列表。

请谁能给我解释一下?它是否也适用于两个,因为它无法在 range(2,2) 上执行以下操作,然后向下移动以返回 True?

 if n % d == 0:
      return False
  return True

谢谢

【问题讨论】:

  • 我的意思是,如果它说for d in []:,你会被这种行为弄糊涂吗?将范围转换为列表不会改变元素的数量。

标签: python python-3.x range


【解决方案1】:

因为for循环从不执行,list(range(2,2)) == [],所以程序没有遍历范围,直接进入return True语句

【讨论】:

    【解决方案2】:

    你的假设是正确的。 range 函数的上限值未通过 for 循环。要克服这个问题,您只需将or n == 2 添加到程序的第三行即可。

    【讨论】:

      猜你喜欢
      • 2017-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      相关资源
      最近更新 更多