我如何将 Python 代码翻译成 Julia 代码

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)

但我收到一条错误消息:语法:参数列表中缺少逗号或 )。

你能告诉我为什么吗?我很感激任何帮助

DNF*_*DNF 6

这一行不是正确的 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