with open('test7.txt', 'r') as f: rows, cols = map(int, f.readline().split(',')) matrix = [] for i in range(cols): matrix.append(0) for line in f: row, col, value = map(int, line.split(',')) matrix[row-1][col-1] = value for row in matrix: print(' '.join('{:<4}'.format(num) for num in row))这个代码有什么问题?
时间: 2024-03-14 14:43:46 浏览: 257
这个代码有一个问题,就是在初始化稀疏矩阵时,使用了错误的方式。你使用一个一维列表来代表稀疏矩阵,但是在后续处理中,使用了二维列表的方式,导致会出现 `TypeError: 'int' object is not subscriptable` 错误。
正确的初始化方式应该是使用一个二维列表,类似于以下代码:
```python
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
```
这样可以创建一个大小为 `rows x cols` 的二维列表,用于存储稀疏矩阵。
另外,你修改了输出格式,使用了左对齐 (`{:<4}`),而不是右对齐 (`{:>4}`)。这是可以根据具体需求来决定的,但需要保证所有数字的占位数相同,方便观察。
综上所述,正确的代码应该是这样的:
```python
with open('test7.txt', 'r') as f:
rows, cols = map(int, f.readline().split(','))
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
for line in f:
row, col, value = map(int, line.split(','))
matrix[row-1][col-1] = value
for row in matrix:
print(' '.join('{:>4}'.format(num) for num in row))
```
希望能够帮到你!
阅读全文