找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3605|回复: 8

[求助] 为什么我用isinstance判断没办法输出结果?

2

主题

6

帖子

6

积分

贫民

积分
6
zirkelho 发表于 2017-2-21 14:41:30 | 显示全部楼层 |阅读模式
我是在做一个python的题目,题目如下:
简述:一个整数,它加上100和加上268后都是一个完全平方数
提问:请问该数是多少?
Python解题思路分析:在10000以内判断,将该数加上100后再开方,加上268后再开方,如果开方后的结果满足如下条件,即是结果。

我的源码如下:
for x in range(10000):
        if isinstance((x + 100) ** (1/2), int) and isinstance((x + 268) ** (1/2), int):
                print (x)

为什么没有输出print的结果?

回复

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2017-2-21 15:42:27 | 显示全部楼层
int 改成 float
python3.4.4, win10
回复 支持 反对

使用道具 举报

2

主题

6

帖子

6

积分

贫民

积分
6
zirkelho  楼主| 发表于 2017-2-21 17:57:27 | 显示全部楼层

改成float之后就不是我想要整除的结果了,如果是int的话就可以得到整数,也说明是完全平方数,这样才能得出结果吧?
回复 支持 反对

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2017-2-21 18:15:12 | 显示全部楼层
这样:
  1. for x in range(10000):
  2.         if (x + 100) ** (1/2) == round((x + 100) ** (1/2)) and \
  3.            (x + 268) ** (1/2) == round((x + 268) ** (1/2)):
  4.                 print (x)
复制代码
python3.4.4, win10
回复 支持 反对

使用道具 举报

2

主题

6

帖子

6

积分

贫民

积分
6
zirkelho  楼主| 发表于 2017-2-21 23:08:02 | 显示全部楼层
if isinstance((x + 100) ** (1/2), int) and isinstance((x + 268) ** (1/2), int):
你说的方法比我的好,但是我不能理解我上面这个语句的错误点在哪里。。
好纠结
回复 支持 反对

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2017-2-22 10:16:30 | 显示全部楼层
(x + 100) ** (1/2)该运算得到的结果是浮点型的
python3.4.4, win10
回复 支持 反对

使用道具 举报

2

主题

6

帖子

6

积分

贫民

积分
6
zirkelho  楼主| 发表于 2017-2-22 11:33:51 | 显示全部楼层
whydo1 发表于 2017-2-22 10:16
(x + 100) ** (1/2)该运算得到的结果是浮点型的

当(x + 100) ** (1/2能开方成整数的时候不就是int类型吗?
回复 支持 反对

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2017-2-22 11:57:08 | 显示全部楼层
得到的整数是以浮点型来表示的
python3.4.4, win10
回复 支持 反对

使用道具 举报

2

主题

6

帖子

6

积分

贫民

积分
6
zirkelho  楼主| 发表于 2017-2-23 15:10:37 | 显示全部楼层
原来是这样,谢谢你。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表