【问题标题】:Code cannot find square number (python beginner) [closed]代码找不到平方数(python初学者)[关闭]
【发布时间】:2020-11-28 04:06:54
【问题描述】:

您好,我是一个完整的初学者,谁能帮我解决为什么我的代码不起作用?

-判断数字是否为平方数(真/假)

import math 

def is_square(n): 

    if n >= 0:
        if math.sqrt (n).is_integer :
            print (n,"is a square number")
            return True
            
        else:
            print (n," is not a square number ")
            return False
          
    else: 
        print ( n,":","Negative numbers cannot be square numbers")
        return False

【问题讨论】:

  • 您得到的确切错误是什么?它不适用于特定输入吗?如果是,输入是什么?
  • 用你自己的话说,你认为math.sqrt (n).is_integer 是什么意思?
  • 您需要使用is_integer() 而不是is_integer。但是,这并不能解决问题。
  • 这能回答你的问题吗? Python - Check if a number is a square
  • 我理解我的错误 abt math.sqrt 返回一个浮点数但出于好奇 is_integer() 而不是 is_integer 之间有什么区别?顺便说一句,感谢您抽出时间发表评论

标签: python


【解决方案1】:

语法: variable. is_integer()

import math 

def is_square(n): 

    if n >= 0:
        if math.sqrt (n).is_integer() : # you need to call the .is_integer method
            print (n,"is a square number")
            return True
            
        else:
            print (n," is not a square number ")
            return False
          
    else: 
        print ( n,":","Negative numbers cannot be square numbers")
        return False
is_square(-4)
is_square(4)
is_square(5)
-4 : Negative numbers cannot be square numbers
4 is a square number
5  is not a square number 

要获得更好的洞察力,请尝试获取输出:

print(math.sqrt (5).is_integer(), '\n' ,math.sqrt (5).is_integer)
False 
 <built-in method is_integer of float object at 0x7f320fba2360>

【讨论】:

  • math.sqrt((90000000**2)+3).is_integer() 将导致 False。所以这可能行不通。
  • 因为 90000000.00000001 不是int
  • 抱歉,我的意思是 math.sqrt((70000000**2)+1).is_integer() 将导致 True。这是不正确的。任何大的数字都会给出 True。另一个例子math.sqrt((90000000**2)+1).is_integer()
  • 这是一个极端情况,精度大于 10^-9 我认为不是数学模块
  • 怎么会是真的。如果(70000000**2)在我们做平方根的时候是一个int,那么加1怎么会使它仍然是一个整数?
【解决方案2】:

math.sqrt (n) 返回一个浮点数。例如,math.sqrt(144) 将给您12.0。所以,is.integer() 方法不起作用。 尝试添加这段代码:

if n >= 0:
        p=math.sqrt(n)
        if p==int(p):
            print (n,"is a square number")
            return True
        else:
            return False 
           

这里有一些例子:

>>> 12==int(12)
True
>>> 12.0==int(12.0)
True
>>> 12.3==int(12.3)
False

【讨论】:

    猜你喜欢
    • 2020-05-09
    • 2014-05-04
    • 1970-01-01
    • 2017-02-05
    • 2012-04-26
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多