Python计算指定上下界内三角数总和的函数问题求助
错误原因
triangle_sum函数中的return sum语句放置位置错误。当前你把它写在if is_triangle(i)== True的分支逻辑内,程序只要找到第一个符合条件的三角数就会立刻终止函数并返回当前累加值,不会继续遍历完上下界之间的所有整数。if分支内的i += 1是冗余无效代码。Python的for i in range(...)循环会自动按规则迭代i的取值,手动修改i的值不会改变后续循环的i取值,直接删除即可。
修正后代码
def is_triangle(num): if num < 0: return False sum = 0 n = 1 while(sum<=num): sum = sum + n if sum == num: return True n+=1 return False def triangle_sum(lower_bound, upper_bound): sum = 0 for i in range(lower_bound,upper_bound+1): if is_triangle(i): sum += i # 遍历完区间内所有数后再返回总和 return sum if __name__ == "__main__": print(triangle_sum(1,10))
验证说明
1到10区间内的三角数为1、3、6、10,累加总和为20,运行修正后的代码可以得到正确输出结果20。
内容的提问来源于stack exchange,提问作者krischenyt
相关产品推荐
相关产品推荐

