You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python矩阵求和异常咨询:为何矩阵元素未执行数值相加仅做字符串拼接?

问题原因与解决方法

核心问题:字符串拼接而非数值加法

你遇到的情况本质是**input()函数返回的是字符串类型**,而非你期望的数值类型。Python里,字符串之间的+运算符作用是拼接字符串,而非数学加法——这就是为什么输入"2"和"3"后,得到的结果是"23"而不是5。

具体原因拆解

  • 输入默认存为字符串:你的代码里,matrix1matrix2的元素直接通过input()获取,不管你输入的是数字还是字符,Python都会把它存成字符串类型。
  • 遍历顺序不匹配:另外代码里求和矩阵的遍历逻辑有小问题:初始化sum时是按row行、kol列创建的,但后续遍历却先循环kol(列)再循环row(行),这可能导致行列颠倒或者索引错误。

解决方法

只需要做两个关键修改就能解决问题:

1. 将输入转换为数值类型

在获取矩阵元素时,把input()的结果转换成整数(整数矩阵场景)或浮点数(支持小数场景),示例如下:

matrix1 = [[int(input("enter the element of matrix 1:")) for j in range(row)] for i in range(kol)]
matrix2 = [[int(input("enter the element of matrix 2:")) for j in range(row)] for i in range(kol)]

如果需要处理小数,把int替换成float即可。

2. 修正求和矩阵的遍历顺序

保持初始化和遍历的行列顺序一致,比如初始化时按row行、kol列创建矩阵,遍历也先循环行再循环列:

print("sum matrix")
for j in range(row):
    for i in range(kol):
        sum_matrix[j][i] = matrix1[j][i] + matrix2[j][i]
        print(format(sum_matrix[j][i], "<3"), end="")
    print()

完整修正后的代码

row = int(input("enter for row:"))
kol = int(input("enter for column :"))
# 转换输入为整数类型
matrix1 = [[int(input("enter the element of matrix 1:")) for j in range(row)] for i in range(kol)]
matrix2 = [[int(input("enter the element of matrix 2:")) for j in range(row)] for i in range(kol)]
sum_matrix = [[0 for i in range(kol)] for j in range(row)]  # 避免用sum作为变量名(sum是Python内置函数)

print("matrix1")
for j in range(row):
    for i in range(kol):
        print(format(matrix1[j][i], "<3"), end="")
    print()

print("matrix2")
for j in range(row):
    for i in range(kol):
        print(format(matrix2[j][i], "<3"), end="")
    print()

print("sum matrix")
for j in range(row):
    for i in range(kol):
        sum_matrix[j][i] = matrix1[j][i] + matrix2[j][i]
        print(format(sum_matrix[j][i], "<3"), end="")
    print()

额外提醒:尽量不要用sum作为变量名,因为sum是Python的内置函数,用它当变量名会覆盖内置功能,所以这里改成了sum_matrix

内容的提问来源于stack exchange,提问作者Adrian Des Zuchrufy

火山引擎 最新活动