发出将列表中一行中的所有元素相加并求和的问题

我遇到的问题似乎很简单,但是我一直在寻找适合自己情况的解决方案,但找不到任何东西。基本上,我试图查看给定的网格是否是Sudoku的有效/可解决游戏。我相信我的求解方法是正确的,并且我已经能够获取一列中所有数字的总和,并检查它是否等于!=45。我遇到的问题是,当我尝试将每个数字相加时,它给了我错误:


TypeError:“ int”对象不可迭代


我对为什么会收到此错误感到困惑。我仍在学习python,但是我对Java很满意。我将在Java中执行此操作的代码有些相关,因此可能是问题所在。让我知道你们看到了什么:


for b in range(0,9):

    for x in range(0,9):

        numHolder+=grid[b][x]

        if sum(numHolder) != 45:

            return False

    numHolder=[]


忽然笑
浏览 168回答 2
2回答

梦里花落0921

在+=列表上使用时,它将尝试将操作员右侧列表中的所有项目添加到左侧列表中。但是,anint不是列表,因此您必须使用numHolder.append(grid[b][x])。

手掌心

if numHolder != 45:不要写if sum(numHolder) != 45:。sum函数需要一个list,tuple但不能是单个值。更新:如果numHolder是a,list那么您应该写:for b in range(0,9):    for x in range(0,9):        numHolder.append(grid[b][x])        if sum(numHolder) != 45:            return False    numHolder=[]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python