该函数应该取一个整数,生成该整数范围内的三角形数列表,检查该列表中最长的数字列表,其总和==数字并将它们返回到列表中,否则如果没有在三角数范围内的这样的列表,返回一个空列表。我以为我有点了,它在python tutor.com上运行,但是当我在IDLE中运行它时,没有任何反应。
def checkio(number):
x = 4
lst = [1, 3, 6]
new = []
if number == 0:
return []
elif number == 1:
return [1]
elif number == 3:
return []
elif number == 6:
return []
elif number == 4:
return [1, 3]
elif number == 7:
return [1, 6]
elif number == 10:
return [1, 3, 6]
elif number > 10:
while number > lst[-1]: # Generates a list of all the triangular numbers up to number
for item in range(lst[-1]):
lst.append(x + lst[-1])
x += 1
go = []
start = 0
end = 0
count = 0
while count < len(lst) * 2:
if sum(lst[start:end+1]) < number:
end += 1
count += 1
elif sum(lst[start:end+1]) > number:
start += 1
count += 1
elif sum(lst[start:end+1]) == number:
go.append(lst[start:end+1])
break
return go
if count >= len(lst) * 2:
return []
答案 0 :(得分:2)
在您发布的代码中,您只是声明一个函数。要运行它,您必须对该函数进行调用。在你的情况下,它接收一个参数,所以你必须在括号()
内传递它:
number = 5 # for example
checkio(number) # this is the function call
答案 1 :(得分:1)
正如Bakuriu评论的那样:如果你想得到一个结果改变这一行的顺序:
elif sum(lst[start:end+1]) == number:
go.append(lst[start:end+1])
break
return go
致:
elif sum(lst[start:end+1]) == number:
go.append(lst[start:end+1])
return go
break
这将在转义while循环之前返回一个值。正如评论中所述(感谢Andrea Corbellini),你也可以删除break语句,它会很好用。因为按定义返回语句之后会转义函数。
一旦定义(你复制代码并按下返回),也要在空闲状态下运行,按照Christian的说法调用它。
这样你就可以检查是否有效
请注意,您不必在ifelse
条款中查看数字2,5,8和9.如果您使用checkio(5)
调用此函数,就像Crhistian建议的那样,它将不会返回任何内容因为它没有任何东西可以归还!