本题要求实现一个函数msslst(),带一个整数列表作为输入参数。要求函数计算并返回输入列表中的最大和子列表之和。最大和子列表是输入列表的子列表(切片),其各项之和最大。所有列表项都为负数,则最大和子列表为空子列表,空子列表的和定义为0。
def msslst(in_list):
# 先判断是否为全负或空列表
if all(i < 0 for i in in_list) or in_list == []:
return 0
else:
b = []
# 判断是否有负数
if any(i < 0 for i in in_list):
# 只保留正数,保存到b列表
for i in in_list:
if i >= 0:
b.append(i)
return sum(b)
# 如果没有负数则去掉最小的一个数
else:
m = min(in_list)
while m in in_list:
in_list.remove(m)
return sum(in_list)
in_list = eval(input('输入列表:'))
print(msslst(in_list))