実はjava scriptとpythonは相性が良く、お互いに変換しやすいという特性を持っています。その特徴を活かして作りました。一般の方には縁がないかもしれませんが、プログラマーの人にとってはかけがえのないものだと思います。
少々使う方は限定されますが、人によってはなくてはならない存在だと思います。
できること:PythonとJavaScriptのプログラムを、おたがいの書き方に変換します。自動で直せないところには印をつけ、理由を下に表示します。
使い方:左の欄に変換したいプログラムを貼ると、右に結果が出ます。「逆向きにする」で変換の向きを切りかえられ、「見本」で例を見られます。
注意:自動の書きかえなので、結果は必ず動かして確かめてください。pandasなどのライブラリや、ブラウザの画面操作(document)は、相手の言語に同じものがないため変換できません。入力した内容は、このブラウザの中だけで処理され、外には送られません。
プログラムの書きかえ道具
Py⇄JS 変換器
Python と JavaScript を、おたがいの書き方に変換します。自動で直せないところには印をつけて、理由を下に出します。
実行結果
気をつけるところ
押すと、右の画面のその行に移動します。
対応表(よく使う書き方)
同じことをするとき、それぞれの言語ではこう書きます。
| やりたいこと | Python | JavaScript | ひとこと |
|---|
- 変換は「よく使う書き方」に合わせた自動の書きかえです。結果は必ず動かして確かめてください。
- Python のライブラリ(pandas など)や、ブラウザの画面操作(document など)は、相手の言語に同じものがありません。
- Python の結果はこの画面では動かせません。コピーして、パソコンの Python や Google Colab で試せます。
Python と JavaScript の変換器の使い方・活用例・よくある質問
使い方
- 左の欄に、変換したいプログラム(PythonかJavaScript)を貼りつけます。入力すると、少し待って、右の欄に結果が自動で出ます。
- 向きを変えたいときは、「⇄ 逆向きにする」を押します(Python→JavaScript と JavaScript→Python を切りかえます)。
- 「見本」から例をえらぶと、入力欄に例が入ります。基本(合計と平均)、FizzBuzz、クラス、リストと辞書、注意が出る例があります。
- 自動で直せなかったところには印がつき、理由が「気をつけるところ」に出ます。押すと、右の画面のその行に移動します。
- 結果は「コピー」で取り出せます。変換後がJavaScriptのときは、「結果のJSを実行」で、この画面の中で動かして、出力を見られます。
こんなときに使えます
- Pythonで書かれたサンプルを、ウェブページ(JavaScript)で使いたいとき。
- JavaScriptの書き方を、Pythonの書き方と見くらべながら覚えたいとき(この上の「対応表」が便利です)。
- 片方の言語しか書けないときに、もう一方の書き方の「たたき台」がほしいとき。
- 学校や研修で、2つの言語のちがいを説明するとき。
変換できるものと、できないもの
よく使う書き方は、おたがいに書きかえられます。たとえば、画面に出す(print / console.log)、変数、文字の中に値を入れる書き方(f文字列 / テンプレート文字列)、条件分岐(if / elif / else)、くり返し(for)、関数(def / function)、短い関数(lambda / アロー関数)、リストの絞りこみと変換(内包表記 / filter / map)、辞書とオブジェクト、クラス、エラーへの備え(try / except と try / catch)、コメントです。
変換できないものもあります。pandasなどのライブラリや、ブラウザの画面操作(documentなど)は、相手の言語に同じものがありません。setTimeoutのように、書きかえが必要なものは、「気をつけるところ」に注意が出ます。
どうやって変換しているか
プログラムをすべて理解して作り直す方式ではなく、よく使う書き方を、決まりにしたがって書きかえる方式です。そのため、よく使う書き方は得意ですが、めずらしい書き方や、複雑な書き方は、うまく直せないことがあります。直せなかったところには、印をつけます。結果は、必ず動かして確かめてください。
よくある質問
Q. 入力したプログラムは、外に送られますか。
A. 送られません。変換は、このページの中(ブラウザの中)だけで行います。
Q. 「結果のJSを実行」は、安全ですか。
A. 実行は、画面とは別の「ワーカー」という場所で行うので、このページの画面そのものは書きかえられません(documentも使えません)。ただし、貼りつけたプログラムは、そのまま動きます。内容が分かるものだけを実行してください。3秒たっても終わらないときは、自動で止めます。
Q. Pythonの結果も、この画面で動かせますか。
A. 動かせません。Pythonの結果は、コピーして、パソコンのPythonや、Google Colab(ブラウザで動くPython)などで試してください。
Q. 変換した結果が、うまく動きません。
A. まず「気をつけるところ」を見てください。印がついた行は、人の手で直す必要があります。自動の書きかえなので、結果は必ず動かして確かめてください。
Q. PythonとJavaScriptで、まちがえやすいところは?
A. たとえば、等しいかの比べ方(JavaScriptは=を3つ書くのが安全)、切り捨てのわり算(Pythonの//は、JavaScriptではMath.floor)、からっぽのリスト(Pythonでは「からっぽ」あつかいですが、JavaScriptの[]は「ある」あつかい)、いちばん後ろの要素(Pythonはitems[-1]、JavaScriptはitems.at(-1))、joinの書き方の順番(逆になります)などです。この上の「対応表」にまとめています。
ほかのプログラムは、トップページの一覧からどうぞ。入力したプログラムの扱いについては、プライバシーポリシー・免責事項もご覧ください。
JavaScriptとPythonの書き方のちがい(くわしい解説)
JavaScriptとPythonは、どちらも人気のあるプログラミング言語です。やりたいことは同じでも、書き方の決まりや、ふつうの動き方に、ちがいがあります。この記事では、2つを見くらべて、まちがえやすいところを、実際に動かして確かめた結果といっしょに説明します。このプログラムを使うときの、注意点にもなります。
まず結論:ちがいは「書き方」と「動き」の2種類
2つの言語のちがいは、大きく2種類に分けられます。
- 書き方のちがい。波かっこ { } を使うか、字下げ(インデント)を使うか、などです。見た目のちがいなので、決まりどおりに書きかえれば、同じ動きになります。
- 動きのちがい。同じ式に見えても、結果がちがうものです。たとえば、-7 % 3 の答えは、JavaScriptでは -1、Pythonでは 2 です。書きかえただけでは気づきにくいので、まちがいの元になります。
書き方のちがい(見た目)
まず、見た目のちがいです。よく使うものを、JavaScriptとPythonで並べます。画面の幅がせまいときは、上下に並びます。「//」と「#」から後ろは、コメントです。ここでは、動かしたときの結果を書いています。
変数と、画面に出す
JavaScript
let count = 1; const name = "たま"; console.log(name); // たま console.log(count); // 1
Python
count = 1 name = "たま" print(name) # たま print(count) # 1
JavaScriptは、let(あとで変えられる)や const(変えない)をつけて、変数を作ります。Pythonは、そのような言葉をつけません。画面に出すのは、JavaScriptが console.log、Pythonが print です。
条件で分ける(if)と、かたまり
JavaScript
const n = -5;
if (n > 0) {
console.log("プラス");
} else if (n < 0) {
console.log("マイナス");
} else {
console.log("ゼロ");
}Python
n = -5
if n > 0:
print("プラス")
elif n < 0:
print("マイナス")
else:
print("ゼロ")JavaScriptは、かたまりを { } で囲み、文の終わりに ; をつけます。Pythonは、行の終わりに : を書き、次の行から字下げで、かたまりを表します。字下げは、スペース4つが基本です。Pythonでは、字下げがそろっていないと、エラーになります。「else if」は、Pythonでは「elif」と書きます。
くり返す(for)
JavaScript
for (let i = 0; i < 3; i++) {
console.log(i);
}Python
for i in range(3):
print(i)どちらも、0、1、2 と出ます。Pythonの range(3) は、「0から数えて3個」という意味です。
関数
JavaScript
function add(a, b) {
return a + b;
}
const add2 = (a, b) => a + b;
console.log(add(2, 3)); // 5
console.log(add2(2, 3)); // 5Python
def add(a, b):
return a + b
add2 = lambda a, b: a + b
print(add(2, 3)) # 5
print(add2(2, 3)) # 5関数は、JavaScriptが function、Pythonが def で作ります。短い関数は、JavaScriptでは「アロー関数」(=>)、Pythonでは lambda と書きます。
真・偽と、「かつ・または・ではない」
JavaScript
console.log(true && false); // false console.log(true || false); // true console.log(!true); // false
Python
print(True and False) # False print(True or False) # True print(not True) # False
真と偽は、JavaScriptが true と false、Pythonが True と False です。Pythonは、頭が大文字です。小文字で true と書くと、エラー(NameError)になります。「ない」を表す言葉は、JavaScriptが null と undefined の2つ、Pythonは None だけです。
文字の中に、値を入れる
JavaScript
const name = "たま";
console.log(`${name}さん、こんにちは`); // たまさん、こんにちはPython
name = "たま"
print(f"{name}さん、こんにちは") # たまさん、こんにちはJavaScriptは、バッククォート( ` )で囲んで、${ } の中に書きます(テンプレート文字列)。Pythonは、引用符の前に f をつけて、{ } の中に書きます(f文字列)。
リスト(配列)と、辞書(オブジェクト)
JavaScript
const colors = ["赤", "青"];
colors.push("緑");
console.log(colors); // [ '赤', '青', '緑' ]
const cat = { name: "たま", age: 3 };
console.log(cat.name); // たまPython
colors = ["赤", "青"]
colors.append("緑")
print(colors) # ['赤', '青', '緑']
cat = {"name": "たま", "age": 3}
print(cat["name"]) # たまJavaScriptの「配列」は、Pythonの「リスト」にあたります。JavaScriptの「オブジェクト」({ })は、Pythonの「辞書」(dict)にあたります。追加は、JavaScriptが push、Pythonが append です。辞書の中身は、JavaScriptでは cat.name、Pythonでは cat["name"] で取り出します。
長さ・つなぐ・分ける・大文字
JavaScript
console.log([1, 2, 3].length); // 3
console.log([1, 2, 3].join(", ")); // 1, 2, 3
console.log("a,b,c".split(",")); // [ 'a', 'b', 'c' ]
console.log("abc".toUpperCase()); // ABCPython
print(len([1, 2, 3])) # 3
print(", ".join(["1", "2", "3"])) # 1, 2, 3
print("a,b,c".split(",")) # ['a', 'b', 'c']
print("abc".upper()) # ABCPythonの join は、つなぐ文字(", ")のほうから書きます。JavaScriptと、順番が逆です。また、Pythonの join は、文字だけをつなげます。数のリストは、先に文字に直す必要があります。
リストの絞りこみと、変換
JavaScript
const nums = [1, 2, 3, 4]; console.log(nums.map(x => x * 2)); // [ 2, 4, 6, 8 ] console.log(nums.filter(x => x % 2 === 0)); // [ 2, 4 ]
Python
nums = [1, 2, 3, 4] print([x * 2 for x in nums]) # [2, 4, 6, 8] print([x for x in nums if x % 2 == 0]) # [2, 4]
JavaScriptは、map や filter を使います。Pythonでは、[ ... for x in ... ] と書く「内包表記」が、よく使われます。
そのほかの、よく使う書き方です。
- コメントは、JavaScriptが // と /* ... */、Pythonが # です。
- エラーへの備えは、JavaScriptが try / catch、Pythonが try / except です。
- 値の種類を調べるのは、JavaScriptが typeof、Pythonが type() です。
- リストの中身を順に取り出すのは、JavaScriptが for (const x of items)、Pythonが for x in items です。
同じに見えて、結果がちがうところ
ここからが、この記事のいちばん大事なところです。見た目は同じ(または似ている)のに、結果がちがうものを、動かした結果といっしょに並べます。エラーになるときは、「エラー」と書いています。
数のあつかい
わり算
JavaScript
console.log(7 / 2); // 3.5 console.log(6 / 3); // 2 console.log(Math.floor(7 / 2)); // 3 console.log(Math.floor(-7 / 2)); // -4
Python
print(7 / 2) # 3.5 print(6 / 3) # 2.0 print(7 // 2) # 3 print(-7 // 2) # -4
Pythonの / は、割り切れても、小数(2.0)になります。切り捨てるわり算は、Pythonが //、JavaScriptが Math.floor(…) です。Pythonの // は、小さいほうへ切り捨てます。-7 // 2 は -4 で、Math.floor(-7 / 2) と同じです。(0のほうへ切り捨てる Math.trunc(-7 / 2) は -3 です。)
あまり
JavaScript
console.log(-7 % 3); // -1 console.log(7 % -3); // 1
Python
print(-7 % 3) # 2 print(7 % -3) # -2
あまりの符号が、ちがいます。JavaScriptは、割られる数(-7)の符号にそろえます。Pythonは、割る数(3)の符号にそろえます。割る数がプラスのとき、JavaScriptでPythonと同じ答えにするには、((n % d) + d) % d と書きます。
丸め
JavaScript
console.log(Math.round(2.5)); // 3 console.log(Math.round(3.5)); // 4 console.log(Math.round(-2.5)); // -2
Python
print(round(2.5)) # 2 print(round(3.5)) # 4 print(round(-2.5)) # -2
ちょうど .5 のとき、Pythonは、偶数のほうに丸めます(2.5は2、3.5は4)。JavaScriptは、大きいほう(プラス無限大の向き)に丸めます(2.5は3、-2.5は-2)。
大きな整数
JavaScript
console.log(2 ** 53 + 1); // 9007199254740992 console.log(2n ** 53n + 1n); // 9007199254740993n
Python
print(2 ** 53 + 1) # 9007199254740993
JavaScriptのふつうの数は、9007199254740991(2の53乗 - 1)をこえると、整数を正確に表せないことがあります。ここでは、+ 1 が消えて、9007199254740992 のままです。もっと大きな整数には、BigInt(数のあとに n をつける)を使います。Pythonの整数は、大きくなっても正確なままです(メモリの許すかぎり)。
小数の誤差(これは、同じ結果です)
JavaScript
console.log(0.1 + 0.2); // 0.30000000000000004
Python
print(0.1 + 0.2) # 0.30000000000000004
「0.1 + 0.2 が、ぴったり 0.3 にならない」のは、言語のせいではありません。コンピューターが、小数を2進数で表すためで、JavaScriptでもPythonでも、同じ結果になります。
比べ方と、真・偽
等しいかの比べ方(== と ===)
JavaScript
console.log(0 == "0"); // true console.log(0 === "0"); // false
Python
print(0 == "0") # False
JavaScriptの == は、型をそろえてから比べるので、数の 0 と文字の "0" が等しくなります。=== は、型もそろっているかを見ます。ふつうは、=== を使うほうが安全です。Pythonの == は、数と文字を比べても、等しくなりません。
文字と数のたし算・かけ算
JavaScript
console.log("1" + 2); // 12
console.log("5" * 2); // 10
console.log("ab" * 3); // NaN
console.log("ab".repeat(3)); // abababPython
print("1" + 2) # エラー(TypeError)
print("5" * 2) # 55
print("ab" * 3) # abababJavaScriptは、型を自動で変えます。"1" + 2 は文字のつなぎ(12)に、"5" * 2 は数のかけ算(10)になります。Pythonは、自動では変えず、たし算はエラーにします。文字をくり返すのは、Pythonが "ab" * 3、JavaScriptが "ab".repeat(3) です。
からっぽのリスト・辞書は、「真」か「偽」か
JavaScript
console.log([] ? "真" : "偽"); // 真
console.log({} ? "真" : "偽"); // 真
console.log("" ? "真" : "偽"); // 偽Python
print("真" if [] else "偽") # 偽
print("真" if {} else "偽") # 偽
print("真" if "" else "偽") # 偽からっぽのリスト [] と辞書 {} は、Pythonでは「偽」あつかいですが、JavaScriptでは「真」あつかいです。リストがからっぽかを調べるときは、JavaScriptでは arr.length === 0 と書くと、まちがえません。空の文字 "" と 0 は、どちらの言語でも「偽」です。
中身が同じリストを比べる
JavaScript
console.log([1, 2] == [1, 2]); // false
Python
print([1, 2] == [1, 2]) # True
Pythonは、リストの中身を比べます。JavaScriptの == と === は、「同じもの(同じ配列)か」を比べるので、中身が同じでも false になります。
リスト(配列)と、辞書(オブジェクト)
並べ替え
JavaScript
const byNum = (a, b) => a - b; console.log([10, 9, 1].sort()); // [ 1, 10, 9 ] console.log([10, 9, 1].sort(byNum)); // [ 1, 9, 10 ]
Python
print(sorted([10, 9, 1])) # [1, 9, 10]
JavaScriptの sort() は、何も指定しないと、数を文字として比べるので、"10" が "9" より前になります。数を小さい順にするには、(a, b) => a - b という比べる関数(ここでは byNum)を渡します。また、sort() は、元の配列を並べかえます。Pythonの sorted() は、新しいリストを返します。(list.sort() は、元のリストを並べかえて、None を返します。)
後ろから数える
JavaScript
const items = [10, 20, 30]; console.log(items[-1]); // undefined console.log(items.at(-1)); // 30
Python
items = [10, 20, 30] print(items[-1]) # 30
Pythonは、-1 で「いちばん後ろ」を取り出せます。JavaScriptの [-1] は、そんな番号がないので、undefined になります。いちばん後ろは、at(-1) か、items[items.length - 1] で取り出します。
ないものを取り出す
JavaScript
const items = [10, 20, 30];
const cat = { name: "たま" };
console.log(cat.age); // undefined
console.log(items[10]); // undefinedPython
items = [10, 20, 30]
cat = {"name": "たま"}
print(cat.get("age")) # None
print(cat["age"]) # エラー(KeyError)
print(items[10]) # エラー(IndexError)JavaScriptは、ないものを取り出すと、エラーにならず、undefined になります。Pythonは、エラーで止まります。エラーにしたくないときは、辞書は .get() を使います。
リストの「+」
JavaScript
console.log([1, 2] + [3]); // 1,23 console.log([...[1, 2], ...[3]]); // [ 1, 2, 3 ]
Python
print([1, 2] + [3]) # [1, 2, 3]
JavaScriptの + には、配列をつなぐ働きがありません。配列が文字に変えられて、つながってしまい、"1,23" になります。配列をつなぐには、[...a, ...b] か、a.concat(b) を使います。Pythonの + は、リストをつなぎます。
「入っているか」を調べる in
JavaScript
console.log(2 in [10, 20, 30]); // true console.log([10, 20, 30].includes(20)); // true
Python
print(2 in [10, 20, 30]) # False print(20 in [10, 20, 30]) # True
JavaScriptの in は、中身ではなく、番号(や名前)があるかを調べます。[10, 20, 30] には、2番(0、1、2番)があるので、true になります。中身を調べるのは、includes です。Pythonの in は、リストの中身を調べます。
文字と、変数
文字の数
JavaScript
console.log("あいう".length); // 3
console.log("😀".length); // 2
console.log([..."😀"].length); // 1Python
print(len("あいう")) # 3
print(len("😀")) # 1JavaScriptの length は、「文字の数」ではなく、内部の単位(UTF-16)の数です。絵文字や、一部の難しい漢字は、1文字でも2と数えます。Pythonの len() は、Unicodeの文字(コードポイント)を1つずつ数えるので、この絵文字は1です。ただし、いくつもの絵文字をつないだ記号(家族の絵文字など)は、Pythonでも1にならないことがあります。
くり返しのあとの変数
JavaScript
for (let i = 0; i < 3; i++) {}
console.log(typeof i); // undefinedPython
for i in range(3):
pass
print(i) # 2JavaScriptの let で作った変数は、{ } の中だけで使えます。Pythonは、くり返しが終わっても、変数 i が残ります(最後の値の 2)。
変換するときの注意
この上の変換プログラムは、「書き方のちがい」を、自動で書きかえます。たとえば、次のように直ります。
書き方は、うまく直る
Python(元)
for i in range(3):
print(i)
name = "たま"
print(f"{name}さん")
print(7 // 2)
print(", ".join(["a", "b"]))
nums = [1, 2, 3, 4]
print([x * 2 for x in nums])JavaScript(変換後)
for (let i = 0; i < 3; i++) {
console.log(i);
}
let name = "たま";
console.log(`${name}さん`);
console.log(Math.floor(7 / 2));
console.log(["a", "b"].join(", "));
let nums = [1, 2, 3, 4];
console.log(nums.map((x) => x * 2));2026年10月28日に、変換プログラムで試した結果です。動かすと、どちらも同じ内容が出ます(リストの表示だけ、かっこの中の空白がちがいます)。
いっぽう、「動きのちがい」は、書きかえただけでは、同じにならないことがあります。2026年10月28日に試したところ、次の例は、結果が変わるのに、「気をつけるところ」の印は出ませんでした。
Python → JavaScript
Python(元)
print(-7 % 3) # 2 print(round(2.5)) # 2 print([1, 2] + [3]) # [1, 2, 3]
JavaScript(変換後)
console.log(-7 % 3); // -1 console.log(Math.round(2.5)); // 3 console.log([1, 2] + [3]); // 1,23
JavaScript → Python
JavaScript(元)
console.log([10, 9, 1].sort()); // [ 1, 10, 9 ] console.log(2 in [10, 20, 30]); // true
Python(変換後)
print(sorted([10, 9, 1])) # [1, 9, 10] print(2 in [10, 20, 30]) # False
このように、「動きのちがい」は、自動では直せないものがあります。変換のあとは、次のことをおすすめします。
- 動かして確かめる。変換後のJavaScriptは、変換プログラムの「結果のJSを実行」で、動かせます。Pythonの結果は、パソコンのPythonや、Google Colab(ブラウザで動くPython)で試せます。
- 同じ入力で、前と後の結果を見くらべる。0、マイナスの数、からっぽのリスト、空の文字、2.5のような小数を入れて、結果が同じかを見ます。
- 印がついた行は、人の手で直す。「気をつけるところ」に、理由が出ます。
- ライブラリや、画面の操作は、そのままでは変換できない。pandasなどのライブラリや、ブラウザの画面を操作する document は、相手の言語に同じものがありません。
よくある質問
Q. JavaとJavaScriptは、同じものですか。
A. ちがいます。名前や、書き方の一部が似ているだけで、別の言語です。たとえば、Javaは変数の型を書く必要がありますが、JavaScriptは書かなくてかまいません(MDNの説明)。
Q. JavaScriptの文の終わりの「;」は、必ず書かないといけませんか。
A. 書かなくても、決まりにしたがって自動で補われるので、動く場合があります。ただ、思わぬ動きになることがあります。たとえば、return の後ろで改行すると、そこで return が終わってしまい、値が返りません(MDNの説明)。書いておくほうが安全です。Pythonでは、行の終わりに ; は、ふつう書きません。
Q. Pythonで、字下げにタブとスペースを混ぜてもいいですか。
A. 混ぜないでください。混ぜると、エラー(TabError)になることがあります。スペース4つにそろえるのが基本です(PEP 8)。
Q. JavaScriptでは、== と === のどちらを使えばいいですか。
A. ふつうは、=== が安全です。== は、型をそろえてから比べるので、0 と "0" が等しくなるなど、思わぬ結果になります。MDNでも、ほとんどの場合は、== はおすすめされていない、と書かれています。
Q. 変換プログラムの結果は、そのまま使えますか。
A. そのままでは使わず、必ず動かして確かめてください。よく使う書き方は直せますが、「動きのちがい」は、印が出ないまま残ることがあります。
出典
この記事は、2026年10月28日に、次の資料を確認し、Node.js 22 と Python 3.13 で動かして書きました。
- MDN「等価性の比較と同一性」
- MDN「Array.prototype.sort()」
- MDN「剰余演算子 (%)」
- MDN「Math.round()」
- MDN「Number.MAX_SAFE_INTEGER」
- MDN「String: length」
- MDN「真と評価される値 (Truthy)」
- MDN「in 演算子」
- MDN「字句文法(自動セミコロン挿入)」
- MDN「JavaScript ガイド:概要(JavaScript と Java)」
- Python公式(英語)「Built-in Functions: round()」
- Python公式(英語)「Built-in Types」
- Python公式(英語)「Expressions」
- Python公式(英語)「Sorting Techniques」
- Python公式(英語)「Unicode HOWTO」
- Python公式(英語)「Floating-Point Arithmetic: Issues and Limitations」
- PEP 8 – Style Guide for Python Code(英語)
最終更新:2026年10月28日
0 件のコメント:
コメントを投稿