前回の記事では、PythonとRustで「四則演算と変数の基礎」を比較しました。今回はその続きとして、「比較演算子」と「条件分岐(if文)」をテーマにします。
Pythonのif文については、以前Pythonでif文を使うという記事で詳しく書きました。今回はそちらの内容を土台にしつつ、「同じ処理をRustで書くとどう変わるのか」という比較に重点を置いていきます。Pythonのif文の基本をじっくり確認したい方は、先に上の記事を読んでいただくとスムーズです。
また、この記事は算数の「等式・不等式」の復習も兼ねています。せっかくなので基礎から確認していきます。
算数の復習:等式と不等式
まずは記号の確認をします。
| 読み方 | 算数、数学の記号 | プログラムの記号 |
| AはBより大きい | \(A > B\) | a > b |
| AはBより小さい | \(A < B\) | a < b |
| AはB以上 | \(A \ge B\) | a >= b |
| AはB以下 | \(A \le B\) | a <= b |
| AとBは等しい | \(A = B\) | a == b |
| AとBは等しくない | \(A \neq B\) | a != b |
ここで注意すべき点は「等しい」の記号です。算数では\(A = B\)とイコールを1つ書きますが、プログラムでは a == b とイコールを2つ書きます。これはプログラミングの世界でイコール1つは、「代入する」という意味で使われるからです。
そしてもう一つ大事なのが、これらの比較を行った結果です。\(10 > 3\) は正しいので「真(True)」、\(3 > 10\)は間違っているので「偽(False)」という値が返ってきます。この2種類しかない値を真偽値(ブール値)と呼びます。
プログラムはこの真偽値を見て、「真ならこっちの処理、偽ならこっちの処理」と道を分けています。これが条件分岐(if文)の仕組みです。
では、実際にやってみましょう。
Pythonでの比較演算子と条件分岐
Google Colaboratory (Colab)を開いて新しいノートブックを作り、次のコードを入力します。
# 比較演算子の確認
a = 10
b = 3
# 比較の結果は True(真)かFalse(偽)で返ってくる
print(a == b) # False: a と b は等しいか
print(a != b) # True: a と b は等しくないか
print(a > b) # True: a は b より大きいか
print(a < b) # False: a は b より小さいか
print(a >= b) # True: a は b 以上か
print(a <= b) # False: a は b 以下か
# if文による条件分岐
score = 85 # テストの点数
# 最初に満点かどうかを確認する
if score == 100:
print("満点です")
# そうでなく90点以上ならSランク
elif score >= 90:
print("Sランクです")
# そうでなく80点以上ならAランク
elif score >= 80:
print("Aランクです")
# どれにも当てはまらない場合
else:
print("もう少し頑張りましょう")とセルに入力して実行してみましょう。すると結果は
False
True
True
False
True
False
Aランクです
のように表示されます。
プログラムの解説(Python)
比較演算子(2~11行目): 変数a に10、 b に3を代入し、6種類の比較演算子を試しています。比較の結果は必ず True か False のどちらかになります。なお、 = が代入で == が比較という違いは前述のとおりです。
条件分岐(14~27行目): score に85を代入し、上から順に条件式を判定していきます。まず score == 100 は偽なので飛ばされ、次のscore >= 90 も偽なので飛ばされ、score >= 80が真になるので「Aランクです」と出力されます。ここで判定は終了するので、 else の処理は実行されません。
条件式の順番(17行目): score == 100 を一番上に書いてあるのは理由があります。もし elif score >= 90 より後ろに書くと、score が100のときに先に score >= 90 が真になってしまい、score == 100 の行は永遠に実行されません。条件式は上から順に判定されるので、順番そのものが処理結果を変えます。
Rustでの比較演算子と条件分岐
同じ処理をRustで書くとこのようになります。
fn main() {
// 比較演算子の確認
let a: i32 = 10;
let b: i32 = 3;
// 比較の結果は true か false で返ってくる
// PythonのTrue/Falseと違い、Rustではすべて小文字で書く
println!("{}", a == b); // false
println!("{}", a != b); // true
println!("{}", a > b); // true
println!("{}", a < b); // false
println!("{}", a >= b); // true
println!("{}", a <= b); // false
let score: i32 = 85; // テストの点数
// 比較の結果をそのまま変数に入れることができる
// この時の型は bool(ブール)型になる
let is_perfect: bool = score == 100;
println!("満点かどうか: {}", is_perfect); // false
// if文による条件分岐
// 最初に満点かどうかを確認する
if score == 100 {
println!("満点です");
// そうでなく90点以上ならSランク
} else if score >= 90 {
println!("Sランクです");
// そうでなく80点以上ならAランク
} else if score >= 80 {
println!("Aランクです");
// どれにも当てはまらない場合
} else {
println!("もう少し頑張りましょう");
}
// Rustのifは式なので、判定結果を変数に入れられる
let rank = if score >= 80 { "合格" } else { "不合格" };
println!("判定: {}", rank); // 合格
}
実行すると結果は
false
true
true
false
true
false
満点かどうか: false
Aランクです
判定: 合格
のように表示されます。
プログラムの解説(Rust)
比較演算子(3~13行目): 比較演算子の記号(==、 !=、>、<、>=、<=)はPythonと共通なので、新しく覚えることはありません。違うのは真偽値の書き方で、PythonはTrue/Falseと頭文字が大文字ですが、Rustはtrue/falseとすべて小文字です。
bool型(19~20行目): let is_perfect: bool = score == 100; では、score == 100という比較の結果をそのままbool型の変数に入れています。
条件分岐(24~35行目): Pythonと比べて違う点が2つあります。
1つ目はelifかelse if かという書き方の差です。Pythonでは elif と省略しますが、Rustではelse if と2語に分けて書きます。
2つ目は処理のまとまりの表し方です。Pythonはインデントで範囲を示しますが、Rustは波括弧{}で囲みます。
ifは式(38行目): 最後のlet rank = if score >= 80 { "合格" } else { "不合格" }; はRustならではの書き方です。Rustではif が式として扱われるので、if文の結果をそのまま変数に代入できます。波括弧の中の"合格" の末尾にセミコロン; が付いていないのがポイントで、これが「この値を返す」という意味になります。
まとめ
今回分かった一番の違いは elif と else if です。処理の中身は全く同じなのに書き方だけが違うので、Pythonから移ってくるときは気を付けたい部分です。
- 比較演算子はPythonとRustで全く同じ記号。
=は代入、==は比較。算数とは違うので注意。- 真偽値の表記はPythonが
True/False、Rustがtrue/false(小文字) - 条件分岐はPythonが
elif、Rustがelse if(2語) - Pythonはインデントで処理のまとまりを示し、Rustでは
{}で示す。

今回はこれで終了です。
今回のサンプルを用意したので、もし必要な場合は上の「Open in Colab」と書いてあるボタンをクリックしてください。なおそのままだと編集不可なので編集をしたい場合は「ドライブにコピー」をクリックしてコピーしてください。
なおGoogle ColaboratoryについてわからなかったらGoogleColaboratoryを使ってみよう_導入編をご覧ください。