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

判断一个数是否为三角数时遇TypeError错误,求代码排查帮助

问题分析与解决

报错原因

你代码里的i = x(x+1)/2是错误写法:在Python中,整数后面跟括号会被识别为调用函数的操作,但x是整数类型,不是可调用的函数,所以触发TypeError: 'int' object is not callable。正确的乘法运算需要用*运算符,应该写成i = x*(x+1)/2。

修正你的现有代码(计算第x个三角数)

如果你的目标是计算第x个三角数,修正后的代码如下:

x = int(input("Please enter an int: "))
i = x * (x + 1) / 2
l = []
l.append(i)
print(i)

正确实现“判断输入数是否为三角数”

从你的描述看,你实际需求是判断输入的数是否属于三角数(即是否存在整数n,使得该数等于n(n+1)/2),完整实现代码如下:

x = int(input("Please enter an int: "))
# 三角数的判别公式:1+8x必须是完全平方数,且平方根减1后能被2整除
discriminant = 1 + 8 * x
sqrt_d = int(discriminant ** 0.5)
# 验证是否为完全平方数,且(sqrt_d -1)是偶数
if sqrt_d * sqrt_d == discriminant and (sqrt_d - 1) % 2 == 0:
    print(f"{x} 是三角数")
else:
    print(f"{x} 不是三角数")

逻辑说明

  • 三角数的方程为:n² + n - 2x = 0,根据求根公式,n必须是正整数,因此判别式1+8x必须是完全平方数,且(√(1+8x)-1)能被2整除(保证n是整数)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:11:12