求1到1000范围内不含数字5的数值总和 Python新手代码求指导
代码问题说明&正确实现
现有代码存在的问题
- 循环范围不符合需求:要计算1~1000的数值,现在
range(0,1001)会从0开始遍历,虽然0不影响总和,但逻辑和需求不符。 - 冗余的
i += 1:for循环遍历range时,每次迭代的i会自动更新,手动修改i的值不会对下一次循环生效,这行代码可以直接删掉。 - print语句缩进错误:现在print在for循环内部,每遍历一个数就会打印一次当前累加值,最终会输出1001行结果,你需要把print移到循环外,只输出最终总和。
- 不建议用
sum作为变量名:sum是Python内置的求和函数,自定义变量覆盖内置函数名会导致后续无法正常调用内置sum功能,建议替换为total之类的变量名。
修正后代码
total = 0 # range左闭右开,要包含1000需要写结束值为1001 for i in range(1, 1001): if '5' not in str(i): total += i print(total)
更简洁的写法
可以直接用内置sum函数加生成器表达式实现,逻辑和上面的循环完全一致:
total = sum(i for i in range(1, 1001) if '5' not in str(i)) print(total)
内容的提问来源于stack exchange,提问作者Rus
相关产品推荐
相关产品推荐

