繁体   English   中英

在URL端点内的烧瓶应用程序中显示小于或等于输入数字的斐波那契序列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM