int类型的对象不是iterab

2024-04-26 02:27:55 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的密码:

NUM = 3                
A = [1,5,6,2,8,4,3,2,5]
B = []
m = []
check = False
summ=0
n = len(A) / NUM
while check == False: 
    for i in A:
        if A.index(i) >= n:
            B.append(m)
            m = []
            n *= 2
        m.append(i)
    B.append(m)
    for j in B:
        s1=(sum(B[0]))
        s2=(sum(B[1]))
        s3=(sum(B[2]))
    print(B)
    if s1==s2==s3:
        summ=s1
        check = True
    else:
        B = [0] * len(A)
        ilg = len(A)
        B[0]=A[ilg-1]
        for i in range(len(A)-1):
            B[i+1] = A[i]
        for i in range(len(A)):
            A[i]=B[i]

我要做的是把我的列表分为3个列表,如果这些列表中的数字总和相等,则打印sum out,如果不是,则打印'FALSE'。 例如:[1,2,3,4,5,6,7,8,9], 拆分后:[1,2,3],[4,5,6],[7,8,9] 但我得到一个错误: s1=[sum(B[0])] TypeError: 'int' object is not iterable 我做错了什么?你知道吗

编辑:这里我有更多的,在else后面的部分应该从[1,5,6,2,8,4,3,2,5]改为[5,1,5,6,2,8,4,3,2]等等。你知道吗


Tags: infalse列表forlenifs3check
3条回答

你的问题是这行:

B[0]=A[ilg-1]

您正在给B[0]赋值一个整数,它不是iterable对象。在循环的第二次迭代中,将B[0]传递给sum函数,该函数尝试对其进行迭代,并抛出异常。你知道吗

因为你定义的范围不正确。你想i成为你的索引,对吧?所以使用:

for i in np.arange(0, len(B)):

导入numpy后:

import numpy as np

编辑:实际上不需要包,只需要:for i in range(0, len(B)):

A = [1,5,6,2,8,4,3,2,5]
NUM = 3
n = len(A) / NUM
# here make sure that len(A) is a multiple of NUM
sums = [sum([item for item in A[i * NUM :(i + 1) * NUM]]) for i in range(n)]
# for python versions older than 3 use xrange instead of range.
for i in sums[1:]:
    if i != sums[0]:
        print "FALSE"
        break
else:
    print sums[0]

相关问题 更多 >