亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中filter函數調用isinstance報錯

python中filter函數調用isinstance報錯

Concha 2016-08-14 07:32:08
請利用filter()過濾出1~100中平方根是整數的數,即結果應該是:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]代碼如下,為什么返回空值呢?import mathdef is_sqr(x):? ? return isinstance(math.sqrt(x),int)print filter(is_sqr, range(1, 100))
查看完整描述

2 回答

?
Nelson_Zhao

TA貢獻21條經驗 獲得超4個贊

因為math.sqrt()默認返回float類型。

http://img1.sycdn.imooc.com//57afe6d00001acc006300302.jpg

所以無論該整數是否可以被開平方根,結果都是float類型,自然為空值。

在Python中雖然float和int類型不同,但4.0==4的結果是True,也就是說值是相同的。

補充一點:range(m,n)函數生成的列表中包括m,不包括n,所以應該是range(1,101),否則輸出結果不會包含100

修改代碼:

import?math
def?is_sqr(x):
????return?math.sqrt(x)?==?int(math.sqrt(x))
print?filter(is_sqr,range(1,101))


查看完整回答
1 反對 回復 2016-08-14
?
觀自在

TA貢獻14條經驗 獲得超2個贊

- -math.sqrt 的返回值應該是float的 ?你用int應該一直沒有吧 ? 可以用int(math.sqrt(x)) ?or ?isinstance(math.sqrt(x),float)

查看完整回答
反對 回復 2016-08-17
  • 2 回答
  • 0 關注
  • 2009 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號