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

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,9,11,13,20,29]
    Find_Blance(numbers)
#平衡点不存在!

n = filter(lambda i:sum(data[:i]) == sum(data[i+1:]),range(1,len(data)-1))
data = [1, 3, 5, 7, 8, 25, 4, 20]
print(list(n))
#[5]

a =[data[i]for i in range(1,len(data)-1) if sum(data[:i] )== sum(data[i+1:])]
data = [1, 3, 5, 7, 8, 25, 4, 20]
a
#[25]

def balance_point(thy_list):
    num = len(thy_list)
    if num >= 3:
        for i in range(num):
            if i == 0:
                pass
            else:
                list1 = thy_list[:i]  # 将传入的列表切片,将一个列表分成2个列表
                list2 = thy_list[i+1:]
                sum1 = sum(list1)   # 对切片后的列表分别求和
                sum2 = sum(list2)
                if sum1 == sum2:
                    return '平衡点:%d,其值为%d' % (i, thy_list[i])
        return '无平衡点'
    else:
        return '列表长度不够!'


if __name__ == '__main__':
    print(balance_point([1, 3, 5, 7, 8, 25, 4, 20]))
    print(balance_point([1, 3, 5, 7, 8, 25, 4, 26]))
    print(balance_point([1, 3, 5, 7, 8, 7, 5, 4]))
    print(balance_point([1]))
    print(balance_point([100, 200, 100]))
# 结果:

# 平衡点:5,其值为25
# 无平衡点
# 平衡点:4,其值为8
# 列表长度不够!
# 平衡点:1,其值为200

a =[data[i]for i in range(1,len(data)-1) if sum(data[:i] )== sum(data[i+1:])]
data = [2,1,8,4,10,30,55,25,25,5]
a 
#[55]

n = filter(lambda i:sum(data[:i]) == sum(data[i+1:]),range(1,len(data)-1))
data = [2,1,8,4,10,30,55,25,25,5]
print(list(n))
[6]

#这个代码有点问题
numbers = [1, 3, 5, 7, 8, 25, 4, 20]
sum1 = 0;
for num in numbers:
    sum1 += num
    
    for index in range(len(numbers)):
        former = 0
        after = 0
        i = 0
        for i in range(index):
            former += numbers[i]
            after = sum1 - former - numbers[index]
            if(former == after):
                print("The balance point is:",numbers[index])
 #The balance point is: 25

numbers = [1,3,5,7,9,11,13,20,29]
sum1 = 0;
for num in numbers:
    sum1 += num
    
    for index in range(len(numbers)):
        former = 0
        after = 0
        i = 0
        for i in range(index):
            former += numbers[i]
            after = sum1 - former - numbers[index]
            if(former == after):
                print("The balance point is:",numbers[index])
#The balance point is: 7

参考:https://blog.csdn.net/windows_2015/article/details/52996915?ops_request_misc=%7B%22request%5Fid%22%3A%22158245603419726874010643%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158245603419726874010643&biz_id=0&utm_source=distribute.pc_search_result.none-task

https://blog.csdn.net/Darkman_EX/article/details/81004104?ops_request_misc=%7B%22request%5Fid%22%3A%22158245622119195239848801%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158245622119195239848801&biz_id=0&utm_source=distribute.pc_search_result.none-task

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值