Python 递增for循环中的计数器以对简单数组求和

Python 递增for循环中的计数器以对简单数组求和,python,Python,我试图在循环中增加一个索引,但我的程序不起作用。我有一个包含10个元素的简单数组,我想对这个数组的所有元素求和。我有问题,因为我考虑两个循环,首先我想计算五个第一个元素,而不是五个最后一个元素,但是我的计数器iii在程序中没有变化,代码是 import numpy as np from matplotlib.pylab import * x = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10] i_i = 0 i_j = 5 sum_t = 0.0 for i in ran

我试图在循环中增加一个索引,但我的程序不起作用。我有一个包含10个元素的简单数组,我想对这个数组的所有元素求和。我有问题,因为我考虑两个循环,首先我想计算五个第一个元素,而不是五个最后一个元素,但是我的计数器iii在程序中没有变化,代码是

import numpy as np
from matplotlib.pylab import *


x = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10]

i_i = 0
i_j = 5
sum_t = 0.0

for i in range(2):
    for ii in range(i_j):
        sum_t += x[i]
    i_i += 5
    i_j += 5

print(sum_t)

总和的值必须是55,但我对指数I_I有问题。欢迎任何建议,使程序以这种方式工作。

您在第二个循环中使用了错误的变量,它是
ii
,而不是
i
。其次,最后一个循环必须从
i_i
i_j
,因此您的范围也是错误的:

import numpy as np
from matplotlib.pylab import *

x = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10]

i_i = 0
i_j = 5
sum_t = 0.0

for i in range(2):
    for ii in range(i_i, i_j):
        sum_t += x[ii]
    i_i += 5
    i_j += 5

print(sum_t)

您在第二个循环中使用了错误的变量,它是
ii
,而不是
i
。其次,最后一个循环必须从
i_i
i_j
,因此您的范围也是错误的:

import numpy as np
from matplotlib.pylab import *

x = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10]

i_i = 0
i_j = 5
sum_t = 0.0

for i in range(2):
    for ii in range(i_i, i_j):
        sum_t += x[ii]
    i_i += 5
    i_j += 5

print(sum_t)

我不确定你希望通过两半相加得到什么,但这是可行的:

x = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10]

i_i = 0
i_j = 5
sum_t = 0.0

for i in range(2):
    for ii in range(i_j):
        sum_t += x[ii + i_i]
    i_i += 5

print(sum_t)
i_j
表示每次要对5个元素求和
i_i
告诉循环在
x
中向前开始的距离


我确信
float(sum(x))
给出了相同的答案。

我不确定你希望通过两半求和来实现什么,但这是可行的:

x = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10]

i_i = 0
i_j = 5
sum_t = 0.0

for i in range(2):
    for ii in range(i_j):
        sum_t += x[ii + i_i]
    i_i += 5

print(sum_t)
i_j
表示每次要对5个元素求和
i_i
告诉循环在
x
中向前开始的距离


我确信
float(sum(x))
给出了相同的答案。

你忘记使用I_I索引,而在第二个索引中,你使用的是I而不是ii

x=[1,2,3,4,5,6,7,8,9,10]
i_i=0
i_j=5
总和t=0.0
对于范围(2)中的i:
对于范围内的ii(i_i,i_j):
总和t+=x[ii]
i_i+=5
i_j+=5
打印(i_j)
打印(总和)
但我会用这个:

print(sum(x))

你忘了使用i_i索引,而在第二个索引中,你使用的是i而不是ii

x=[1,2,3,4,5,6,7,8,9,10]
i_i=0
i_j=5
总和t=0.0
对于范围(2)中的i:
对于范围内的ii(i_i,i_j):
总和t+=x[ii]
i_i+=5
i_j+=5
打印(i_j)
打印(总和)
但我会用这个:

print(sum(x))

下面是上述代码无法按预期工作的原因

1) 总和中的索引变量错误。必须使用x[ii]而不是x[i]

2) 第二个for循环的范围,第一次执行它必须从索引0开始,在下一次执行中,开始索引应该是5

x = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10]

i_i = 0
i_j = 5
sum_t = 0.0

for i in range(2):
    for ii in range(i_i,i_j):
        sum_t += x[ii]
    i_i += 5
    i_j += 5

print(sum_t)

下面是上述代码无法按预期工作的原因

1) 总和中的索引变量错误。必须使用x[ii]而不是x[i]

2) 第二个for循环的范围,第一次执行它必须从索引0开始,在下一次执行中,开始索引应该是5

x = [1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10]

i_i = 0
i_j = 5
sum_t = 0.0

for i in range(2):
    for ii in range(i_i,i_j):
        sum_t += x[ii]
    i_i += 5
    i_j += 5

print(sum_t)

只是想澄清一下:是否要对数组中的前五个元素和后五个元素求和?那么您是否希望在最后获得两个和(
sum\u first
sum\u last
)?为什么要用这种非常奇怪的方式而不是通过
x=np.array([1,2,3,4,5,6,7,8,9,10])来实现呢;x[:5].sum();x[5:].sum()
?事实上,我想得到总的总和。我试图对一个大数组求这个和(在另一个问题中),我需要这样做。你怎么知道
I\I
没有变化
i_i
在循环中未使用,因此其值没有区别。您的内循环不断重复添加
x[i]
,在第一次通过外循环时,您将添加
x[0]
sum\t
5次。在循环的第二次行程中,您将添加
x[1]
sum\t
10次。因此,结果应该是
5*1+10*2
,即
25
,并且由于您对求和使用浮点,它将显示为
25.0
。Tom Karzes,谢谢you@IgorMelo我建议检查您是否真的需要这样做,因为这既不是非常优化的方法,也不是非常稳健的方法来获取数组的和。正如你自己意识到的,因为你在所有不同的指数上犯了一个错误。也许你应该问一个关于另一个问题的问题,这个问题迫使你首先使用这个奇怪的解决方案。只是澄清一下:你想把数组中的前五个元素和后五个元素相加吗?那么您是否希望在最后获得两个和(
sum\u first
sum\u last
)?为什么要用这种非常奇怪的方式而不是通过
x=np.array([1,2,3,4,5,6,7,8,9,10])来实现呢;x[:5].sum();x[5:].sum()
?事实上,我想得到总的总和。我试图对一个大数组求这个和(在另一个问题中),我需要这样做。你怎么知道
I\I
没有变化
i_i
在循环中未使用,因此其值没有区别。您的内循环不断重复添加
x[i]
,在第一次通过外循环时,您将添加
x[0]
sum\t
5次。在循环的第二次行程中,您将添加
x[1]
sum\t
10次。因此,结果应该是
5*1+10*2
,即
25
,并且由于您对求和使用浮点,它将显示为
25.0
。Tom Karzes,谢谢you@IgorMelo我建议检查您是否真的需要这样做,因为这既不是非常优化的方法,也不是非常稳健的方法来获取数组的和。正如你自己意识到的,因为你在所有不同的指数上犯了一个错误。也许你应该问一个关于另一个问题的问题,这个问题迫使你首先使用这个奇怪的解决方案。谢谢。事实上,我需要这样做。但现在它工作得很好。谢谢,谢谢。事实上,我需要这样做。但现在它工作得很好。非常感谢。