函数直接在 Sage 工作表中工作,但在库中不工作
Functions work when in a Sage worksheet directly but not when in a library
我正在学习 class,代数密码学简介。我们对一切都使用 Sage 和 CoCalc。这 class 是我第一次听说。导师提供了很多方便的功能供我们使用。我不喜欢将它们重复复制到 CoCalc 中的新 Sage 工作表中。所以,我把它们放在了图书馆里。
花了一些时间,但我终于知道要使用它们,我必须在 Sage 中这样做:
load_attach_path('/path/to/the/directory')
%attach elliptic_curve_common.sage
现在,有一个她写给我们使用的函数叫做HPSonEC
。这个函数是关于使用 Hellman-Pohlig-Silver 漏洞利用来破解椭圆曲线上的加密。令人恼火的是,当我像上面那样使用该功能时,该功能将无法正常工作,并且出现此错误:
Error in lines 5-5
Traceback (most recent call last):
File "/cocalc/lib/python3.8/site-packages/smc_sagews/sage_server.py", line 1230, in execute
exec(
File "", line 1, in <module>
File "<string>", line 298, in HPSonEC
File "<string>", line 263, in listptorder
File "<string>", line 151, in ECTimes
File "sage/rings/rational.pyx", line 2401, in sage.rings.rational.Rational.__mul__ (build/cythonized/sage/rings/rational.c:20911)
return coercion_model.bin_op(left, right, operator.mul)
File "sage/structure/coerce.pyx", line 1248, in sage.structure.coerce.CoercionModel.bin_op (build/cythonized/sage/structure/coerce.c:11304)
raise bin_op_exception(op, x, y)
TypeError: unsupported operand parent(s) for *: 'Rational Field' and 'Abelian group of points on Elliptic Curve defined by y^2 = x^3 + 389787687398479 over Finite Field of size 324638246338947256483756487461'
但是,如果我采用该函数以及它所依赖的其他函数,并将它们复制到我的 Sage 工作表中,它们就可以正常工作。从字面上看,代码完全没有区别。可能是什么问题?
从工作表或 .sage
文件中读取代码时,
应用了 Sage 预解析器。
从 .py
文件中读取代码时,它不是。
查看很多问题:
我正在学习 class,代数密码学简介。我们对一切都使用 Sage 和 CoCalc。这 class 是我第一次听说。导师提供了很多方便的功能供我们使用。我不喜欢将它们重复复制到 CoCalc 中的新 Sage 工作表中。所以,我把它们放在了图书馆里。
花了一些时间,但我终于知道要使用它们,我必须在 Sage 中这样做:
load_attach_path('/path/to/the/directory')
%attach elliptic_curve_common.sage
现在,有一个她写给我们使用的函数叫做HPSonEC
。这个函数是关于使用 Hellman-Pohlig-Silver 漏洞利用来破解椭圆曲线上的加密。令人恼火的是,当我像上面那样使用该功能时,该功能将无法正常工作,并且出现此错误:
Error in lines 5-5
Traceback (most recent call last):
File "/cocalc/lib/python3.8/site-packages/smc_sagews/sage_server.py", line 1230, in execute
exec(
File "", line 1, in <module>
File "<string>", line 298, in HPSonEC
File "<string>", line 263, in listptorder
File "<string>", line 151, in ECTimes
File "sage/rings/rational.pyx", line 2401, in sage.rings.rational.Rational.__mul__ (build/cythonized/sage/rings/rational.c:20911)
return coercion_model.bin_op(left, right, operator.mul)
File "sage/structure/coerce.pyx", line 1248, in sage.structure.coerce.CoercionModel.bin_op (build/cythonized/sage/structure/coerce.c:11304)
raise bin_op_exception(op, x, y)
TypeError: unsupported operand parent(s) for *: 'Rational Field' and 'Abelian group of points on Elliptic Curve defined by y^2 = x^3 + 389787687398479 over Finite Field of size 324638246338947256483756487461'
但是,如果我采用该函数以及它所依赖的其他函数,并将它们复制到我的 Sage 工作表中,它们就可以正常工作。从字面上看,代码完全没有区别。可能是什么问题?
从工作表或 .sage
文件中读取代码时,
应用了 Sage 预解析器。
从 .py
文件中读取代码时,它不是。
查看很多问题: