我如何在Python中编写这个C for循环?-最好的解决方案是什么?


for (i = 0; number > 0; i++)
{
if (i % 2 == 0)
{
total = total + number % 10;
number /= 10;
}
}

我需要用python写这个。我试着把它们分成两个回路,whilefor

while number > 0:
for i in range(infinite):

但是我不知道如何在python中运行无限for循环。

我认为这可能是解决方案:有没有更好的方法?

i = 0
while number > 0:
i += 1
if i % 2 == 0։
total = total + number % 10
number /= 10

这是整个代码

long number = get_long("Number: ");
int total = 0;
int first2 = 0;
int i = 0;
for (i = 0; number > 0; i++)
{
if (i % 2 == 0)
{
total = total + number % 10;
number /= 10;
}
else
{
if (number % 10 < 5)
{
total = total + 2 * (number % 10);
number /= 10;
}
else
{
total = total + 1 + (2 * number) % 10;
number /= 10;
}
}
if (number >= 10 && number < 100)
{
first2 = number;
}
}
if (total % 10 == 0)
{
if ((first2 == 34 || first2 == 37) && i == 15)
{
printf("An");
}
else if ((first2 == 51 || first2 == 52 || first2 == 53 || first2 == 54 || first2 == 55) && i == 16)
{
printf("Mn");
}
else if (first2 / 10 == 4 && (i == 16 || i == 13))
{
printf("Vn");
}
else
{
printf("INVALIDn");
}
}
else
{
printf("INVALIDn");
}

Python中与C/Java代码最接近的等价代码是:

total = 0
i = 0
while number > 0:
if i % 2 == 0:
total += number % 10
number //= 10
i += 1

这不是很优雅,因为您必须重写for (...;...;...)循环,使用while和单独的行进行初始化和增量。请注意,他的与您所拥有的接近,但是有两个重要的区别:首先,i += 1应该位于循环的末尾,因为for的第三个块也在每次迭代之后执行。还要注意Python中整数除法的//!

这只是计算所有数字的和。i % 2部分是无关的,因为number //= 10位只在该块内执行,所以它只是使外部循环运行两倍的时间。如果这确实是您想要的,您可以将其简化为这样,不使用i:

while number > 0:
total += number % 10
number //= 10

或者就这样:

total = sum(map(int, str(number)))

然而,如果你想要添加每一个其他数字(从末尾开始),例如1234566+4+2,那么你必须将/= 10部分移动到外部循环(在包括i的第一个版本中),即减少Python中的缩进。其余部分保持不变

我不清楚你到底想用这段代码实现什么,但看看你给出的C代码,我相信带有' I '变量的行是无用的:你循环了一定次数,但一半的时间你什么都不做;不如循环一半的次数。

对应的python代码是:

# number should be initialized to some value
total = 0
while number > 0:
total += number % 10
number //= 10

所以除了变量i,你已经有了最好的答案。

最新更新