Python prime calculator - 不更新布尔值

时间:2018-03-18 03:35:21

标签: python python-3.x boolean primes

from sys import argv

def prime():
  for i in range(2,num):
      if num % i == 0:
          print(f"{num} can be divisible by {i}.")
          checker = False

num = int(input("Enter the number you want to check is prime: "))
checker = True

if num < 2:
    print(f"{num} is a prime number.")
elif num == 0:
    print(f"{num} is not a prime number.")
elif num > 0:
    prime()
    print(f"Is this number a prime - {checker}.")
else:
    print(f"Please write number larger than 0.")

大家好,我刚刚开始编码,这可能是一个非常简单的问题。我希望我的代码能够找到数字的因子,或者如果数字是素数则打印 - 但是“prime”函数中的布尔值永远不会更新为False。不知道为什么!

谢谢。

2 个答案:

答案 0 :(得分:0)

def chapter_view(request, pk, slug, cpk, cslug): context = {} chapter = Chapter.objects.get(pk=pk, slug=slug, course__pack=cpk, course__slug=cslug) context["chapter"] = chapter return render(request, "courses/chapter_detail.html", context) 函数未“更新”<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false" > android:alpha="0.5" </item> <item android:state_enabled="true" > android:alpha="1" </item> </selector> 的原因是因为函数中没有return语句。

有了它,函数看起来像这样:

prime()

更新的代码如下所示:

False

但是,这不是解决问题的唯一方法:it's not recommended and frowned upon by many programmers as bad practice - 使用global语句(看起来就像您最初尝试的那样)。

有了它,函数看起来像这样:

def prime():
  checker = True
  for i in range(2,num):
      if num % i == 0:
          print(f"{num} can be divisible by {i}.")
          checker = False
  return checker

更新的代码如下所示:

from sys import argv

def prime():
  checker = True
  for i in range(2,num):
      if num % i == 0:
          print(f"{num} can be divisible by {i}.")
          checker = False
  return checker


num = int(input("Enter the number you want to check is prime: "))

if num < 2:
    print(f"{num} is a prime number.")
elif num == 0:
    print(f"{num} is not a prime number.")
elif num > 0:
    is_prime = prime()
    print(f"Is this number a prime - {is_prime}.")
else:
    print(f"Please write number larger than 0.")

答案 1 :(得分:0)

def prime():
       global checker
       """ remaining logic as is"""

我认为这会奏效。    对不起格式,因为我正在写电话。