ホームページ >バックエンド開発 >PHPチュートリアル >コードとプログラミングの質問をオンライン クイズに追加する方法

コードとプログラミングの質問をオンライン クイズに追加する方法

王林
王林オリジナル
2023-09-27 23:03:151449ブラウズ

コードとプログラミングの質問をオンライン クイズに追加する方法

オンライン回答質問に質問のコードとプログラミングの質問を追加するには、特定のコード例が必要です

インターネットの発展に伴い、オンライン学習とオンライン試験がトレンドになってきました。オンライン試験では、プログラミングの問題がよく出題されます。オンライン質問応答プラットフォームに質問コードやプログラミングの質問をどのように追加するかが重要な問題となっています。この記事では、特定のコード例を通じてこの機能を実装する方法を説明します。

まず、オンライン質問応答プラットフォームに質問のコードを追加できるようにするには、コードの編集と実行をサポートするフレームワークが必要です。現在、Ace Editor や CodeMirror などのオープン ソース コード エディターを使用する方が一般的です。これらのエディターは、コードの強調表示、オートコンプリート、コードの書式設定などの機能を提供しており、オンライン クイズでコードを編集および表示するのに非常に適しています。

次に、ユーザーが入力したコードを実行するためにサーバーに送信する方法の問題を解決する必要があります。一般的な方法は、ユーザーが入力したコードをバックエンド サーバー インターフェイスを介して処理するためにバックエンドに渡し、実行結果を取得することです。これは、PHP、Python、Node.js などのサーバー側スクリプト言語を使用して実現できます。 Node.js を使用したサンプル コードを次に示します。

// 引入依赖库
const express = require('express');
const bodyParser = require('body-parser');
const { spawn } = require('child_process');

// 创建Express应用
const app = express();

// 配置body-parser中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// 处理POST请求
app.post('/run', (req, res) => {
  // 获取用户输入的代码
  const code = req.body.code;

  // 创建子进程来执行代码
  const childProcess = spawn('python', ['-c', code]);

  // 监听子进程的输出
  childProcess.stdout.on('data', (data) => {
    // 将输出返回给客户端
    res.send(data.toString());
  });

  // 监听子进程的错误输出
  childProcess.stderr.on('data', (data) => {
    // 将错误信息返回给客户端
    res.status(500).send(data.toString());
  });
});

// 启动服务器
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

上記のコードは、Express フレームワークを使用して単純な HTTP サーバーを作成し、/run ルートを通じてユーザー コードの送信を受け入れ、# を使用します。 ##child_processモジュールは、コードを実行するための子プロセスを作成します。実行結果はHTTPレスポンスでクライアントに返されます。

最後に、質問のコードとプログラミングに関する質問をオンライン質問応答プラットフォームに表示する必要があります。これは、コード エディターとトピックの説明を Web ページに埋め込むことで実現できます。以下は、Ace Editor と HTML を使用したサンプル コードです。

<!DOCTYPE html>
<html>
<head>
  <title>在线答题</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ace.js"></script>
</head>
<body>
  <div>
    <h2>程序设计题</h2>
    <p>请编写一个程序,输出从1到n之间所有的素数。</p>
    <div id="editor" style="width: 500px; height: 300px;"></div>
    <button onclick="runCode()">运行代码</button>
    <pre id="output">
<script> // 创建编辑器实例 const editor = ace.edit('editor'); editor.setTheme('ace/theme/twilight'); editor.getSession().setMode('ace/mode/python'); // 运行代码 function runCode() { const code = editor.getValue(); // 发送请求 fetch('/run', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ code }), }) .then(response => response.text()) .then(output => { // 显示运行结果 document.getElementById('output').textContent = output; }) .catch(error => { console.error(error); alert('运行出错'); }); } </script>

以上がコードとプログラミングの質問をオンライン クイズに追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。