Skulpt在线模拟运行Python工具
程序员文章站
2023-11-21 22:48:40
1. Skulpt是一个完全依靠浏览器端模拟实现Python运行的工具 2. 不需要预处理、插件或服务器端支持,只需编写python并重新载入即可。 3. 由于代码完全是在浏览器中运行的,所以不必担心“服务器崩溃”问题。 github:https://github.com/skulpt/skulpt ......
1. skulpt是一个完全依靠浏览器端模拟实现python运行的工具
2. 不需要预处理、插件或服务器端支持,只需编写python并重新载入即可。
3. 由于代码完全是在浏览器中运行的,所以不必担心“服务器崩溃”问题。
github:
demo:
<html>
<head>
<script src="dist/skulpt.min.js" type="text/javascript"></script>
<script src="dist/skulpt-stdlib.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
function outf(text) {
var mypre = document.getelementbyid("output");
mypre.innerhtml = mypre.innerhtml + text;
}
function builtinread(x) {
if (sk.builtinfiles === undefined || sk.builtinfiles["files"][x] === undefined)
throw "file not found: '" + x + "'";
return sk.builtinfiles["files"][x];
}
function runit() {
var prog = document.getelementbyid("yourcode").value;
var mypre = document.getelementbyid("output");
mypre.innerhtml = '';
sk.pre = "output";
sk.configure({ output: outf, read: builtinread, __future__: sk.python3});
(sk.turtlegraphics || (sk.turtlegraphics = {})).target = 'mycanvas';
var mypromise = sk.misceval.asynctopromise(function() {
return sk.importmainwithbody("<stdin>", false, prog, true);
});
mypromise.then(function(mod) {
console.log('success');
},
function(err) {
console.log(err.tostring());
});
}
</script>
<h3>try this</h3>
<form>
<textarea id="yourcode" cols="80" rows="10">
import turtle
print('hello')
t = turtle.turtle()
t.color('red')
t.forward(75)
</textarea><br />
<button type="button" onclick="runit()">run</button>
</form>
<pre id="output" ></pre>
<div id="mycanvas"></div>
</body>
</html>
但是,有的问题,不能识别eval函数,不知道为什么?