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.
3 Réponses :
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.
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)
Pour compléter la réponse de @ kcrisman et l'astuce " int (0), int (1)
" ...
Deux autres options si l'on veut s'en tenir au noyau Sage sont
preparser (False)
, r
(pour "raw") aux entiers, par exemple datetime.timedelta (0r, 1r)
. Voir aussi des questions et réponses similaires concernant le préparage par Sage des nombres flottants et entiers:
Enfin, notez que le code peut être chargé dans Sage à partir de fichiers externes en utilisant soit:
load('/path/to/filename.py')
load('/path/to/filename.sage')
où les fichiers .sage
recevront "Sage-preparsed" alors que les fichiers .py
ne le seront pas.
Cela donne une troisième option pour contourner le préparseur: charger le code à partir d'un fichier .py
.
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 ceCoCalc.com
et / ou comment il impliquesage.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 suitesecondes + = 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.