B.T*_*B.T 1 python julia ijulia-notebook
我是 Julia 的新手,希望在 Julia 中翻译此 Python 代码。
def calcMarkov(preseq,propability,ordnung):
betrachtungen = 0
for pos in range(1,len(seq)):
current = seq[pos]
fromNode = seq[pos-ordnung:pos]
if (fromNode == preseq and not current == "X"):
propability[current] = propability[current] + 1
betrachtungen += 1
for key, value in propability.items():
if(not betrachtungen == 0):
propability[key] = propability[key]/betrachtungen
print ("Anzahl der Betrachtungen:",betrachtungen)
return propability
Run Code Online (Sandbox Code Playgroud)
我试试这个:
function calcMarkov(preseq, propability, ordnung)
betrachtungen = 0
for pos in 1: length(seq)
current = seq[pos]
fromNode = seq[pos-ordnung:pos]
if fromNode == preseq != current == "X"
propability[current] = propability[current] + 1
betrachtungen += 1
end
for (key,value) in propability
if(not betrachtungen == 0)
propability[key] = propability[key]/betrachtungen
end
print("Anzahl der Betrachtungen:",betrachtungen)
return propability
end
end
end
Run Code Online (Sandbox Code Playgroud)
但我收到一条错误消息:语法:参数列表中缺少逗号或 )。
你能告诉我为什么吗?我很感激任何帮助
这一行不是正确的 Julia 语法:
if(not betrachtungen == 0)
Run Code Online (Sandbox Code Playgroud)
你应该写:
if betrachtungen != 0
Run Code Online (Sandbox Code Playgroud)
或者
if !iszero(betrachtungen)
Run Code Online (Sandbox Code Playgroud)
即使您修复了还有其他一些问题:
if (fromNode == preseq and not current == "X"):
Run Code Online (Sandbox Code Playgroud)
不一样
if fromNode == preseq != current == "X"
Run Code Online (Sandbox Code Playgroud)
相反,你应该写
if fromNode == preseq && current != "X"
Run Code Online (Sandbox Code Playgroud)
此外:
for pos in range(1,len(seq)):
Run Code Online (Sandbox Code Playgroud)
len(seq)-1在 Python 中只从 1 到迭代,因为范围最后是不包含的,而
for pos in 1: length(seq)
Run Code Online (Sandbox Code Playgroud)
实际上是从 1 到length(seq). 也许你打算用你的 python 代码来做这个?
for pos in range(len(seq)):
Run Code Online (Sandbox Code Playgroud)
这从 0 到len(seq)-1.
还有一个额外的说明;如果您可以包含一个最小的可重现示例,则更容易为您提供帮助:https : //stackoverflow.com/help/minimal-reproducible-example