使用Flask从URL取参计算指定范围内倍数之和的问题解决
Flask实现URL参数获取与倍数求和功能的调试过程
需求概述
基于Python Flask框架,从URL查询参数中读取数值,计算指定数值的所有倍数在设定范围内的总和。例如:计算4的倍数到50的总和,结果为312。
初始错误代码及问题
以下是最初编写的错误代码,核心问题在于while循环的递增逻辑错误:
# import main Flask class and request object from flask import Flask, request # create the Flask app app = Flask(__name__) @app.route('/data') def query_example(): num = request.args.get('num') count = request.args.get('count') num_int = int(num) count_int = int(count) i = 1 sum = 0 while i <= count_int: if i % num_int == 0: sum += i i += 1 ans = sum return ans if __name__ == '__main__': # run app in debug mode on port 5000 app.run(debug=True, port=5000)
错误点:i +=1仅在i是num_int的倍数时执行,当i不满足倍数条件时,i的值永远不会变化,直接导致死循环,程序无法正常结束。
调试中的其他问题
在修正死循环问题的过程中,还遇到过变量命名混淆、循环范围判断错误等问题,经过多次调试调整后,最终得到可正常运行的代码版本。
最终可运行代码
from flask import Flask, request app = Flask(__name__) @app.route('/data') def query_example(): # if key doesn't exist, returns None name = request.args.get('name') num1 = request.args['num1'] num2 = request.args['num2'] num1_int = int(num1) num2_int = int(num2) multiply = num1_int * num2_int i = 1 sum2 = 0 while i < num1_int: if i % num2_int == 0: sum2 += i i += 1 aaa = sum2 return ''' <h1>The name is: {}</h1> <h1>The num1 is: {}</h1> <h1>The num2 is: {}</h1> <h1>The multiply is: {}</h1> <h1>The sum2 is: {}</h1> '''.format(name, num1_int, num2_int, multiply, aaa) if __name__ == '__main__': # run app in debug mode on port 5000 app.run(debug=True, port=5000)
使用方式
通过构造包含查询参数的URL访问,例如:http://127.0.0.1:5000/data?name=test&num1=20&num2=2
其中:
num1表示范围上限(计算小于该值的数)num2表示要计算倍数的目标数
程序会返回范围内num2的所有倍数的总和,同时展示其他参数信息。
内容的提问来源于stack exchange,提问作者j ton
相关产品推荐
相关产品推荐

