Python timedelta(x,y)在CoCalc.com上返回TypeError,但在其他地方可以工作——为什么?

Python timedelta(x,y)在CoCalc.com上返回TypeError,但在其他地方可以工作——为什么?,python,jupyter-notebook,sage,Python,Jupyter Notebook,Sage,我的代码可以在onlinegdb.com上运行,但不能在CoCalc.com上运行 import datetime slowduration = datetime.timedelta(0,1) print(slowduration) 返回 TypeError: unsupported type for timedelta seconds component: sage.rings.integer.Integer 我不清楚这是一个特性还是一个bug。如果其他人有这样的问题,结果证明我使用的是S

我的代码可以在onlinegdb.com上运行,但不能在CoCalc.com上运行

import datetime
slowduration = datetime.timedelta(0,1)
print(slowduration)
返回

TypeError: unsupported type for timedelta seconds component: sage.rings.integer.Integer

我不清楚这是一个特性还是一个bug。

如果其他人有这样的问题,结果证明我使用的是Sage数学内核,而不是Python数学内核。这个网站提供了大约15种不同的内核。

如果其他人有这样的问题,结果证明我使用的是Sage数学内核,而不是Python数学内核。这个网站提供了大约15种不同的内核。

雅各布的自我回答是正确的;这里有一些更多的细节

在SageMath中,有一种称为preparser的东西,它解释事物,使整数是数学整数,而不是Python整数。因此:

还有很多事情要做——试着做一些真正有趣的准备('f(x)=x^2')。但是是的,这是一个特点

不过,要解决Sage内核中的问题,您可以执行以下操作:


得到
0:00:01
作为你的答案。

雅各布的自我回答是正确的;这里有一些更多的细节

在SageMath中,有一种称为preparser的东西,它解释事物,使整数是数学整数,而不是Python整数。因此:

还有很多事情要做——试着做一些真正有趣的准备('f(x)=x^2')。但是是的,这是一个特点

不过,要解决Sage内核中的问题,您可以执行以下操作:


获取
0:00:01
作为您的答案。

补充@kcrisman的答案和“
int(0),int(1)
”技巧

如果想要坚持Sage内核,还有两个选择

  • (1) 使用
    preparser(False)
    禁用preparser
  • (2) 将
    r
    (用于“原始”)附加到整数,例如
    datetime.timedelta(0r,1r)
另请参见关于Sage准备浮点数和整数的类似问题和答案:

  • (a)
  • (b)
  • (c)
最后,请注意,可以使用以下任一方法将代码从外部文件加载到Sage中:

  • load('/path/to/filename.py')
  • load('/path/to/filename.sage')
其中,
.sage
文件将获得“sage preparsed”,而
.py
文件将不会


这提供了第三个绕过preparser的选项:从
.py
文件加载代码。

以补充@kcrisman的答案和“
int(0),int(1)
”技巧

如果想要坚持Sage内核,还有两个选择

  • (1) 使用
    preparser(False)
    禁用preparser
  • (2) 将
    r
    (用于“原始”)附加到整数,例如
    datetime.timedelta(0r,1r)
另请参见关于Sage准备浮点数和整数的类似问题和答案:

  • (a)
  • (b)
  • (c)
最后,请注意,可以使用以下任一方法将代码从外部文件加载到Sage中:

  • load('/path/to/filename.py')
  • load('/path/to/filename.sage')
其中,
.sage
文件将获得“sage preparsed”,而
.py
文件将不会


这提供了第三个绕过preparser的选项:从
.py
文件加载代码。

在您的环境中,
1
似乎不是普通的Python整数。您需要进一步解释这个
CoCalc.com
是什么和/或它如何涉及
sage.rings
,以及如果已经运行了任何代码,会发生什么。换句话说,这不是一个。除了列出的代码之外,除了在我使用的环境中,没有其他代码运行过。谢谢你的回答。这是一个在线托管的Jupyter笔记本,它们允许您使用服务器进行计算。我想也许问题出在Jupyter或Sage身上,也许有人会知道。实际上,我不能在Python中调用这一个函数,我个人并没有调用任何其他代码,所以我想问题出在服务器端。
timedelta
正在做,马上,
seconds+=minutes/60+…
。(用于“云中的协作计算”)是一个用于计算和协作的在线平台。每个CoCalc项目就像你创建的一个文件系统,你可以在预装了大量免费软件的云中运行完整的Ubuntu。基本使用是免费的,可以购买更多处理器、内存、磁盘空间的付费升级。。。CoCalc特别提供的一件事是能够协作使用Jupyter笔记本电脑,并预装多种Jupyter内核。还可以使用LaTeX等。在您的环境中,
1
似乎不是普通的Python整数。您需要进一步解释这个
CoCalc.com
是什么和/或它如何涉及
sage.rings
,以及如果已经运行了任何代码,会发生什么。换句话说,这不是一个。除了列出的代码之外,除了在我使用的环境中,没有其他代码运行过。谢谢你的回答。这是一个在线托管的Jupyter笔记本,它们允许您使用服务器进行计算。我想也许问题出在Jupyter或Sage身上,也许有人会知道。实际上,我不能在Python中调用这一个函数,我个人并没有调用任何其他代码,所以我想问题出在服务器端。
timedelta
正在做,马上,
seconds+=minutes/60+…
。(用于“云中的协作计算”)是一个用于计算和协作的在线平台。每个CoCalc项目就像你创建的一个文件系统,你可以在预装了大量免费软件的云中运行完整的Ubuntu。基本使用是免费的,可以购买更多处理器、内存、磁盘空间的付费升级。。。CoCalc特别提供的一件事是能够协作使用Jupyter笔记本电脑,并预装多种Jupyter内核。你也可以晚用
sage: preparse('1+1')
'Integer(1)+Integer(1)'
import datetime
slowduration = datetime.timedelta(int(0),int(1))
print(slowduration)