繁体   English   中英

C++ 和 python 中的代码相同,但输出不同

[英]same codes in C++ and python but different outputs

我已经将我的 C++ 代码转换为 python 但是虽然我分别为函数有相同的输出T(l,m,v,s,r) C++ 中的T(l,m,v,s,r) = pyhton 中的 T(l,m,v,s,r) 或t[l][m][w][i][j] in C++= t[l][m][w][i][j] in python )但在代码的下面部分,输出不是相同的( C++ 中的 T( T(l,m,v,s,r) =! python 中T(l,m,v,s,r)t[l][m][w][i][j]在 C++=! t[l][m][w][i][j]在 python ))。

void P(){
    int i,j,l,m;
    for(i=0;i<5;i++){
        s=smin+i*deltas;
        r=rmin;
        for(j=0;j<634;j++){
            r*=deltar;
            for(l=0;l<=5;l++){ 
                for(m=l;m<=5;m++){
                    t[l][m][v][i][j]=T(l,m,v,s,r);
                    t[m][l][v][i][j]=t[l][m][v][i][j];
                    t[l][m][w][i][j]=T(l,m,w,s,r);
                    t[m][l][w][i][j]=t[l][m][w][i][j];
                    if(t[l][m][v][i][j]<1e-20 && t[m][l][w][i][j]<1e-20)break;
                }
            }
        }

    }
}

和 python:

def P():
    for i in range(0,5):
        s=smin+i*deltas
        r=rmin
        for j in range(0,634):
            r*=deltar
            for l in range(0,6):
                for m in range(l,6):    

                    t[l][m][v][i][j]=T(l,m,v,s,r)
                    t[m][l][v][i][j]=t[l][m][v][i][j]
                    t[l][m][w][i][j]=T(l,m,w,s,r)
                    t[m][l][w][i][j]=t[l][m][w][i][j]

                    if t[l][m][v][i][j]<1e-20 and t[m][l][w][i][j]<1e-20:
                        break

如果有人能提供帮助,我将不胜感激。

最里面的循环是不同的

C++:

            for(m=l;m<=5;m++)

m将具有值 [1,2,3,4,5]

Python:

            for m in range(l,5) 

m将具有值 [1,2,3,4]。 5 不包括在内 您必须使用range(1,6)来表示值 [1,2,3,4,5]

function 范围内的 python 等效于 < 循环。 for(i=0;i<5;i++) == for i in range(0,5)

但是 for(l=0;l<=5;l++),= for l in range(0,5) 所以你可能想把它改成 for l in range(0,6)

第 3 和第 4 个 for 循环在 C++ 中具有 = to,因此将 python 中的一个更改为第 3 和第 4 个范围(0,6)

def P():
for i in range(0,6):
    s=smin+i*deltas
    r=rmin
    for j in range(0,635):
        r*=deltar
        for l in range(0,6):
            for m in range(l,6):    

                t[l][m][v][i][j]=T(l,m,v,s,r)
                t[m][l][v][i][j]=t[l][m][v][i][j]
                t[l][m][w][i][j]=T(l,m,w,s,r)
                t[m][l][w][i][j]=t[l][m][w][i][j]

                if t[l][m][v][i][j]<1e-20 and t[m][l][w][i][j]<1e-20:
                    break

试试这个代码问题在 range(0,5) 表示 0,1,2,3,4。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM