[英]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
如果有人能提供帮助,我将不胜感激。
最里面的循环是不同的:
for(m=l;m<=5;m++)
m
将具有值 [1,2,3,4,5]
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.