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
任何超过 85000 个术语的地方我都会遇到段错误并且 python 退出。我怎样才能避免这种情况?为什么会崩溃?难道不能请使用更多内存之类的东西吗?
最佳答案
您似乎在 eval
中发现了一个错误,它无法处理非常长的表达式:
>>> eval("1.0*"*10000+"1.0")
1.0
>>> eval("1.0*"*100000+"1.0")
# segfault here
尽管如此,我还是慎重地使用了“疯狂长”这个短语。不要那样做,边走边计算。在这种情况下没有理由使用 eval
。
关于python - pi计算中的段错误(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5177432/