python笔试题-平衡点问题: 假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点。

平衡点问题

假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点。
比如一个列表numbers = [1, 3, 5, 7, 8, 25, 4, 20]。25前面的总和为24,25,后面的总和也是24,那么这个点就是平衡点。
要求编写程序,寻找并返回任意一个列表的平衡点。

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

猜你喜欢

转载自blog.csdn.net/darkman_ex/article/details/81004104