def Triangular(n):
arr = []
for i in range(n):
T = i*(i+1)/2
arr.append(T)
if n == any(arr):
return True
else:
return False
所有测试用例均为False。请告诉我我的错误
答案 0 :(得分:1)
试试这个lambda:
Triangular = lambda x: (0.5 * ((8 * x + 1) ** 0.5 - 1)).is_integer()
以下是它的工作原理:
n
乘以8并减去1 你也可以使用this answer中的这个lambda来检查数字是否为Triangular:
Triangular = lambda n:(8*n+1)**.5%1>0
答案 1 :(得分:0)
any()
返回一个布尔值,True或False。您将它与n
(整数)进行比较。将行更改为
if n in arr:
或者更好的是,您只需删除整个if..else
语句并将其替换为:
return n in arr
编辑:你甚至可以避免首先创建一个数组:
def Triangular(n):
arr = []
for i in range(n):
if i*(i+1)/2 == n:
return True
return False
当发现n
为三角形时,立即返回True。如果它到达列表的末尾并且没有找到,则返回false。