[英]Display Fibonnaci Sequence less than or equal to an input number in a flask app within a URL endpoint
我正在使用flask应用程序和url端点来允许输入数字。 然后,我要显示斐波那契序列,直到它等于或小于输入的数字。
这是我目前拥有的:
@app.route("/fibonacci/<int:param_fi>/")
def getFib(param_fi):
if param_fi < 2:
return ('0,1,1')
else:
L = getFib(param_fi-1)
if L[-1] < param_fi:
L.append(L[-1] + L[-2])
return L
我在查明错误的确切位置时遇到了麻烦。 我曾尝试制作一个列表并将其转换为字符串,但无法使其正常工作。 当我尝试此操作时,它返回以下错误:“视图函数未返回有效的响应。返回类型必须是字符串,元组,Response实例或WSGI可调用,但它是一个列表。”
我正在寻找以下输出:
/ fibonacci / 250(这是用户输入)/
0,1,1,2,3,5,8,13,21,34,55,89,144,233
或/ fibonacci / 90(这是用户输入)/
0,1,1,2,3,5,8,13,21,34,55,89
任何帮助表示赞赏。
最后
@app.route("/fibonacci/<int:param_fi>/")
def getFib(param_fi):
i = 0
j = 1
sequence = []
current_operation = 0
index = 0
while True:
sequence.append(i)
current_operation = i + j
i = j
j = current_operation
if i > param_fi:
return json.dumps(sequence)
else:
index += 1
return json.dumps(sequence)
我不理解错误,可以输出想要的结果吗? 您是否需要像否一样进行递归?
但是我想你缺少什么了吗? 您只返回0或1,或两者之和,因此,是的,您将永远不会拥有斐波那契的完整序列。
您至少需要将序列保留在内存中,或者至少每次返回一个列表并添加元素。
编辑 https://repl.it/@skapin/AcceptableFoolishAssembly语言
def fibo(params):
i = 0
j = 1
sequence = []
current_operation = 0
for current_n in range(0, params+1):
# We appends now, since f(0) = 0 = i_initial , f(1) = 1 =j_initial
sequence.append(i)
# prepare next opération
current_operation = i + j
i = j
j = current_operation
return sequence
print(fibo(10))
EDIT2瓶
from flask import jsonify
@app.route("/fibonacci/<int:param_fi>/")
def get_fibo(param_fi):
return jsonify(fibo(param_fi))
最后
from flask import jsonify
def fibo(params):
i = 0
j = 1
sequence = []
current_operation = 0
index = 0
while True:
# We appends now, since f(0) = 0 = i_initial , f(1) = 1 =j_initial
sequence.append(i)
# prepare next opération
current_operation = i + j
i = j
j = current_operation
# Stop condition
if i > params:
return sequence
else:
index += 1
return sequence
@app.route("/fibonacci/<int:param_fi>/")
def get_fibo(param_fi):
return jsonify(fibo(param_fi))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.