Wolfram mathematica 我可以在Mathematica函数中返回列表吗?
在我的代码中,我试图从函数中返回数字列表,但它只给我nullWolfram mathematica 我可以在Mathematica函数中返回列表吗?,wolfram-mathematica,Wolfram Mathematica,在我的代码中,我试图从函数中返回数字列表,但它只给我null sifra[zprava_, klic_] := Module[ {c, n, e, m, i, z, pocCyklu, slovo}, pocCyklu = Ceiling[Divide[StringLength[zprava], 5]]; c = Array[{}, pocCyklu]; z = Partition[Characters[zprava], 5, 5, 1, {}]; For[i = 1, i
sifra[zprava_, klic_] := Module[
{c, n, e, m, i, z, pocCyklu, slovo},
pocCyklu = Ceiling[Divide[StringLength[zprava], 5]];
c = Array[{}, pocCyklu];
z = Partition[Characters[zprava], 5, 5, 1, {}];
For[i = 1, i < pocCyklu + 1, i++,
slovo = StringJoin @ z[[i]];
m = StringToInteger[slovo];
n = klic[[1]];
e = klic[[2]];
c[[i]] = PowerMod[m, e, n];
]
Return[c]
];
sif = sifra[m, verejny]
sifra[zprava,klic]:=模块[
{c,n,e,m,i,z,pocCyklu,slovo},
pocCyklu=天花板[除以[StringLength[zprava],5];
c=数组[{},pocCyklu];
z=分区[字符[zprava],5,5,1,{}];
对于[i=1,i
循环完成后,c
中应有2个数字
Print[c]
工作正常它打印包含2个元素的列表,但sif
为nullReturn[c]
给了我:
Null返回[{2858940092682187462564206431141504822,2219822858062194181357669868096}]
您可以这样编写函数:
sifra[zprava_, klic_] := Module[{c, n, e, m, i, z, pocCyklu, slovo},
pocCyklu = Ceiling[Divide[StringLength[zprava], 5]];
c = ConstantArray[{}, pocCyklu];
z = Partition[Characters[zprava], 5, 5, 1, {}];
For[i = 1, i < pocCyklu + 1, i++,
slovo = StringJoin@z[[i]];
m = ToExpression[slovo];
{n, e} = klic;
c[[i]] = PowerMod[m, e, n]];
c]
sifra[zprava_, {n_, e_}] := Module[{z},
z = Partition[Characters[zprava], 5, 5, 1, {}];
Map[PowerMod[ToExpression[StringJoin[#]], e, n] &, z]]
{20,97,41,9,4,113,36}
您也可以这样编写函数:
sifra[zprava_, klic_] := Module[{c, n, e, m, i, z, pocCyklu, slovo},
pocCyklu = Ceiling[Divide[StringLength[zprava], 5]];
c = ConstantArray[{}, pocCyklu];
z = Partition[Characters[zprava], 5, 5, 1, {}];
For[i = 1, i < pocCyklu + 1, i++,
slovo = StringJoin@z[[i]];
m = ToExpression[slovo];
{n, e} = klic;
c[[i]] = PowerMod[m, e, n]];
c]
sifra[zprava_, {n_, e_}] := Module[{z},
z = Partition[Characters[zprava], 5, 5, 1, {}];
Map[PowerMod[ToExpression[StringJoin[#]], e, n] &, z]]
Mathematica需要一种不同于典型过程语言的方法。先看一些。1.您不需要
Return
从模块
返回内容,请查看文档示例2。A在
3的之后缺少code>。不需要代码>后:=
定义4。不要预先初始化数组并使用For
填充它。只需使用表格
。初学者提示:作为初学者,千万不要使用,因为99%的时候这不是最好的解决方案。如果您寻找其他解决方案,它将真正改善您的Mma代码。这里要遵循的最奇怪的事情,尤其是对于传统程序员来说——如果您将返回
“函数”乘以任何具有抑制“返回”功能效果的内容。缺少分号意味着您将For
循环(Null
)的结果乘以返回值
,因此返回的结果是奇数,因为它是模块中的最后一条语句;在修复了它(菜鸟错误)之后,谢谢你的其他建议,我一定会看看它们。