2 回答
TA贡献1796条经验 获得超10个赞
您当前代码的问题不是大数字,而是索引 3。您永远不会从计算中排除该索引,因此如果它是列表中最大的或最小的,您将得到错误的结果。
你从不跳过索引 3 的原因是你的外循环运行是 on range(0, 4),内循环也是。这意味着您需要从索引 0 到 3 开始的四个项目。但是您永远不会从索引 4 开始,在这种情况下会跳过索引 3。
因此,您可以通过简单的修复来修复您的代码:
for i in range(0, 5): # replace 4 with 5 here!
sum1=0
for j in range(0,4):
...
我注意到有很多更有效的方法可以解决这个问题。例如,您可以计算列表中所有五个值的总和(small尽管使用内置sum函数会更容易,但您已经在执行此操作),然后找到单个最大值和最小值(可能使用minandmax函数) . 然后,您可以通过从所有项目的总和中减去最大的单个项目来找到四个项目的最小总和,而通过减去最小的单个项目来找到四个项目的最大总和。
def miniMaxSum(arr):
arr_sum = sum(arr)
min_val = min(arr)
max_val = max(arr)
print("Minimum:", arr_sum - max_val, "Maximum:", arr_sum - min_val)
TA贡献1936条经验 获得超6个赞
通常我会使用
print("Minimum:", sum(sorted(arr)[:4]), "Maximum:", sum(sorted(arr)[1:]))
我试着理解你的代码,但只有我可以把它改成这样:
def miniMaxSum(arr):
small = arr[0] + arr[1] + arr[2] + arr[3] + arr[4]
large = 0
for i in range(5):
temp = 0
for j in range(5):
if i != j:
temp += arr[j]
if temp > large:
large = temp
if temp < small:
small = temp
print("Minimum:", small, "Maximum:", large)
#arr = list(map(int, input().rstrip().split()))
miniMaxSum(arr)
使用i != j我总是跳过一个数字,所以它总是只对 4 个数字求和。
添加回答
举报