在Python中将for循环转换为while循环

时间:2018-04-21 09:29:58

标签: python loops for-loop while-loop sum

在准备考试的过程中,我一直在努力转换为'到了'而#39;言。

a= int(input('type to calculate the sum of multiples'))

total =0
for i in range(1,101,1):
    if i %a==0:
        total= total+i
    else:
        continue
print('the sum of multiple numbers from 1 to ', a, 'is', total)


a= int(input('type to calculate the sum of multiples'))

ntotal =0
i=1
while i<101: 
    if i %a==0:
        ntotal = ntotal + i
    else:
        continue
print('the sum of multiple numbers from 1 to ', a, 'is', total)

在IDLE中运行时,第一部分效果很好,但第二部分没有显示结果。

我应该编辑什么才能让第二部分正常运作?

1 个答案:

答案 0 :(得分:1)

所有循环都通过列表(元素集合)重复递增数字或迭代。

在您的while循环中,如果i等于i%a,则0的值保持不变。无论哪种方式,i都保持不变,即使ntotal增加。因此,循环的条件始终为1 < 101,即True

要解决此问题,您应该将步骤值增量添加到i,如下所示:

while i<101: 
    if i %a==0:
        ntotal = ntotal + i
    else:
        pass
    i = i + 1

这可确保i递增,无论if条件是执行还是else条件。

如果您对使用pass感到不舒服,可以这样做:

while i<101: 
    if i %a==0:
        ntotal = ntotal + i
        i += 1
    else:
        i += 1
        continue

你甚至不必使用continue,因为在else条件之后,循环的控制将返回到while循环的条件(它将重复)。如果你想在if-else之后添加一些其他代码,但是在循环内,我就把它留在那里。

此外,正如评论中所指出的,不需要使用else子句,因为其中没有任何内容。因此,您的代码可能如下所示:

while i<101: 
    if i %a==0:
        ntotal = ntotal + i

    i = i + 1