Python如何实现计算小于等于x且仅能被4或5整除的数值之和
Python函数修正实现
现有代码问题梳理
- 循环范围写死为
range(1000),未使用输入参数num,无法匹配「小于等于输入值」的要求,应改为range(num + 1)保证覆盖所有符合范围的数值 - 条件判断逻辑完全不符合需求:当前是累加同时被4和5整除的数,需求要求累加「能被4或5整除、但不同时被两者整除」的数
return语句缩进错误,放在了for循环内部,会导致第一次循环执行完成后直接返回结果,不会遍历所有数值- 使用了Python内置函数名
sum作为变量名,会覆盖原内置函数功能,建议更换变量名
正确实现代码
def personal_numbers(num): sum_total = 0 # 遍历所有小于等于num的数值 for i in range(num + 1): # 符合条件:能被4或5整除,但不同时被两者整除 if (i % 4 == 0 or i % 5 == 0) and not (i % 4 == 0 and i % 5 == 0): sum_total += i return sum_total # 测试用例:输入12,符合要求的数为4、5、8、10,总和为27 print(personal_numbers(12))
运行结果
执行上述代码会输出27,符合需求预期。
内容的提问来源于stack exchange,提问作者anthonyceaser2021
相关产品推荐
相关产品推荐

