Python不使用numpy如何实现排版整齐的矩阵打印?
问题原因
你当前的输出没有做统一的对齐处理,不同位数的浮点数长度不同,直接拼接就会出现排版错位的问题。原代码还存在循环变量j被输入值意外覆盖的小瑕疵,下述方案中已同步修复。
解决方案1:纯原生Python实现(无需安装第三方库)
通过预计算所有元素的最大展示宽度,统一做对齐输出,修改后的完整代码如下:
n = int(input("Digite o número de variáveis do sistema: ")) matriz_A=[] for i in range(n): b=[] for j in range(n): num = float(input("Digite a entrada ["+str(i+1)+"]["+str(j+1)+"]")) b.append(num) matriz_A.append(b) # 计算所有元素的最大字符串宽度,保证列对齐 max_width = max(len(f"{num:.2f}") for row in matriz_A for num in row) for i in range(n): for j in range(n): # 按最大宽度右对齐,保留2位小数,*可根据需求调整小数位数和列间距* print(f"{matriz_A[i][j]:.2f}".rjust(max_width + 2), end="") print()
你可以自行调整代码中的.2f修改保留的小数位数,rjust参数里的+2用来控制列间距,数值越大列之间空隙越大。
解决方案2:使用numpy库简化实现
如果允许使用第三方库,安装numpy后可以直接调用内置的矩阵打印方法,自动处理对齐:
import numpy as np n = int(input("Digite o número de variáveis do sistema: ")) matriz_A=[] for i in range(n): b=[] for j in range(n): num = float(input("Digite a entrada ["+str(i+1)+"]["+str(j+1)+"]")) b.append(num) matriz_A.append(b) print(np.array(matriz_A))
如果需要调整numpy的打印格式,可以通过np.set_printoptions方法配置小数位数、对齐方式等参数。
内容的提问来源于stack exchange,提问作者rfrancamont
相关产品推荐
相关产品推荐

