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
所有的测试用例都是假的。请告诉我我错了什么
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
所有的测试用例都是假的。请告诉我我错了什么
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。
试试这个 lambda:
Triangular = lambda x: (0.5 * ((8 * x + 1) ** 0.5 - 1)).is_integer()
以下是它的工作原理:
n
8 并减去 1您还可以使用此答案中的这个 lambda来检查数字是否为三角形:
Triangular = lambda n:(8*n+1)**.5%1>0