首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python 3.8下mpmath有问题,但在2.7下可以

在Python 3.8下mpmath有问题,但在2.7下可以
EN

Stack Overflow用户
提问于 2019-12-25 19:31:22
回答 1查看 59关注 0票数 2

下面的小程序在使用Python 3.8时会失败,但在2.7下是可以的:

代码语言:javascript
复制
from mpmath import mpf, nsum

def z(n):
    x = [mpf(1) for k in range(1,n)]
    return 99

print (nsum(z, [2,2]))

代码看起来很奇怪,因为它是从一个相当大的程序中裁减出来的。我不能再减价了。使用https://www.python.org/shell/上的交互式外壳可以很容易地确认这一点

错误报告为:

代码语言:javascript
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.8/site-packages/mpmath/calculus/extrapolation.py", line 1698, in nsum
    return +g()
  File "/usr/lib/python3.8/site-packages/mpmath/calculus/extrapolation.py", line 1745, in <lambda>
    return False, lambda: f(*([0]*len(intervals)))
  File "/usr/lib/python3.8/site-packages/mpmath/calculus/extrapolation.py", line 1777, in g
    s += f(*args)
  File "<stdin>", line 2, in z
TypeError: 'mpf' object cannot be interpreted as an integer

我是不是漏掉了什么明显的东西?

EN

回答 1

Stack Overflow用户

发布于 2019-12-25 23:49:19

nsumn作为mpf传递给z,但range期望:

...int或实现__index__特殊方法的任何对象。

因此,您可以将n显式转换为int,例如:

代码语言:javascript
复制
x = [mpf(1) for k in range(1, int(n))]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59477997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档