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

求助:运行Python代码时出现TypeError: unsupported operand type(s) for ** or pow(): 'NoneType' and 'int'错误

计算圆面积时出现TypeError错误的解决方法

错误信息

TypeError: unsupported operand type(s) for ** or pow(): 'NoneType' and 'int'

问题代码

import math

def distance (x1,y1,x2,y2):
    horizontal=x2-x1
    vertical=y2-y1
    horizontal_squared=horizontal**2
    vertical_squared=vertical**2
    distance=math.sqrt(horizontal_squared+vertical_squared)
    print(distance)

def area(radius):
     math.pi*radius**2

def area_circle(xc,yc,xp,yp):
    r=distance(xc,yc,xp,yp)
    result=area(r)
    print (result)

area_circle(1,2,3,6)

问题分析

你的怀疑是对的,distance函数确实返回了None——Python函数如果没有显式的return语句,默认会返回None。你在distance里只做了print(distance),没有把计算结果返回给调用方,所以r = distance(...)里的r就是None。

另外area函数也有同样的问题:它计算了圆面积的表达式,但没有用return返回结果,所以result = area(r)里的result也是None。

当area函数尝试用None执行**2运算时,就触发了这个TypeError。

修复后的代码

import math

def distance(x1, y1, x2, y2):
    horizontal = x2 - x1
    vertical = y2 - y1
    horizontal_squared = horizontal ** 2
    vertical_squared = vertical ** 2
    distance = math.sqrt(horizontal_squared + vertical_squared)
    print(distance)  # 如需打印距离可保留,不需要则删除
    return distance  # 关键:返回计算得到的距离值

def area(radius):
    return math.pi * radius ** 2  # 关键:返回计算的面积值

def area_circle(xc, yc, xp, yp):
    r = distance(xc, yc, xp, yp)
    result = area(r)
    print(result)

area_circle(1, 2, 3, 6)

修复说明

  • 给distance函数添加return distance,让它把计算出的距离值返回给调用者,这样r就能拿到有效数值而非None。
  • 给area函数添加return语句,返回计算好的圆面积,确保result能得到正确的面积值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:12:33