請利用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類型。
所以無論該整數是否可以被開平方根,結果都是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))

觀自在
TA貢獻14條經驗 獲得超2個贊
- -math.sqrt 的返回值應該是float的 ?你用int應該一直沒有吧 ? 可以用int(math.sqrt(x)) ?or ?isinstance(math.sqrt(x),float)
添加回答
舉報
0/150
提交
取消