当前位置: 首页 > news >正文

徐州网站建设市场/网络运营怎么做

徐州网站建设市场,网络运营怎么做,滨江区建设局网站,装饰设计资质乙级from flask import Flask, render_template, request, jsonify import sys from io import StringIO import contextlib import subprocess import importlib import threading import time import ast import reapp Flask(__name__)RESTRICTED_PACKAGES {tkinter: 抱歉&…

from flask import Flask, render_template, request, jsonify
import sys
from io import StringIO
import contextlib
import subprocess
import importlib
import threading
import time
import ast
import reapp = Flask(__name__)RESTRICTED_PACKAGES = {'tkinter': '抱歉,在线编译器不支持 tkinter,因为它需要图形界面环境。请在本地运行需要GUI的代码。','tk': '抱歉,在线编译器不支持 tk/tkinter,因为它需要图形界面环境。请在本地运行需要GUI的代码。','pygame': 'pygame将被转换为Web版本运行'  # 不再限制pygame,而是转换它
}def convert_tkinter_to_web(code):"""将tkinter代码转换为Web等效实现"""# 解析Python代码tree = ast.parse(code)# 提取窗口属性window_props = {'title': 'Python GUI','width': '700','height': '500','buttons': [],'labels': [],'entries': [],'layout': []}# 用于存储函数定义functions = {}# 首先收集所有函数定义for node in ast.walk(tree):if isinstance(node, ast.FunctionDef):functions[node.name] = ast.unparse(node)# 分析代码中的tkinter组件for node in ast.walk(tree):if isinstance(node, ast.Assign):if isinstance(node.value, ast.Call):# 提取窗口标题if hasattr(node.value.func, 'attr') and node.value.func.attr == 'Tk':for subnode in ast.walk(tree):if isinstance(subnode, ast.Call) and hasattr(subnode.func, 'attr'):if subnode.func.attr == 'title' and len(subnode.args) > 0:window_props['title'] = ast.literal_eval(subnode.args[0])elif subnode.func.attr == 'geometry' and len(subnode.args) > 0:geom = ast.literal_eval(subnode.args[0])match = re.match(r'(\d+)x(\d+)', geom)if match:window_props['width'] = match.group(1)window_props['height'] = match.group(2)# 提取按钮elif hasattr(node.value.func, 'attr') and node.value.func.attr == 'Button':button = {'text': 'Button', 'command': None}for kw in node.value.keywords:if kw.arg == 'text':button['text'] = ast.literal_eval(kw.value)elif kw.arg == 'command':# 处理不同类型的commandif isinstance(kw.value, ast.Name):# 简单的函数名button['command'] = kw.value.idelif isinstance(kw.value, ast.Lambda):# Lambda表达式button['command'] = f"lambda_{len(window_props['buttons'])}"functions[button['command']] = ast.unparse(kw.value)else:# 其他情况,尝试转换为字符串try:button['command'] = ast.unparse(kw.value)except:button['command'] = 'unknown_command'window_props['buttons'].append(button)# 提取标签elif hasattr(node.value.func, 'attr') and node.value.func.attr == 'Label':label = {'text': ''}for kw in node.value.keywords:if kw.arg == 'text':try:label['text'] = ast.literal_eval(kw.value)except:# 如果不是字面量,尝试直接转换为字符串label['text'] = ast.unparse(kw.value)window_props['labels'].append(label)# 提取输入框elif hasattr(node.value.func, 'attr') and node.value.func.attr == 'Entry':try:entry_id = node.targets[0].idexcept:entry_id = f"entry_{len(window_props['entries'])}"window_props['entries'].append({'id': entry_id})# 生成Web等效代码web_code = f"""
<!DOCTYPE html>
<div class="tk-window" style="width: {window_props['width']}px; height: {window_props['height']}px;"><div class="tk-title-bar">{window_props['title']}</div><div class="tk-content">
"""# 添加标签for label in window_props['labels']:web_code += f'        <div class="tk-label">{label["text"]}</div>\n'# 添加输入框for entry in window_props['entries']:web_code += f'        <input type="text" class="tk-entry" id="{entry["id"]}">\n'# 添加按钮for button in window_props['buttons']:command = button['command'] if button['command'] else ''web_code += f'        <button class="tk-button" onclick="tkButtonClick(\'{command}\')">{button["text"]}</button>\n'web_code += """    </div>
</div>
<script>
window.pythonFunctions = {
"""# 添加Python函数定义for func_name, func_code in functions.items():web_code += f"    '{func_name}': {func_code},\n"web_code += """};
</script>
"""return web_codedef convert_pygame_to_web(code):"""将pygame代码转换为Web Canvas实现"""web_code = """
<canvas id="pygame-canvas" style="border: 1px solid #000;"></canvas>
<script>
const canvas = document.getElementById('pygame-canvas');
const ctx = canvas.getContext('2d');// 设置画布大小
canvas.width = 800;
canvas.height = 600;// 模拟 pygame 的基本功能
const pygame = {display: {set_mode: (size) => {canvas.width = size[0];canvas.height = size[1];return canvas;},update: () => {// Canvas 自动更新},flip: () => {// Canvas 自动更新}},draw: {rect: (surface, color, rect) => {ctx.fillStyle = `rgb(${color[0]},${color[1]},${color[2]})`;ctx.fillRect(rect[0], rect[1], rect[2], rect[3]);},circle: (surface, color, pos, radius) => {ctx.beginPath();ctx.fillStyle = `rgb(${color[0]},${color[1]},${color[2]})`;ctx.arc(pos[0], pos[1], radius, 0, Math.PI * 2);ctx.fill();}},event: {get: () => [],  // 简化的事件处理pump: () => {}},init: () => {},quit: () => {},time: {Clock: function() {return {tick: (fps) => 1000/fps};}}
};// 转换后的Python代码
function runGame() {try {// 这里将插入转换后的游戏代码%PYTHON_CODE%} catch (error) {console.error('Game error:', error);}
}// 启动游戏循环
runGame();
</script>
"""# 处理 Python 代码try:tree = ast.parse(code)# 转换 Python 代码为 JavaScriptjs_code = convert_pygame_code_to_js(tree)web_code = web_code.replace('%PYTHON_CODE%', js_code)return web_codeexcept Exception as e:return f"<div class='error'>转换错误: {str(e)}</div>"def convert_pygame_code_to_js(tree):"""将 Python AST 转换为 JavaScript 代码"""js_code = []for node in ast.walk(tree):if isinstance(node, ast.Import):continue  # 跳过导入语句elif isinstance(node, ast.Assign):# 转换赋值语句if hasattr(node.value, 'func') and isinstance(node.value.func, ast.Attribute):if node.value.func.attr == 'set_mode':js_code.append(f"const screen = pygame.display.set_mode([{node.value.args[0].elts[0].n}, {node.value.args[0].elts[1].n}]);")elif isinstance(node, ast.While):# 转换游戏主循环js_code.append("function gameLoop() {")# ... 处理循环体js_code.append("    requestAnimationFrame(gameLoop);")js_code.append("}")js_code.append("gameLoop();")return "\n".join(js_code)def install_package(package):"""自动安装缺失的包"""# 检查是否是受限制的包if package.lower() in RESTRICTED_PACKAGES:raise ImportError(RESTRICTED_PACKAGES[package.lower()])try:importlib.import_module(package)except ImportError:try:# 尝试使用 pip 安装包subprocess.check_call([sys.executable, "-m", "pip", "install", package])except subprocess.CalledProcessError as e:raise Exception(f"安装包 {package} 失败: {str(e)}")def timeout_handler():"""强制终止超时的代码执行"""raise TimeoutError("代码执行超时(最大执行时间:5秒)")@app.route('/')
def index():return render_template('index.html')@app.route('/execute', methods=['POST'])
def execute_code():code = request.json.get('code', '')try:# 检测是否包含pygame代码if 'pygame' in code:web_code = convert_pygame_to_web(code)return jsonify({'status': 'success','output': '','gui': web_code})# 检测是否包含tkinter代码elif 'tkinter' in code or 'tk' in code:web_code = convert_tkinter_to_web(code)return jsonify({'status': 'success','output': '','gui': web_code})# 非GUI代码正常执行output_buffer = StringIO()with contextlib.redirect_stdout(output_buffer):exec(code, globals(), {})output = output_buffer.getvalue()return jsonify({'status': 'success','output': output if output else '程序执行完成,没有输出'})except Exception as e:return jsonify({'status': 'error','output': f'错误: {str(e)}'})if __name__ == '__main__':app.run(debug=True) 

相关文章:

Python在线编辑器

from flask import Flask, render_template, request, jsonify import sys from io import StringIO import contextlib import subprocess import importlib import threading import time import ast import reapp Flask(__name__)RESTRICTED_PACKAGES {tkinter: 抱歉&…...

蓝桥杯备考:高精度算法之除法

我们除法的高精度其实也不完全是高精度&#xff0c;而是一个高精度作被除数除以一个低精度 模拟我们的小学除法 由于题目中我们的除数最大是1e9&#xff0c;当它真正是1e9的时候&#xff0c;t是有可能超过1e9的&#xff0c;所以要用long long...

笔试-业务逻辑4

应用 小明在玩一个数字加减游戏&#xff0c;输入4个正整数&#xff1a;s、t、a、b&#xff0c;其中s>1&#xff0c;b<105&#xff0c;a!b。只使用加法或者减法&#xff0c;使得st。 每回合&#xff0c;小明用当前的数字&#xff0c;加上或减去一个数字&#xff1b;目前有…...

《Linux服务与安全管理》| 数据库服务器安装和配置

《Linux服务与安全管理》| 数据库服务器安装和配置 目录 《Linux服务与安全管理》| 数据库服务器安装和配置 任务一&#xff1a; 安装PostgreSQL数据库&#xff0c;设置远程登录&#xff0c;客户端可以成功登录并操作数据库。 任务二&#xff1a; 安装MySQL数据库&#xf…...

麦芯 (MachCore) 应用开发教程 6:一台设备中多台电脑主从机的设置

麦芯是构建在windows系统上的设备应用操作系统&#xff0c;利用该系统可以快速高效的开发一款设备专用软件。希望进一步了解请email: acloud163.com 黄国强 2025/02/03 在麦芯&#xff08;MachCore&#xff09;应用开发过程中&#xff0c;多机协同工作的场景十分常见&#xf…...

RAG 与历史信息相结合

初始化模型 # Step 4. 初始化模型, 该行初始化与 智谱 的 GLM - 4 模型进行连接&#xff0c;将其设置为处理和生成响应。 chat ChatZhipuAI(model"glm-4",temperature0.8, ) 此提示告诉模型接收聊天历史记录和用户的最新问题&#xff0c;然后重新表述问题&#x…...

99,[7] buuctf web [羊城杯2020]easyphp

进入靶场 <?php// 使用 scandir 函数扫描当前目录&#xff08;即脚本所在目录&#xff09;下的所有文件和文件夹// 该函数会返回一个包含目录下所有文件和文件夹名称的数组$files scandir(./); // 遍历扫描得到的文件和文件夹名称数组foreach($files as $file) {// 使用 …...

BUUCTF_[安洵杯 2019]easy_web(preg_match绕过/MD5强碰撞绕过/代码审计)

打开靶场&#xff0c;出现下面的静态html页面&#xff0c;也没有找到什么有价值的信息。 查看页面源代码 在url里发现了img传参还有cmd 求img参数 这里先从img传参入手&#xff0c;这里我发现img传参好像是base64的样子 进行解码&#xff0c;解码之后还像是base64的样子再次进…...

Vue05

目录 一、学习目标 1.自定义指令 2.插槽 3.综合案例&#xff1a;商品列表 4.路由入门 二、自定义指令 1.指令介绍 2.自定义指令 3.自定义指令的语法 三、自定义指令-指令的值 1.需求 2.语法 3.代码示例 五、插槽-默认插槽 1.作用 2.需求 4.使用插槽的基本语法…...

ubuntu18.04环境下,Zotero 中pdf translate划线后不翻译问题解决

问题&#xff1a; 如果使用fastgithub&#xff0c;在/etc/profile中设置全局代理&#xff0c;系统重启后会产生划线后不翻译的问题&#xff0c;包括所有翻译代理均不行。终端中取消fastgithub代理&#xff0c;也不行。 解决&#xff1a; 1&#xff09;不在/etc/profile中设置…...

基于Python的简单企业维修管理系统的设计与实现

以下是一个基于Python的简单企业维修管理系统的设计与实现&#xff0c;这里我们会使用Flask作为Web框架&#xff0c;SQLite作为数据库来存储相关信息。 1. 需求分析 企业维修管理系统主要功能包括&#xff1a; 维修工单的创建、查询、更新和删除。设备信息的管理。维修人员…...

【C++】B2120 单词的长度

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;我的做法代码实现&#xff1a;思路解析&#xff1a; &#x1f4af;老师的第一种做法代码实现&#xff1a;思路解析&#xff1a; &#x1f4af;老师的…...

2501,编写dll

DLL的优点 简单的说,dll有以下几个优点: 1)节省内存.同一个软件模块,若是源码重用,则会在不同可执行程序中编译,同时运行这些exe时,会在内存中重复加载这些模块的二进制码. 如果使用dll,则只在内存中加载一次,所有使用该dll的进程会共享此块内存(当然,每个进程会复制一份的d…...

【router路由的配置】

router路由的配置 App.vuerouter在main.ts引入插件 App.vue <template><RouterView /> </template><script setup lang"ts"></script><style scoped lang"scss"></style>router import { createRouter, creat…...

算法基础——一致性

引入 最早研究一致性的场景既不是大数据领域&#xff0c;也不是分布式系统&#xff0c;而是多路处理器。 可以将多路处理器理解为单机计算机系统内部的分布式场景&#xff0c;它有多个执行单元&#xff0c;每一个执行单元都有自己的存储(缓存)&#xff0c;一个执行单元修改了…...

刷题记录 动态规划-6: 62. 不同路径

题目&#xff1a;62. 不同路径 难度&#xff1a;中等 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#x…...

docker直接运行arm下的docker

运行环境是树莓派A 处理器是 arm32v6 安装了docker&#xff0c;运行lamp 编译安装php的时候发现要按天来算&#xff0c;于是用电脑vm下的Ubuntu系统运行arm的docker 然后打包到a直接导入运行就可以了 第一种方法 sudo apt install qemu-user-static 导入直接运行就可以了…...

014-STM32单片机实现矩阵薄膜键盘设计

1.功能说明 本设计主要是利用STM32驱动矩阵薄膜键盘&#xff0c;当按下按键后OLED显示屏上会对应显示当前的按键键值&#xff0c;可以将此设计扩展做成电子秤、超市收银机、计算器等需要多个按键操作的单片机应用。 2.硬件接线 模块管脚STM32单片机管脚矩阵键盘行1PA0矩阵键盘…...

Sentinel 断路器在Spring Cloud使用

文章目录 Sentinel 介绍同类对比微服务雪崩问题问题原因问题解决方案请求限流线程隔离失败处理服务熔断解决雪崩问题的常见方案有哪些&#xff1f; Sentineldocker 安装账号/ 密码项目导入簇点链路请求限流线程隔离Fallback服务掉线时的处理流程 服务熔断 Sentinel 介绍 随着微…...

[内网安全] 内网渗透 - 学习手册

这是一篇专栏的目录文档&#xff0c;方便读者系统性的学习&#xff0c;笔者后续会持续更新文档内容。 如果没有特殊情况的话&#xff0c;大概是一天两篇的速度。&#xff08;实验多或者节假日&#xff0c;可能会放缓&#xff09; 笔者也是一边学习一边记录笔记&#xff0c;如果…...

算法总结-二分查找

文章目录 1.搜索插入位置1.答案2.思路 2.搜索二维矩阵1.答案2.思路 3.寻找峰值1.答案2.思路 4.搜索旋转排序数组1.答案2.思路 5.在排序数组中查找元素的第一个和最后一个位置1.答案2.思路 6.寻找旋转排序数组中的最小值1.答案2.思路 1.搜索插入位置 1.答案 package com.sunxi…...

基于python的Kimi AI 聊天应用

因为这几天deepseek有点状况&#xff0c;导致apikey一直生成不了&#xff0c;用kimi练练手。这是一个基于 Moonshot AI 的 Kimi 接口开发的聊天应用程序&#xff0c;使用 Python Tkinter 构建图形界面。 项目结构 项目由三个主要Python文件组成&#xff1a; 1. main_kimi.py…...

动手学深度学习-3.2 线性回归的从0开始

以下是代码的逐段解析及其实际作用&#xff1a; 1. 环境设置与库导入 %matplotlib inline import random import torch from d2l import torch as d2l作用&#xff1a; %matplotlib inline&#xff1a;在 Jupyter Notebook 中内嵌显示 matplotlib 图形。random&#xff1a;生成…...

Spring 面试题【每日20道】【其二】

1、Spring MVC 具体的工作原理&#xff1f; 中等 Spring MVC 是 Spring 框架的一部分&#xff0c;专门用于构建基于Java的Web应用程序。它采用模型-视图-控制器&#xff08;MVC&#xff09;架构模式&#xff0c;有助于分离应用程序的不同方面&#xff0c;如输入逻辑、业务逻辑…...

嵌入式八股文面试题(一)C语言部分

1. 变量/函数的声明和定义的区别&#xff1f; &#xff08;1&#xff09;变量 定义不仅告知编译器变量的类型和名字&#xff0c;还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型&#xff0c;但并不为它分配内存空间…...

Vue06

目录 一、声明式导航-导航链接 1.需求 2.解决方案 3.通过router-link自带的两个样式进行高亮 二、声明式导航的两个类名 1.router-link-active 2.router-link-exact-active 三、声明式导航-自定义类名&#xff08;了解&#xff09; 1.问题 2.解决方案 3.代码演示 四…...

deepseek-r1模型本地win10部署

转载自大佬&#xff1a;高效快速教你deepseek如何进行本地部署并且可视化对话 deepseek 如果安装遇到这个问题 Error: Post “http://127.0.0.1:11434/api/show”: read tcp 127. 用管理员cmd打开 接着再去切换盘符d: cd 文件夹 重新下载模型&#xff1a;ollama run deepseek…...

自定义数据集 使用scikit-learn中SVM的包实现SVM分类

生成自定义数据集 生成一个简单的二维数据集&#xff0c;包含两类数据点&#xff0c;分别用不同的标签表示。 import numpy as np import matplotlib.pyplot as plt# 生成数据 np.random.seed(42) X np.r_[np.random.randn(100, 2) - [2, 2], np.random.randn(100, 2) [2, …...

pandas的melt方法使用

Pandas 的 melt 方法用于将宽格式&#xff08;wide format&#xff09;的 DataFrame 转换为长格式&#xff08;long format&#xff09;的 DataFrame。这种转换在数据处理和可视化中非常有用&#xff0c;尤其是在处理多列数据时。 宽格式 vs 长格式 宽格式&#xff08;Wide F…...

一文讲解Spring中应用的设计模式

我们都知道Spring 框架中用了蛮多设计模式的&#xff1a; 工厂模式呢&#xff0c;就是用来创建对象的&#xff0c;把对象的创建和使用分开&#xff0c;这样代码更灵活。代理模式呢&#xff0c;是用一个代理对象来控制对真实对象的访问&#xff0c;可以在访问前后做一些处理。单…...