快速搭建一个一元二次方程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')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}# 按照 x 轴从小到大排序points.sort(key=lambda point: point[0])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="text" id="a" name="a" value="0"><br><br><label for="b">一次项系数 b:</label><input type="text" id="b" name="b" value="-2"><br><br><label for="c">常数项系数 c:</label><input type="text" id="c" name="c" value="1"><br><br><label for="start_x">起始 x:</label><input type="text" id="start_x" name="start_x" value="-5"><br><br><label for="start_y">起始 y:</label><input type="text" id="start_y" name="start_y" value="-5"><br><br><label for="end_x">结束 x:</label><input type="text" id="end_x" name="end_x" value="5"><br><br><label for="end_y">结束 y:</label><input type="text" id="end_y" name="end_y" value="5"><br><br><label for="error_range_x">x轴方向的误差范围:</label><input type="text" 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="text" id="error_range_y" name="error_range_y" step="0.1" value="0.5"><br><br><label for="num_points">生成的点的个数:</label><input type="text" 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 > app.log 2>&1 &
[3] 7178
页面效果

点击生成图形

相关文章:
快速搭建一个一元二次方程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 F…...
O2OA红头文件流转与O2OA版式公文编辑器基本使用
O2OA开发平台在流程管理中,提供了符合国家党政机关公文格式标准(GB/T 9704—2012)的公文编辑组件,可以让用户在包含公文管理的项目实施过程中,轻松地实现标准化公文格式的在线编辑、痕迹保留、手写签批等功能。并且可以…...
软件测试:C++ Google Test单元测试框架GTest
目录 编译和安装框架使用AssertionsGoogle TestingGoogle MockingMatchersActions 运行结果 最近在写项目的时候,学到了许多关于软件测试的知识,也不断的使用新的测试框架和测试工具,每次总是机械式的拼接其他人的代码,代码发生错…...
大数据面试题 —— HBase
目录 什么是HBase简述HBase 的数据模型HBase 的读写流程HBase 在写的过程中的region的split的时机HBase 和 HDFS 各自的使用场景HBase 的存储结构HBase 中的热现象(数据倾斜)是怎么产生的,以及解决办法有哪些HBase rowkey的设计原则HBase 的列…...
SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测
SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测 目录 SCI一区 | Matlab实现GWO-TCN-BiGRU-Attention灰狼算法优化时间卷积双向门控循环单元融合注意力机制多变量时间序列预测预测效果基本介绍模型描述程序…...
SpringMVC的执行原理
SpringMVC的执行原理可以简单地概括为以下几个步骤: 客户端发送请求:客户端(一般是浏览器)发送HTTP请求到服务器,请求特定的URL资源。 前端控制器(DispatcherServlet)接收请求:在Sp…...
Qt + HTTP 线程交互类封装
介绍 QT的HTTP模块封装的交互类,线程运行。使用时添加自己的业务逻辑即可 代码 头文件 /*** file httpcontroller.h* brief 云台相机的协议交互类* author xintong-zhou* date 2024-03-13*/#ifndef HTTPCONTROLLER_H #define HTTPCONTROLLER_H#include <QNet…...
GitHub Copilot+ESP开发实战-串口
上篇文章讲了GitHub Copilot在应用中可能遇到的问题,接下来小启就简单介绍下GitHub Copilot在ESP32开发中C语言实现串口功能,感兴趣的可以看看。 一、向Copilot提问: 1. ESP32用C语言实现串口初始化; 2.配置uart为1,…...
C# 使用ffmpeg将图片保存为mp4视频
使用 FFmpeg 这个强大的多媒体处理工具,可以轻松地将一系列图片转换为一个 MP4 视频文件。以下是一个基本的命令行示例来完成这个任务: ffmpeg -framerate 25 -i image-%03d.jpg -c:v libx264 -r 30 -pix_fmt yuv420p output.mp4 命令参数说明…...
Java安全技术及代码审计技巧
概述 Java安全编码和代码审计是确保Java应用程序安全性的重要环节。本文旨在介绍Java中常见的Web漏洞、安全编码示例以及一些常见漏洞函数,并提供一个自动化查找危险函数的Python脚本。 1. XML外部实体 (XXE) 漏洞 介绍 XML文档结构包括XML声明、DTD文档类型定义&…...
C# 使用OpenCvSharp4将Bitmap合成为MP4视频的环境
环境安装步骤: 在VS中选中项目或者解决方案,鼠标右键,选择“管理Nuget包”,在浏览窗口中搜索OpenCVSharp4 1.搜索OpenCvSharp4,选择4.8.0版本,点击安装 2.搜索OpenCvSharp4.runtime.win,选择4.8.0版本,点…...
[游戏开发][Unity] 导出Xcode工程,完成调试与发布
Unity导出Xcode工程(模拟器版本与真机调试) [游戏开发][Unity] 打包Xcode工程模拟器真机调试_unity5 打包xcod-CSDN博客 Unity导出发布版本Xcode工程,上传app到官网,正式发布或创建TestFlight Xcode发布AppStore与TestFlight全流程_xcode 上传到testfit-…...
JSONP 实现跨域请求案例
后端使用 express 搭建,案例代码如下: const express require(express)const app express() const PORT 3000app.get(/data, (req, res) > {const jsonData {name: Alan,age: 666,city: GD}const callback req.query.callback // 获取前端中的回…...
2024年智慧城市、人文发展与区域经济国际会议(ICSCCDRE 2024)
2024年智慧城市、人文发展与区域经济国际会议(ICSCCDRE 2024) 2024 International Conference on Smart Cities, Cultural Development and Regional Economy 会议简介: 城市经济人文发展是一个综合性的过程,它关注城市在经济、…...
目标检测——PP-YOLO算法解读
PP-YOLO系列,均是基于百度自研PaddlePaddle深度学习框架发布的算法,2020年基于YOLOv3改进发布PP-YOLO,2021年发布PP-YOLOv2和移动端检测算法PP-PicoDet,2022年发布PP-YOLOE和PP-YOLOE-R。由于均是一个系列,所以放一起解…...
多特征变量序列预测(11) 基于Pytorch的TCN-GRU预测模型
往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测(一)数据集介绍和预处理-CSDN博客 风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测ÿ…...
Lvs+keepalived+nginx搭建高可用负载均衡集群
环境配置 master主机192.168.199.149,虚拟IP192.168.199.148 back备机192.168.199.150 真实服务器1 192.168.199.155 真实服务器2 192.168.199.156 关闭防火墙和selinux master配置(149) 添加虚拟IP ip addr add 192.168.199.148/24 …...
WPF —— 控件模版和数据模版
1:控件模版简介: 自定义控件模版:自己添加的样式、标签,控件模版也是属于资源的一种, 每一个控件模版都有一唯一的 key,在控件上通过template属性进行绑定 什么场景下使用自定义控件模版,当项目里面多个地方…...
如何动态修改spring中定时任务的调度策略(1)
在我们日常开发中经常会调度工具来处理一下需要定时执行的任务,比如定时导出报表数据给业务方发送邮件。你在工作中是如何这种定时调度? 如何实现调度任务 使用java技术栈的老铁来说,现成定时调度的解决方案应该有很多,总结来说…...
idea import的maven类报红
idea 报红/显示红色的原因 一般报红,显示红色,是因为 idea 在此路径下,找不到这个类。 找到是哪个 jar 包的类导致 idea 报红 点击报红的路径的上一层,进入jar 包。比如: import com.aaa.bbb.ccc.DddDto;这个 impo…...
芋道视频199 - 工作流 - 数据流转图 - ruoyi-vue-pro
1. 工作流引擎与Ruoyi-Vue-Pro的深度整合 在Ruoyi-Vue-Pro项目中,工作流引擎扮演着业务流程自动化的核心角色。以请假流程为例,从员工提交申请到领导审批再到HR备案,整个流程涉及多角色协作和状态流转。Flowable作为底层引擎,通过…...
谷歌推出两款全新TPU芯片,驱动AI训练与推理新浪潮
谷歌有限责任公司在2026年谷歌云Next大会上发布了两款专为人工智能设计的定制芯片,推出了分别面向训练与推理任务的两种张量处理器(TPU)架构:第八代TPU 8t与TPU 8i。谷歌表示,这两款芯片的设计初衷是应对下一代AI工作负…...
如何快速为所有Win32应用添加Mica效果:Mica For Everyone完整指南
如何快速为所有Win32应用添加Mica效果:Mica For Everyone完整指南 【免费下载链接】MicaForEveryone Mica For Everyone is a tool to enable backdrop effects on the title bars of Win32 apps on Windows 11. 项目地址: https://gitcode.com/gh_mirrors/mi/Mic…...
Cesium标绘进阶:从静态Entity到动态Primitive的性能优化指南
Cesium标绘进阶:从静态Entity到动态Primitive的性能优化指南 当你的Cesium场景开始加载成千上万的动态标绘对象时,是否遇到过明显的性能下降?帧率骤降、交互卡顿、内存占用飙升——这些常见问题往往源于对Entity API的过度依赖。本文将带你深…...
Citra 3DS模拟器完整教程:如何在PC上免费畅玩任天堂3DS游戏
Citra 3DS模拟器完整教程:如何在PC上免费畅玩任天堂3DS游戏 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/gh_mirrors/cit/citra 想要在个人电脑上重温《精灵宝可梦》、《塞尔达传说》等任天堂3DS独占大作吗?Ci…...
5大核心功能揭秘:Pearcleaner如何成为macOS系统清理的终极解决方案
5大核心功能揭秘:Pearcleaner如何成为macOS系统清理的终极解决方案 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 在macOS系统中,应…...
1.2 配置开发环境(VS Code / PyCharm)
配置 VS Code 开发环境 安装 VS Code 从 VS Code 官网 下载对应操作系统的安装包,完成安装后启动。 安装 Python 扩展 在扩展市场中搜索 Python,安装官方提供的扩展以支持语法高亮、调试等功能。 配置 Python 解释器 按下 CtrlShiftP 打开命令面板&am…...
技术迭代与未来趋势—晶体谐振器与振荡器发展与创新
晶体谐振器与振荡器自 20 世纪初发明以来,历经百年发展,已从最初的低频、低精度、大体积器件,迭代为高频、超高精度、微型化、低功耗的核心电子元件,支撑着通信、导航、工业控制、消费电子等产业的飞速发展。 一、传统石英晶振…...
PICO4系统升级到5.7.1后,MRTK3手部模型异常?手把手教你修复关节翻转与射线问题
PICO4系统升级5.7.1后MRTK3手部模型异常修复指南 当PICO4设备系统升级到5.7.1版本后,许多开发者在使用MRTK3进行混合现实开发时遇到了手部模型异常的问题。这些问题包括手部模型位置翻转、关节扭曲以及左手射线方向错误等。本文将深入分析问题根源,并提供…...
【手撕C++】string入门:字符串加法实战
目录 前言 题目:字符串相加(LeetCode 415) 思路:模拟竖式加法 完整代码1: 完善代码2: 代码逐行 测试用例 新手必看:方法全解坑 坑1:判断条件写错,导致数组越界 坑…...
