【问题标题】:Continue while loop after return True返回True后继续while循环
【发布时间】:2017-11-21 05:18:29
【问题描述】:

我正在创建一个函数,当数字(此处为 X)为素数时返回 True。

所以我正在检查给定的数字是否可以被从 2 到 X-1 的整数整除。

但是当检查返回 True 时,while 循环会中断。

帮助

def is_prime(x):
    n = 2

    if x < 2:
        return False

    elif x == 2:
        return True

    else:
        while True and n < x:
            if x % n == 0:
                return False

            else:
                n += 1
                return True    #--The loop is breaking here--

【问题讨论】:

  • 是的,从函数返回会破坏该函数内部的循环。您只想在循环完成后return True。顺便说一句。 while True and n &lt; xwhile n &lt; x 相同。

标签: python while-loop numbers


【解决方案1】:

您的代码应如下所示:

def is_prime(x):
    n = 2

    if x < 2:
        return False

    elif x == 2:
        return True

    else:
        while n < x:
            if x % n == 0:
                return False

            else:
                n += 1
        # Put the return True after the loop
        return True

print('{}: {}'.format(10, is_prime(10)))
print('{}: {}'.format(11, is_prime(11)))
print('{}: {}'.format(0, is_prime(0)))
print('{}: {}'.format(1, is_prime(1)))
print('{}: {}'.format(2, is_prime(2)))
print('{}: {}'.format(113, is_prime(113)))

输出:

10: False
11: True
0: False
1: False
2: True
113: True

【讨论】:

    【解决方案2】:

    你在循环中使用了 return 语句,所以它从方法中退出了。您需要更改此循环的逻辑。在这里检查: Python Prime number checker

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-11
      • 2016-10-28
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多