本文へ移動

Python実行環境

ブラウザーでPythonを実行し、標準入力・出力と停止ボタンを使えます。

Pythonコード

ブラウザー内で処理します。

Tab で空白4つを挿入。Shift + Tab でエディターから移動。Ctrl/⌘ + Enter で実行。

UTF-8の.pyファイル · 40,000文字まで · ローカルで読み込み

input()への回答を1行ずつ入力します。行を使い切るとEOFErrorになります。

コード40,000文字 · 入力10,000文字 · 実行15秒 · 出力65,536文字

初回実行時にjsDelivrからPyodide 0.28.3を取得します。そのダウンロードにコードや入力内容は送りません。

出力

コードを実行すると出力を表示します。

毎回新しい状態で実行します。外部通信、親ページ、永続ストレージへのアクセスを制限します。pip、対話型グラフ、ソケット、デスクトッププロセスは非対応です。

小さなプログラムを実行する

main.pyにコードを書き、「Pythonを実行」を押します。薄いサンプルはあいさつと0〜4の2乗を出力します。初回はエンジンのダウンロードにネット接続が必要です。同じページ内の次回以降は取得済みのデータを再利用します。 コード欄が空なら、実行・.py保存にはこの例を使います。クリアするとコード、標準入力、出力がリセットされます。

別の例としてimport statisticsの次の行にprint(statistics.mean([3, 6, 9]))を書くと6になります。最後の行の式が返す値も表示します。通常出力とエラー出力を区別し、例外時はトレースバックで場所を確認できます。

標準入力を先に用意する

name = input('Name: ')を使う場合は、標準入力の1行目に名前を書きます。コードにprint('Hello,', name)を追加して実行してください。input()は1行ずつ消費し、不足するとダイアログを開かずEOFErrorになります。

Tabは空白4文字、CtrlまたはCommandとEnterは実行です。「.pyを保存」で現在のコードを保存できます。出力のコピーには取得したエラー文も含まれます。

キーワード、文字列、数値、コメントを基本的な色分けで表示します。Enterは現在の字下げを維持し、コロンで終わるforやifなどのブロック後に空白4つを追加します。Shift + Enterは改行のみです。.pyを開くとUTF-8ファイルをローカルで読み込み、入力済みコードの置換前に確認します。無効なファイルや上限を超えるファイルでも現在のコードは保持されます。

停止して実行し直す

停止ボタンはwhile Trueのようなループもワーカーごと終了します。次回は新規セッションです。エンジン起動後の実行上限は15秒、出力上限は65,536文字。コードや入力を編集すると実行を中断して古い結果を消します。

変数、import、ファイルは次回に引き継ぎません。必要な処理をすべてコードに含めてください。大量のメモリー確保は時間制限前でも端末を圧迫するため、特にスマートフォンでは小さな例で利用してください。

対応範囲とプライバシー

Pyodide 0.28.3に同梱された標準ライブラリーを使用します。math、random、statistics、jsonなどに対応し、NumPyや任意のpipパッケージは読み込みません。デスクトップ画面、OSプロセス、TCPソケット、対話型グラフは対象外です。

コードは不透明オリジンと制限ポリシーを設定した隔離環境内のワーカーで実行します。コードからの外部リクエストを遮断します。親ページはエンジンだけをjsDelivrから取得し、ソースや標準入力を添付しません。アカウントやコード実行APIは不要です。

Pyodide 0.28.3 · GitHub · MPL-2.0

よくある質問

初回の実行が遅い理由は?

PythonとWebAssemblyの取得・初期化が必要です。失敗した場合は再度実行してください。

パッケージをインストールできますか?

できません。同梱の標準ライブラリーのみを使用します。

変数が消えました。

毎回新規セッションで実行します。変数の代入もコードに含めてください。

オフラインやスマホでも使えますか?

初回取得にはネットが必要です。画面は狭い幅にも対応しますが、メモリーやWebAssembly対応は端末によります。