简单python代码问题

问题:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?我的代码:importmath######################... 问题: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 我的代码: import math ####################################### for i in range(10000): i1=sqrt(i+100) i2=sqrt(i+268) if isinstance(i1,'int') and isinstance(i2,'int'): print i 请问代码哪里错了,谢谢 展开
 我来答
百度网友ca79eb9
推荐于2016-03-20 · TA获得超过5027个赞
知道大有可为答主
回答量:1342
采纳率:100%
帮助的人:742万
展开全部

你的代码确实错了几处。

sqrt()是math中的函数,使用时应该为math.sqrt()

math.sqrt()的计算结果为浮点数,肯定不是int型的。

你的思想是把完全平方数开方,这样应该得到一个小数部分为0的数。但小数部分为0,不一定是int型,int型并不是整数的意思。即1.0不是int型。此外,浮点数是有计算精度的,你做开方运算,有时候即便这个数明明就是个完全平方数,但计算机也很难得到一个恰好是小数部分为0的结果,而是诸如9.9999999999953的结果。所以,你的这种方法有一定局限性。

基于你的思路,不妨做一下修正。首先,按你的思路计算开平方,这样原则上应该得到一个小数部分为0或者至少也是极其接近于小数部分为0的数。此时,对这个数四舍五入取整,然后再求其平方,看它是不是等于你的完全平方数即可。程序如下:

In [37]: import math
In [38]: for i in range(10000):
   ....:     if round(math.sqrt(i+100))**2 == (i+100):
   ....:         if round(math.sqrt(i+268))**2 == (i+268):
   ....:             print i
   ....:             
21
261
1581
百度网友9c9cbbb
2014-11-08 · TA获得超过301个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:323万
展开全部
sqrt=math.sqrt
for i in range(10000): 
        i1=int(sqrt(i+100))
        if i1**2==(i+100):
                i2=int(sqrt(i+268))
                if i2**2==(i+268):
                        print(i, i1, i2)

 另外一位用round的才是更合理的。。。。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tolerious
2014-11-08 · 超过16用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:17.4万
展开全部
这个数能算出来的么?我咋没算出来啊?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式