将带有条件的for循环从c转换为python

将带有条件的for循环从c转换为python,python,c,loops,if-statement,while-loop,Python,C,Loops,If Statement,While Loop,变量: n = 378282246310005 m = n i = 1 sum1 = 0 sum2 = 0 sum11 = 0 我想将以下c代码转换为python代码: for (m = n, i = 1; m != 0; m = m / 10, i++) { r = m % 10; if (i % 2 != 0) { sum1 += r; } else {

变量:

n = 378282246310005
m = n
i = 1
sum1 = 0
sum2 = 0
sum11 = 0
我想将以下c代码转换为python代码:

for (m = n, i = 1; m != 0; m = m / 10, i++)
    {
        r = m % 10;
        if (i % 2 != 0)
        {
            sum1 += r;
        }
        else
        {
            sum2 += r * 2;
        }
        while (sum2 > 0)
        {
            z = sum2 % 10;
            sum11 = sum11 + z;
            sum2 = sum2 / 10;
        }
    }
我为python编写了以下代码,但它不起作用:

for m in range(m!=0):

    r = m % 10

    if (i % 2 != 0):
        sum1 += r

    else:
        sum2 += r * 2

    while sum2 > 0:
        z = sum2 % 10
        sum11 = sum11 + z
        sum2 = sum2 / 10

    m = m / 10
    i = i + 1

我必须在哪里更改逻辑或代码才能使其工作?

变量初始化:

n = 378282246310005
m = n
i = 1
sum1 = 0
sum2 = 0
sum11 = 0
您可以使用while循环:

while(m!=0):
        r = m % 10
        if (i % 2) != 0 :
            sum1 += r
        else:
            sum2 += r * 2
        while (sum2 > 0):
            z = sum2 % 10
            sum11 = sum11 + z
            sum2 = sum2 // 10
        m = m // 10
        i+=1
EDIT1:是的,你是对的,范围(m!=0)是正确的。我不知道,你刚刚教了我一个新东西谢谢


我添加了双破折号(m=m//10)

变量初始化:

n = 378282246310005
m = n
i = 1
sum1 = 0
sum2 = 0
sum11 = 0
您可以使用while循环:

while(m!=0):
        r = m % 10
        if (i % 2) != 0 :
            sum1 += r
        else:
            sum2 += r * 2
        while (sum2 > 0):
            z = sum2 % 10
            sum11 = sum11 + z
            sum2 = sum2 // 10
        m = m // 10
        i+=1
EDIT1:是的,你是对的,范围(m!=0)是正确的。我不知道,你刚刚教了我一个新东西谢谢


我添加了双破折号(m=m//10)

范围内的m(m!=0):
不是
(…;m!=0;…)
?将范围内的m(m!=0)替换为
m=ni=1,而(m!=0):
(三行代码)
sum2/10
将在Python 3中生成浮点结果。如果您想要整数除法,请使用
sum2//10
m范围内(m!=0):
不是
(…;m!=0;…)
?将
范围内(m!=0)
的m替换为
m=ni=1,而(m!=0):
(三行代码)
sum2/10
将在Python 3中生成浮点结果。如果您想要整数除法,请使用
sum2//10
。如果m是整数,您可能需要使用//而不是/否则终止条件可能永远不会达到范围(m!=0)内的
m
完全有效,但不会满足OP的要求代码中不需要括号字符,它们也不被认为是好的样式如果m是一个整数,您可能希望使用//而不是/否则终止条件可能永远不会达到
m范围(m!=0)
完全有效,但不会达到OP想要的效果代码中不需要括号字符,它们也不被认为是好的样式