将C++for循环转换为python
我在将 C++ 转换为 python 时遇到了一些麻烦。我遇到的问题是 for 循环for (Nbound = 1; Nbound < (Nobs + 1) && B < Beta; Nbound++)和for (Ndm = 0;(Ndm < (i + 1) && P3 > (0)) || PP == 0; Ndm++). 我不确定这将如何在 python 中工作,我认为 python 不允许在 for 循环中使用布尔语句,所以我认为我必须使用 IF 语句在内部调用它,但我不完全确定。谢谢你的帮助!
另外,我注意到这段代码中有很多空变量,例如,float PP有没有办法在 python 中做到这一点,或者我只是给它赋值 0 然后稍后再更改它?
float Pf = 0; //The complement of Beta
float B = 0; //Beta
float P3;
float PP;
float Nbound = 1;
for (Nbound = 1; Nbound < (Nobs + 1) && B < Beta; Nbound++) {
int Ndm = 0;
int Nbgd = Nobs; //Setting Ndm=Nobs
Pf = 0; //Zeroing the placeholder for the sum
float exp; //A variable to store the exponential
for (int i = 0; i < (Nobs + 1); i++) //Summing over Nbgd+Ndm<NObs
{
P3 = 1;
PP = 0;
if (P1[Nbgd] > 0) {
for (Ndm = 0;(Ndm < (i + 1) && P3 > (0)) || PP == 0; Ndm++) {
//P3 = dist(Ndm, Nbound);
Pf = Pf + (P1[Nbgd] * P3); //Summing over the probability
PP = PP + P3;
}
}
}
}
}
回答
ForPython 中的循环用于对对象进行迭代。如果你想要一个具有特定退出条件的循环,那么你应该使用while循环。
for C中的循环可以描述为:
for {initialization_statement; condition_expression; update_statement)
{
body_statement_1;
body_statement_2;
...
body_statement_n;
}
Python中相应的循环是:
initialization_statement
while condition_expression:
body_statement_1
body_statement_2
...
body_statement_n
update_statement