You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码问题咨询:为何无法计算正确的向量模长?

问题诊断与修复方案

首先,我大概率能猜到你的代码犯了Python新手常遇到的循环变量覆盖问题——毕竟返回向量最后一个值而非模长,这个现象太典型了。

先举个和你的情况八九不离十的错误代码例子:

def calculate_magnitude(vector):
    sum_of_squares = 0
    for num in vector:
        sum_of_squares = num ** 2  # 这里是赋值,不是累加!
    return sum_of_squares ** 0.5

问题根源

你在循环里把sum_of_squares反复重新赋值为当前元素的平方,而不是在之前的结果上累加。循环结束后,sum_of_squares只会保存最后一个元素的平方,开根号后自然就是最后一个元素的绝对值,看起来就像直接返回了向量的最后一个值。

修复后的正确代码

只需要把赋值操作改成累加即可:

def calculate_magnitude(vector):
    sum_of_squares = 0
    for num in vector:
        sum_of_squares += num ** 2  # 用+=实现累加,而非直接赋值
    return sum_of_squares ** 0.5

如果你想更Pythonic一点,甚至可以用一行代码搞定:

def calculate_magnitude(vector):
    return sum(num ** 2 for num in vector) ** 0.5

测试一下:比如传入向量[3,4],正确模长是5,修复后的代码会返回预期结果,而不是4啦。

内容的提问来源于stack exchange,提问作者Foram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:46:36