Python求sin(n)²/n序列代码报错Invalid NaN comparison如何解决?
报错原因及修复方案
报错根因
- 循环
for n in range(9999)的首个遍历值为0,执行XN=(sin(n)**2)/n时触发除以0运算,得到的结果为NaN(非数值),NaN无法和常规数值做大小比较,因此抛出对应错误。 - 额外注意:你的代码没有导入
sin函数依赖的math模块,即便解决NaN问题也会触发未定义函数报错。
修复代码
你可以直接修改循环的起始值为1,同时补上math模块导入即可:
import math Listttt=[0] for n in range(1, 9999): XN=(math.sin(n)**2)/n if XN >= 1.e-9: Listttt.append(XN) KK=len(Listttt)-1 print(KK)
如果你有必须遍历n=0的场景,也可以增加0值判断跳过除法运算:
import math Listttt=[0] for n in range(9999): if n == 0: continue XN=(math.sin(n)**2)/n if XN >= 1.e-9: Listttt.append(XN) KK=len(Listttt)-1 print(KK)
内容的提问来源于stack exchange,提问作者RWleaner
相关产品推荐
相关产品推荐

