1
votes

datetime.timedelta (x, y) renvoie TypeError sur CoCalc.com mais fonctionne ailleurs - Pourquoi?

Mon code fonctionne sur onlinegdb.com mais pas sur CoCalc.com.

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

Retours

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

Ce n'est pas clair moi s'il s'agit d'une fonctionnalité ou d'un bug.


4 commentaires

Il semble que dans votre environnement, 1 est autre chose qu'un entier Python normal. Vous devrez expliquer plus en détail ce qu'est ce CoCalc.com et / ou comment il implique sage.rings , et quoi, si un code a déjà été exécuté. Une autre façon de le dire, ce n'est pas un exemple reproductible minimal .


Aucun code autre que celui répertorié n'a été exécuté, sauf dans l'environnement que j'utilise. Merci pour votre réponse. C'est un notebook Jupyter hébergé en ligne et ils vous permettent d'utiliser leur serveur pour faire des calculs. Je pensais que le problème était peut-être avec Jupyter ou Sage et peut-être que quelqu'un le saurait. En fait, je ne peux tout simplement pas appeler cette fonction en Python, je n'appelle personnellement aucun autre code, donc je suppose que le problème est côté serveur.


timedelta fait tout de suite secondes + = minutes / 60 + ... .


CoCalc (pour "Calcul collaboratif dans le cloud") est une plate-forme en ligne de calcul et de collaboration. Chaque projet CoCalc est comme un système de fichiers que vous créez, que vous pouvez utiliser avec un Ubuntu complet fonctionnant dans le cloud avec des tonnes de logiciels gratuits préinstallés. L'utilisation de base est gratuite et des mises à niveau payantes peuvent être achetées pour plus de processeurs, de mémoire, d'espace disque ... Une chose que CoCalc offre en particulier est la possibilité d'utiliser les notebooks Jupyter en collaboration, avec un large choix de noyaux Jupyter préinstallés. On peut également utiliser LaTeX, etc.


3 Réponses :


2
votes

Si quelqu'un d'autre a un problème comme celui-ci - Il s'avère que j'utilisais le noyau mathématique de Sage et non le noyau mathématique Python. Ce site Web propose quelque chose comme 15 noyaux différents.


0 commentaires

2
votes

L'auto-réponse de Jacob est correcte; voici quelques détails supplémentaires.

Dans SageMath, il y a quelque chose appelé un preparser qui interprète les choses de sorte que les entiers soient des entiers mathématiques, pas des entiers Python. Donc par exemple :

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


0 commentaires