Python平衡点问题

平衡点问题

假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点

比如一个列表 numbers = [1,3,5,7,8,25,4,20],25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;

要求:返回任何一个平衡点。

解题思路

平衡点两边的数求和相等,也就是sum(lsit)减去这个数之后再除以2等于这个数某一边的数求和,可以用一个变量来累加这个数左边的那一部分序列。

Python代码:

def Find_Blance(alist):
    sumlist = sum(alist)
    balance = 0
    for num in numbers:
        if balance < (sumlist - num) / 2:
            balance += num
        else:
            break
    if balance == (sumlist - num) / 2:
        print("平衡点是:{0}".format(num))
    else:
        print("平衡点不存在!")

if __name__ == '__main__':
    numbers = [1, 3, 5, 7, 8, 25, 4, 20]
    Find_Blance(numbers)

测试结果:

平衡点是:25

再换一组数据:

numbers = [2,1,8,4,10,30,55,25,25,5]
平衡点是:55

参考博客: https://www.cnblogs.com/Python666/articles/7454877.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值