Python矩阵函数编写求助:rowZero函数错误修正及功能实现
问题修正与完整函数实现
原rowZero函数的错误修正
你的代码核心问题是逻辑搞反了——不是打完0再额外加1,而是要在指定位置替换原本的0,同时参数定义也不符合需求(需求是单参数length)。先给你修正后的rowZero:
def rowZero(length): # 打印length个连续的0,最后换行 print('0' * length)
如果想用循环实现(和你原代码风格一致),可以写成:
def rowZero(length): for _ in range(length): print('0', end='') print() # 打印完一行后换行
按需求实现所有函数
下面是满足你全部需求的完整代码,包含参数默认值、边界判断:
1. rowZero(length) - 打印全零行
def rowZero(length): print('0' * length)
2. rowZeroOne(length, position=0) - 指定位置替换为1
这里把position设为默认值0,同时加了边界判断确保position不超过行长度
def rowZeroOne(length, position=0): # 处理position的边界:不能小于0,不能大于length position = max(0, min(position, length)) # 拼接字符串:前position个0 + '1' + 剩下的0 row = '0' * position + '1' + '0' * (length - position - 1) if position < length else '0' * length + '1' print(row)
3. rowZeroSymbol(length, position=0, symbol='#') - 指定位置替换为自定义符号
def rowZeroSymbol(length, position=0, symbol='#'): position = max(0, min(position, length)) if position < length: row = '0' * position + str(symbol) + '0' * (length - position - 1) else: row = '0' * length + str(symbol) print(row)
4. matrixWrapper(function, size, symbol=None) - 矩阵包装函数
实现单位矩阵(调用rowZeroOne)和自定义对角符号矩阵(调用rowZeroSymbol)的打印:
def matrixWrapper(function, size, symbol=None): for i in range(size): # 根据传入的函数和参数,打印每一行 if function == rowZeroOne: # 打印单位矩阵:第i行的第i个位置设为1 function(size, i) elif function == rowZeroSymbol and symbol is not None: # 打印对角为指定符号的矩阵:第i行的第i个位置设为symbol function(size, i, symbol) elif function == rowZero: # 打印全零矩阵 function(size)
调用示例
# 打印5x5全零矩阵 matrixWrapper(rowZero, 5) # 打印5x5单位矩阵 matrixWrapper(rowZeroOne, 5) # 打印5x5对角为'*'的矩阵 matrixWrapper(rowZeroSymbol, 5, '*')
内容的提问来源于stack exchange,提问作者DamnGood
相关产品推荐
相关产品推荐

