pi计算中的分段错误(python)

tek*_*agi 3 python for-loop pi series segmentation-fault

def pi(times):
    seq = []
    counter = 0
    for x in range(times):
        counter += 2
        seq.append("((%f**2)/(%f*%f))*"%(float(counter), float(counter-1), float(counter+1)))
    seq.append("1.0")
    seq = "".join(seq)
    seq = eval(seq)
    return seq*2
Run Code Online (Sandbox Code Playgroud)

在85000个术语的任何地方,我都会遇到分段错误并退出python.我怎么能避免这个?为什么会崩溃?不能只是使用更多的内存或什么?

nco*_*lan 5

您似乎发现了一个eval无法处理疯狂长表达式的错误:

>>> eval("1.0*"*10000+"1.0")
1.0
>>> eval("1.0*"*100000+"1.0")
# segfault here
Run Code Online (Sandbox Code Playgroud)

我虽然建议使用"疯狂长"这句话.不要这样做,随你计算件数.eval在这种情况下没有理由使用.

  • 段错结果是一个错误.简单地声明一个长期不合理并且拒绝接受它的表达式就没问题,但在这种情况下应该引发异常. (5认同)