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

Python3方法输出异常问题咨询:为何返回类似数组的奇怪结果?

问题根源与修复方案

兄弟,你遇到的这个奇怪输出(1, 5),根源是一个超容易疏忽的语法细节:你在计算平方根时用了逗号0,5,而不是小数点0.5!

为什么会出现元组输出?

在Python里,逗号是元组的分隔符,而且它的优先级比幂运算**低。所以你写的:

n=(((punkt1[0]-punkt2[0])**2)+((punkt1[1]-punkt2[1])**2))**0,5

会被Python拆成两部分:

  1. 先计算(((punkt1[0]-punkt2[0])**2)+((punkt1[1]-punkt2[1])**2))**0——任何非零数的0次幂都是1,所以这部分结果是1
  2. 再把这个1和5组合成一个元组(1, 5)

这就是你看到“类似数组的奇怪结果”的原因啦!而你前面的print(int((punkt1[0])-(punkt2[0])))输出0是完全正常的,因为两个点的x坐标都是1,相减后就是0。

修复后的代码

只需要把逗号改成小数点,让**0.5来表示平方根运算就可以解决问题:

class Maths():
    def __init__(self):
        pass
    def abstand_punkt_punkt(self,punkt1,punkt2):
        print(int((punkt1[0])-(punkt2[0])))
        print(punkt1[0])
        print(punkt2[0])
        # 把逗号替换成小数点
        n=(((punkt1[0]-punkt2[0])**2)+((punkt1[1]-punkt2[1])**2))**0.5
        print(n)
        return n
m=Maths()
print(m.abstand_punkt_punkt([1,10],[1,100]))

运行后会输出正确的距离值90.0,再也不会出现奇怪的元组了。

更直观的写法(可选)

如果你觉得**0.5不够直观,也可以用Python标准库的math.sqrt()函数来计算平方根,代码可读性会更高:

import math

class Maths():
    def __init__(self):
        pass
    def abstand_punkt_punkt(self,punkt1,punkt2):
        dx = punkt1[0] - punkt2[0]
        dy = punkt1[1] - punkt2[1]
        n = math.sqrt(dx**2 + dy**2)
        print(n)
        return n
m=Maths()
print(m.abstand_punkt_punkt([1,10],[1,100]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:13:16