在准备考试的过程中,我一直在努力转换为'到了'而#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中运行时,第一部分效果很好,但第二部分没有显示结果。
我应该编辑什么才能让第二部分正常运作?
答案 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