def powers(L):
'''
(list of ints) -> bool
Return True if the given list of ints is a list of powers of some
int x of the form [x^0, x^1, x^2, x^3, ...] and False otherwise.
>>>powers[1, 3, 9, 27, 81]
True
'''
i = 1
x = L[0]
while i < len(L):
if L[i] == x**(i+1):
i += 1
return True
else:
return False
我已经改变了你为我指出的错误,但它仍然没有用。你能帮助我吗?
答案 0 :(得分:0)
def powx(l):
i = 0
x = l[1]
newL = []
while i < len(l):
if x**i == l[i]:
newL.append(x**i)
else:
return False
i+=1
if newL == l:
print(newL)
return True
a = [1,2,4,9]
b = [1,3,9,27]
powx(a)//应返回False
powx(b)//应该返回[1,3,9,27] True
答案 1 :(得分:0)
你不能在循环中返回True
,因为这将结束函数而不测试列表的其余部分。您的函数只检查列表的第二个元素,因为它在两种情况下都会返回。
知道一切都是数字的力量的方法是等到循环结束。如果它在循环期间从未返回False
,则所有内容都符合条件。出于某种原因,对于新程序员来说,这个一般概念似乎难以置信,因为我一直在这里看到这种错误模式。
def powers(L):
'''
(list of ints) -> bool
Return True if the given list of ints is a list of powers of some
int x of the form [x^0, x^1, x^2, x^3, ...] and False otherwise.
>>>powers[1, 3, 9, 27, 81]
True
'''
i = 0
x = L[1]
while i < len(L):
if L[i] != x**i:
return False
i += 1
return True
答案 2 :(得分:0)
很明显,列表中的第二个元素(以及不第一个元素)是x
,因为它是x**1
,您可以构建x
的所有幂的列表{1}}并将其与您的列表进行比较。
def powers(L):
return [L[1]**i for i in range(len(L))] == L