有没有办法求和(1 到 n)并将其与总和(n+1 到列表末尾)进行比较?
Is there any way to sum (1 to n) and compare it to the sum (n+1 to end of list)?
我正在尝试做一些事情,比如将 sum1 和 sum2 比较为 sum1 > sum2 然后停止。我将 sum1 计算为从 0 索引迭代到 n 和 sum2,方法是将 n+1 迭代到最后一个索引,但我不能这样做,我正在摆脱索引错误。我试图通过设置一些条件来解决它,但它运行无限循环。如果有人可以提供帮助,我将不胜感激。以下是我写的代码。谢谢!!我正在使用 python 3.7
intList = [0 2 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 2 1 1 2 2 2 1 2 3 0 0 0 1 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 2 2 1 0 1 1 1 1 1 1 0 0 1 0 1 0]
sum1 = 0
sum2 = 0
for i in range(len(intList)):
sum1 = sum1 + intList[i]
print("Sum1: " , sum1)
for n in range(len(intList)):
sum2 = sum2 + intList[n+1]
print("Sum2: " , sum2)
# if n+1 < len(intList):
# continue
# else:
# break
您可以利用 python 的内置函数
for i in range(len(intList)):
sum1 = sum(intList[:i+1])
sum2 = sum(intList[i+1:])
if sum1>sum2:
print(i)
break
有效的解决方案:向前移动 sum1
会增加,sum2
会减少,因此您可以在 sum1
中添加数组的当前元素并从 sum2
中减去
sum1 = 0
sum2 = sum(intList)
for i in range(len(intList)):
sum1 += intList[i]
sum2 -= intList[i]
if sum1>sum2:
print(i)
break
我猜你的逻辑有点不对劲。在第二个循环中,您总是将列表从索引 0 添加到索引 [len(intlist)]。这与您的要求相矛盾。相反,您希望 sum2 的值从索引 intlist[n] 到 intList[len(intList)]。至于超出索引,你是因为'intList[n+1]'。以下逻辑应该有效:
sum1 = 0
for i in range(len(intList)):
sum1 = sum1 + intList[i]
print("Sum1: " , sum1)
sum2= 0
for n in range(i+1,len(intList)):
sum2 = sum2 + intList[n]
print("Sum2: " , sum2)
if sum2 < sum1:
break
我正在尝试做一些事情,比如将 sum1 和 sum2 比较为 sum1 > sum2 然后停止。我将 sum1 计算为从 0 索引迭代到 n 和 sum2,方法是将 n+1 迭代到最后一个索引,但我不能这样做,我正在摆脱索引错误。我试图通过设置一些条件来解决它,但它运行无限循环。如果有人可以提供帮助,我将不胜感激。以下是我写的代码。谢谢!!我正在使用 python 3.7
intList = [0 2 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 2 1 1 2 2 2 1 2 3 0 0 0 1 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 2 2 1 0 1 1 1 1 1 1 0 0 1 0 1 0]
sum1 = 0
sum2 = 0
for i in range(len(intList)):
sum1 = sum1 + intList[i]
print("Sum1: " , sum1)
for n in range(len(intList)):
sum2 = sum2 + intList[n+1]
print("Sum2: " , sum2)
# if n+1 < len(intList):
# continue
# else:
# break
您可以利用 python 的内置函数
for i in range(len(intList)):
sum1 = sum(intList[:i+1])
sum2 = sum(intList[i+1:])
if sum1>sum2:
print(i)
break
有效的解决方案:向前移动 sum1
会增加,sum2
会减少,因此您可以在 sum1
中添加数组的当前元素并从 sum2
中减去
sum1 = 0
sum2 = sum(intList)
for i in range(len(intList)):
sum1 += intList[i]
sum2 -= intList[i]
if sum1>sum2:
print(i)
break
我猜你的逻辑有点不对劲。在第二个循环中,您总是将列表从索引 0 添加到索引 [len(intlist)]。这与您的要求相矛盾。相反,您希望 sum2 的值从索引 intlist[n] 到 intList[len(intList)]。至于超出索引,你是因为'intList[n+1]'。以下逻辑应该有效:
sum1 = 0
for i in range(len(intList)):
sum1 = sum1 + intList[i]
print("Sum1: " , sum1)
sum2= 0
for n in range(i+1,len(intList)):
sum2 = sum2 + intList[n]
print("Sum2: " , sum2)
if sum2 < sum1:
break