快速搭建一个一元二次方程flask应用

新建flask_service目录、templates子目录

flask_service
—— app.py
—— templates
—— —— index.html

app.py

from flask import Flask, request, jsonify, render_template
import random
import matplotlib.pyplot as plt
from io import BytesIO
import base64app = Flask(__name__)def generate_points(a, b, c, start_x, start_y, end_x, end_y, error_range_x, error_range_y, num_points):points = []step = 0.1  # 步长,可以根据需要调整count = 0while count < num_points:x = random.uniform(start_x, end_x)y_actual = a * x**2 + b * x + c# 在实际值附近加入一定的误差x_generated = x + random.uniform(-error_range_x, error_range_x)y_generated = y_actual + random.uniform(-error_range_y, error_range_y)# 确保生成的点在范围内if start_x <= x_generated <= end_x and start_y <= y_generated <= end_y:points.append((x_generated, y_generated))count += 1return points@app.route('/', methods=['GET', 'POST'])
def index():if request.method == 'POST':a = float(request.form['a'])b = float(request.form['b'])c = float(request.form['c'])start_x = float(request.form['start_x'])start_y = float(request.form['start_y'])end_x = float(request.form['end_x'])end_y = float(request.form['end_y'])error_range_x = float(request.form['error_range_x'])error_range_y = float(request.form['error_range_y'])num_points = int(request.form['num_points'])points = generate_points(a, b, c, start_x, start_y, end_x, end_y, error_range_x, error_range_y, num_points)x_values = [point[0] for point in points]y_values = [point[1] for point in points]plt.figure(figsize=(8, 6))plt.scatter(x_values, y_values, color='blue', label='Generated Points')plt.xlabel('X')plt.ylabel('Y')plt.title('Scatter Plot of Generated Points')plt.axhline(0, color='black', linewidth=0.5)plt.axvline(0, color='black', linewidth=0.5)plt.grid(True)plt.legend()# Convert plot to base64 stringimg_data = BytesIO()plt.savefig(img_data, format='png')img_data.seek(0)img_base64 = base64.b64encode(img_data.getvalue()).decode()plt.close()# 准备要传递给模板的数据info = {'img_base64': img_base64,'a': a,'b': b,'c': c,'start_x': start_x,'start_y': start_y,'end_x': end_x,'end_y': end_y,'error_range_x': error_range_x,'error_range_y': error_range_y,'num_points': num_points}return render_template('plot.html', info=info)return render_template('index.html')if __name__ == '__main__':from flask import Flask, request, jsonify, render_template
import random
import matplotlib.pyplot as plt
from io import BytesIO
import base64app = Flask(__name__)def generate_points(a, b, c, start_x, start_y, end_x, end_y, error_range_x, error_range_y, num_points):points = []step = 0.1  # 步长,可以根据需要调整count = 0while count < num_points:x = random.uniform(start_x, end_x)y_actual = a * x**2 + b * x + c# 在实际值附近加入一定的误差x_generated = x + random.uniform(-error_range_x, error_range_x)y_generated = y_actual + random.uniform(-error_range_y, error_range_y)# 确保生成的点在范围内if start_x <= x_generated <= end_x and start_y <= y_generated <= end_y:points.append((x_generated, y_generated))count += 1return points@app.route('/', methods=['GET', 'POST'])
def index():if request.method == 'POST':a = float(request.form['a'])b = float(request.form['b'])c = float(request.form['c'])start_x = float(request.form['start_x'])start_y = float(request.form['start_y'])end_x = float(request.form['end_x'])end_y = float(request.form['end_y'])error_range_x = float(request.form['error_range_x'])error_range_y = float(request.form['error_range_y'])num_points = int(request.form['num_points'])points = generate_points(a, b, c, start_x, start_y, end_x, end_y, error_range_x, error_range_y, num_points)x_values = [point[0] for point in points]y_values = [point[1] for point in points]plt.figure(figsize=(8, 6))plt.scatter(x_values, y_values, color='blue')plt.xlabel('X')plt.ylabel('Y')plt.title('Scatter Plot of Generated Points')plt.axhline(0, color='black', linewidth=0.5)plt.axvline(0, color='black', linewidth=0.5)plt.grid(True)plt.legend()# Convert plot to base64 stringimg_data = BytesIO()plt.savefig(img_data, format='png')img_data.seek(0)img_base64 = base64.b64encode(img_data.getvalue()).decode()plt.close()# 准备要传递给模板的数据info = {'img_base64': img_base64,'points': points,'a': a,'b': b,'c': c,'start_x': start_x,'start_y': start_y,'end_x': end_x,'end_y': end_y,'error_range_x': error_range_x,'error_range_y': error_range_y,'num_points': num_points}return render_template('index.html', info=info, points=points)return render_template('index.html')if __name__ == '__main__':app.run(host='0.0.0.0', port=5000, debug=True)

index.html

<!DOCTYPE html>
<html>
<head><title>Generate Points</title><style>.container {display: flex;flex-direction: row;align-items: flex-start;justify-content: space-between;}.form-container {width: 50%;margin-right: 20px;}.image-container {width: 50%; /* 调整图形容器宽度 */margin: 0 auto; /* 居中显示图形容器 */}        img {max-width: 100%;height: auto;}</style>
</head>
<body><h1>Generate Points</h1><div class="container"><div class="form-container"><form method="POST"><label for="a">二次项系数 a:</label><input type="number" id="a" name="a" value="0"><br><br><label for="b">一次项系数 b:</label><input type="number" id="b" name="b" value="-2"><br><br><label for="c">常数项系数 c:</label><input type="number" id="c" name="c" value="1"><br><br><label for="start_x">起始 x:</label><input type="number" id="start_x" name="start_x" value="-5"><br><br><label for="start_y">起始 y:</label><input type="number" id="start_y" name="start_y" value="-5"><br><br><label for="end_x">结束 x:</label><input type="number" id="end_x" name="end_x" value="5"><br><br><label for="end_y">结束 y:</label><input type="number" id="end_y" name="end_y" value="5"><br><br><label for="error_range_x">x轴方向的误差范围:</label><input type="number" id="error_range_x" name="error_range_x" step="0.1" value="0.2"><br><br><label for="error_range_y">y轴方向的误差范围:</label><input type="number" id="error_range_y" name="error_range_y" step="0.1" value="0.5"><br><br><label for="num_points">生成的点的个数:</label><input type="number" id="num_points" name="num_points" value="50"><br><br><input type="submit" value="生成图形"></form>{% if info %}<h2>图片信息:</h2><p>二次项系数 a: {{ info['a'] }}</p><p>一次项系数 b: {{ info['b'] }}</p><p>常数项系数 c: {{ info['c'] }}</p><p>起始 x: {{ info['start_x'] }}</p><p>起始 y: {{ info['start_y'] }}</p><p>结束 x: {{ info['end_x'] }}</p><p>结束 y: {{ info['end_y'] }}</p><p>x轴方向的误差范围: {{ info['error_range_x'] }}</p><p>y轴方向的误差范围: {{ info['error_range_y'] }}</p><p>生成的点的个数: {{ info['num_points'] }}</p><h2>点的坐标:</h2><ul>{% for point in points %}<li>{{ point[0] }}, {{ point[1] }}</li>{% endfor %}</ul>{% endif %}</div><div class="image-container">{% if info %}<img src="data:image/png;base64,{{ info['img_base64'] }}" alt="Generated Plot">{% endif %}</div></div>
</body>
</html>

nohup 后台启动

[root@hecs-334217 flask_service]# nohup python3 app.py &
[3] 7178

页面效果

在这里插入图片描述
点击生成图形
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/549251.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【全开源】零点城市社交电商系统源码-最新版|博纳软云

零点城市社交电商系统源码——引领未来社交电商新潮流 在当今数字化时代&#xff0c;社交电商已经成为商业领域的一股新势力。零点城市社交电商系统源码&#xff0c;正是这一新潮流的引领者&#xff0c;以其独特的创新理念和强大的技术实力&#xff0c;助力企业快速搭建高效、…

每周编辑精选|微软开源 Orca-Math 高质量数学数据集、清华大学研究团队发布条件去噪扩散模型 SPDiff...

Orca-Math 是微软研究院发布的数学推理模型&#xff0c;该模型展示了较小的专业模型在特定领域的价值&#xff0c;它们可以匹配甚至超越更大模型的性能。微软近期开源了用于训练 Orca-Math 的 Orca-Math-200K 数学单词问题数据集&#xff0c;现已在 hyper.ai 官网提供下载&…

熵权法计算权重

文章目录 1. 多属性决策问题2. 熵&#xff08;entropy&#xff09;3. 信息熵4. 熵权法5. 熵权法的实现 基于信息论的熵值法是根据各指标所含信息有序程度的差异性来确定指标权重的客观赋权方法&#xff0c;仅依赖于数据本身的离散程度。 熵用于度量不确定性&#xff0c;指标的离…

机器学习-04-分类算法-04-支持向量机SVM

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中分类算法&#xff0c;本篇为分类算法与SVM算法部分。 本门课程的目标 完成一个特定行业的算法应用全过程&#xff1a; 懂业务会选择合适的算法数据处理算法训练算法调优算法融合 算法评估持续调优工程化…

2、高级语言的语法描述

常用的高级程序设计语言 程序语言的定义 语法 一组规则&#xff0c;用它可以形成和产生合适的程序 词法规则&#xff1a;单词符号的形成规则。 单词符号的形成规则单词符号是语言中具有独立意义的最基本结构 一般包括:常数、标识符、基本字、算符、界符等 描述工具:有限自动机…

LabVIEW飞行器螺旋桨性能测试与数据监控

LabVIEW飞行器螺旋桨性能测试与数据监控 开发LabVIEW的电动飞行器螺旋桨性能测试与数据监控系统&#xff0c;专门针对电动飞行器螺旋桨在运行过程中的性能测试和监控需求。通过采集转速、转矩、拉力和温度等关键参数&#xff0c;系统能够实时监测和分析螺旋桨的状态&#xff0…

git tag标签使用

创建标签 git checkout test git tag -a v1.0.0 -m v1.0.0里程碑版本 git push origin v1.0.0 删除标签 git tag -d v1.0.0 git push origin :refs/tags/v1.0.0远程分支可以直接在页面删除

spring-boot-starter-thymeleaf加载外部html文件

在Spring MVC中&#xff0c;我们可以使用Thymeleaf模板引擎来实现加载外部HTML文件。 1.Thymeleaf介绍 Thymeleaf是一种现代化的服务器端Java模板引擎&#xff0c;用于构建漂亮、可维护且易于测试的动态Web应用程序。它适用于与Spring框架集成&#xff0c;并且可以与Spring M…

纳米阱可提高未来光学设备的光强度

一种配置光捕获器件的方法有望通过放大光和提高发光纳米材料的发射效率来获得更好的光学纳米器件&#xff0c;而无需复杂的技术升级。 强光束对于从医学到电子产品的无数应用至关重要&#xff0c;但使用日常光源生产它们具有挑战性。然而&#xff0c;它们可以由激光产生。激光…

Python大数据实践:selenium爬取京东评论数据

准备工作 selenium安装 Selenium是广泛使用的模拟浏览器运行的库&#xff0c;用于Web应用程序测试。 Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样&#xff0c;并且支持大多数现代 Web 浏览器。 #终端pip安装 pip install selenium #清华镜像安装 p…

容器部署对比:通用容器部署 vs 使用腾讯云容器镜像服务(TCR)部署 Stable Diffusion

目录 引言1 通用容器部署的主要步骤1.1 准备环境1.2 构建 Docker 镜像1.3 上传镜像1.4 部署容器1.5 配置网络1.6 监控和维护 2 使用腾讯云容器镜像服务&#xff08;TCR&#xff09;部署的主要步骤2.1 下载 Stable Diffusion web UI 代码2.2 制作 Docker 镜像2.3 上传镜像到 TCR…

27. 移除元素 (Swift版本)

题目描述 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出…