【问题标题】:How to print messages if a method is true or false如果方法为真或假,如何打印消息
【发布时间】:2019-08-16 08:46:42
【问题描述】:

我正在尝试根据用户输入制作一个简单的素数检测器。这些代码行在这里我输入了 2、5 和 123。即使它们是质数,但程序似乎为您输入的任何数字打印“非质数”

我已经尝试了很多,但我的大部分代码甚至没有打印任何东西。

def check_Prime(f):
    if(f<2):
        return False
    can=math.sqrt(f)
    for x in range(2,can):
        if(f%x==0):
            return False
        else:
            return True

if check_Prime is True:
    print("prime number")
else:
    print("not prime number")

我希望如果你输入一个素数,那么它会打印(“素数”),如果你没有输入素数,它会打印另一个

【问题讨论】:

标签: python python-3.x


【解决方案1】:

您没有调用该函数。您的if check_Prime is True: 行正在检查 函数本身 是否为真。它总是这样。

您实际上需要使用如下值调用该函数:

if check_Prime(3) is True:

但是你会发现这会抛出

TypeError: 'float' object cannot be interpreted as an integer

math.sqrt() 返回非整数时。

【讨论】:

    【解决方案2】:

    您不会调用该函数,因为您只检查 函数 是否可用。改变

    if check_Prime is True:
        print("prime number")
    else:
        print("not prime number")
    

    if check_Prime(<YourInput>) is True:
        print("prime number")
    else:
        print("not prime number")
    

    并修复您的TypeError,因为range 仅适用于整数。看看herehere,了解如何处理range中的float

    【讨论】:

      【解决方案3】:

      这是一个快速功能。它很慢。如果你想要一个快速的功能,试试这个prime checking in python

      def check_Prime(number):
          if number <= 1:
              return False
      
          if number == 2 or number == 3:
              return True
      
          if number % 2 == 0:
              return False
      
          limit = int(math.sqrt(number)) + 1
          for test in range(3, limit, 2):
              if number % test == 0:
                  return False
      
          return True
      
      if check_Prime(3) is True:
          print("prime number")
      else:
          print("not prime number")
      

      【讨论】:

        【解决方案4】:
        import math
        
        
        def checkPrime(f):
            flag = True
            if f >= 2:
                limit = int(math.sqrt(f)) + 1
                for x in range(2, limit):
                    if f % x == 0:
                        flag = False
            else:
                flag = False
            return flag
        
        
        if checkPrime(100):
            print("prime number")
        else:
            print("not prime number")
        

        【讨论】:

          猜你喜欢
          • 2011-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-07
          • 1970-01-01
          相关资源
          最近更新 更多