+:'int'和'list'不支持的opera类型

时间:2017-05-04 15:30:58

标签: python python-3.x

我不确定我在哪里出错了,我已经尝试了很多其他的方法,但我仍然会收到错误。

  

“如果sum([r])== sum(对于square_1中的r,r [c]):   TypeError:+:'int'和'list'“

的不支持的操作数类型
def main():

    Square_1 =[[[] for r in range(3)] for c in range(3)]
    for r in range(3):
        for c in range(3):
            User_Input=int(input("Please Enter number :")) 
            Square_1[r][c]= User_Input

            if sum([r]) == sum(Square_1[c][c] for c in range(1)):

                if sum([r]) == sum(r[c] for r in Square_1):
                    LoShuMagic = str('is a Lo Shu Magic Square!')
            else:
                LoShuMagic = str('is not a Lo Shu Magic Square :(')

    print(Square_1)

main()

2 个答案:

答案 0 :(得分:0)

我将向您解释为什么发生错误。

我们说User_Input是42。

在第一次迭代时,即当rc为零时,sum(r[c] for r in Square_1)会尝试计算[42, [], []]的总和。 Python不知道42 + []应该是什么,并抛出TypeError

修复程序超出了此问答格式的范围,因为通过浏览代码,我会产生强烈的印象,即您需要阅读Python Tutorial

我也强烈建议你阅读How to debug small programs因为我必须做的就是找到错误的原因是逐步完成说明。你也可以这样做。

答案 1 :(得分:0)

您的代码存在一些问题。首先,将sum([r])更改为sum(r)r已经是一个列表,不需要像代码那样将其放入另一个列表中。第一个TypeError发生的地方。在获得用户输入后,让我们说r就像这样[1, 2, 3]。在您的代码中,Python尝试计算[[1, 2, 3]]的总和,即1 + 2 + 3 +[]。您有两种不同的类型:无法相互添加的列表和整数。由timgeb描述的另一个TypeError类似于上面提到的错误。

此外,您不需要像这里一样明确地将字符串转换为字符串:

str('is a Lo Shu Magic Square!')

它已经是一个字符串。