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

王林
リリース: 2023-09-28 06:00:01
オリジナル
1396 人が閲覧しました

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

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

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

まず、オンライン質問応答プラットフォームに質問のコードを追加できるようにするには、コードの編集と実行をサポートするフレームワークが必要です。現在、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> 上記のコードは、コードを編集するための埋め込み JavaScript コードを通じて Ace Editor インスタンスを作成します。 [コードを実行] ボタンをクリックした後、

fetch 関数を通じて HTTP POST リクエストをサーバーに送信し、コードを JSON データ本体として送信します。サーバーから返された実行結果は、ページ上の

<code> 要素を変更することで表示されます。 </code>上記は、オンライン回答内の質問のコードとプログラミングの質問を追加する関連する実装方法です。開発者は、完全に機能するオンライン質問応答プラットフォームを実装するために、特定のニーズに応じて対応するオープンソース ライブラリとテクノロジを使用するだけで済みます。この記事がお役に立てば幸いです! <p></p>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!