我不确定我在哪里出错了,我已经尝试了很多其他的方法,但我仍然会收到错误。
“如果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()
答案 0 :(得分:0)
我将向您解释为什么发生错误。
我们说User_Input
是42。
在第一次迭代时,即当r
和c
为零时,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!')
它已经是一个字符串。