【问题标题】:TypeError: 'int' object is not iterable Python read fileTypeError:“int”对象不是可迭代的 Python 读取文件
【发布时间】:2014-10-22 01:05:01
【问题描述】:

这是一个魔方程序,可以找出任何大小的矩阵是否是魔方。当我运行代码时,我收到错误 TypeError: 'int' object is not subscriptable。我决定将 line = int(i) 更改为 line = i 但这只是给了我另一个错误。无法使用 numpy

编辑:现在我收到此错误 TypeError: 'int' object is not iterable

文本文件:

1 1
6 8

代码如下:

def main():
    filNam = "matrix8.txt"
    matrix = (readMatrix(filNam))
    rowNum = 0
    colNum = 0
    print(rowSum(matrix, rowNum))

def readMatrix(filNam):
    matrixList = []
    numFile = open(filNam, "r")
    lines = numFile.readlines()
    for line in lines:
        line = line.split()
        row = []
        for i in line:
            row.append(int(i))
        matrixList.append(row)
    return matrixList

def eachNumPresent(matrix):
    if len(matrix) % 2 != 0:
        return False
    else:
        return True

def rowSum(matrix, rowNum):
    for row in matrix[rowNum]:
        row = sum(int(row))
        rowNum = rowNum + 1
    return i


def colSum(matrix):
    length = len(matrix)
    col_rows = 0
    for i in range(length):
        col_rows = col_rows + matrix[i][0]
        return col_rows

main()

【问题讨论】:

    标签: python


    【解决方案1】:

    问题是矩阵被“压扁”成一长排。为了修复它,您应该逐行读取和构造矩阵。

    变化:

    def readMatrix(filNam):
        matrixList = []
        numFile = open(filNam, "r")
        lines = numFile.readlines()
        for line in lines:
            line = line.split()
            for i in line:
                line = int(i)
                matrixList.append(line)
        return matrixList
    

    到:

    def readMatrix(filNam):
        matrixList = []
        numFile = open(filNam, "r")
        lines = numFile.readlines()
        for line in lines:
            line = line.split()
            row = []  # 1st change
            for i in line:
                row.append(int(i)) # 2nd change
            matrixList.append(row) #3rd change
        return matrixList
    

    更改代码并在问题中提供的输入上运行它会打印2,这是矩阵中第一行的总和。

    【讨论】:

      猜你喜欢
      • 2015-04-06
      • 2013-10-31
      • 2016-02-24
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 2023-01-22
      相关资源
      最近更新 更多