Python 2.7 检查三角形数字的Python代码有什么问题?
所有测试用例都是假的。请告诉我我错了什么Python 2.7 检查三角形数字的Python代码有什么问题?,python-2.7,triangular,Python 2.7,Triangular,所有测试用例都是假的。请告诉我我错了什么any()返回布尔值,True或False。您正在将其与整数n进行比较。换行 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 或者更好的是,您可以删除整个if..
any()
返回布尔值,True或False。您正在将其与整数n
进行比较。换行
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
或者更好的是,您可以删除整个if..else
语句,并将其替换为:
if n in arr:
编辑:您甚至可以避免在一开始创建数组,如下所示:
return n in arr
当它发现n
是三角形时,立即返回True。如果它到达列表的末尾,但没有找到任何值,则返回false。尝试以下lambda:
def Triangular(n):
arr = []
for i in range(n):
if i*(i+1)/2 == n:
return True
return False
下面是它的工作原理:
n
乘以8减去1Triangular = lambda x: (0.5 * ((8 * x + 1) ** 0.5 - 1)).is_integer()
什么是测试用例?谢谢你的回答。这个解决方案的时间复杂度是多少?这在技术上是三角形的
1
上失败。作为一个单线性是三角形=λx:(0.5*((8*x+1)**0.5-1))。是整数()
Triangular = lambda n:(8*n+1)**.5%1>0