第4回 制御構文 (1)

本題に入る前に必ず連絡の動画を見てください。
Google Colabへのリンク

1. if~else構文

概要

動画の解説を参照

これまで見てきたように、print文を複数書くと表示結果はそれぞれ別の行になります。
これは、print文で表示されるものの一番後ろに改行記号「¥n」がついているせいです。

そこで、表示するものの一番後ろ (end) を強制的に「何もなし」にしてしまえば、改行がおこらなくなります。
ifelse を使うと、条件を満たしたときだけ、満たさなかったときだけに特定の命令を実行させることができます。

このコードの「a > 10」の「>」は比較演算子と呼ばれるもので、この場合は「a が 10 より大きい」という条件にあたります。
値としては bool 型で、条件を満たせば True, 満たさなければ False になります。
値を比較する比較演算子には以下のようなものがあります。
演算子 概要 結果
<
左辺が右辺より小さければ (左辺が右辺未満なら) True
5 < 10
True
<=
左辺が右辺以下なら True
5 <= 10
True
>
左辺が右辺より大きければ True
5 > 5
False
>=
左辺が右辺以上なら True
5 >= 5
True
==
左辺が右辺と等しければ True
5 == 10
False
!=
左辺が右辺と等しくなければ True
5 != 10
True
このほかにもオブジェクトどうしが同じかどうかを調べる比較演算子「is」があります。
前回の第3項では

とすると a と c は同じオブジェクトで、そのあとで a に別の値を代入すると a と c は別のオブジェクトになるという話をしましたが、「is」を使えばオブジェクトが同じかどうかを確認できます。
「c is a」は、「c と a」が同じオブジェクトなら True, そうでなければ Falseになります。

また、「in」を使えば、左辺のリストの中に右辺の値が要素として含まれるかどうかを調べられます。

課題1

※ 準備 : 学籍番号を入れて「入力」をクリック (タップ) してください。


変数 a の値が自分の学籍番号かどうかを if の判定条件とし、その結果を表示するコードを書いてください。
(a の値を変えてみて、判定が正しく行われている以下どうか確認してください。条件を満たすケース・そうでないケースの両方のパターンをコードに残す必要はありません)

2. 入れ子の条件分岐とif~elif~else構文

動画の解説を参照

if~else構文を入れ子にすると、つまりif~else構文の中にif~else構文を入れると、さらに複雑な条件分岐ができます。
このようなケースでは、特にインデント (字下げ) が重要です。
赤枠の部分は「90点未満なら」という条件を満たしているときに実行されます。そのため、わざわざ「80点以上で90点未満」という条件を書かずに「80点以上」という条件だけで「80~89」つまり成績が A であることがわかるわけです。
青枠は赤枠の中にあるので、正確には「90点未満であり、さらに80点未満」という条件ですが、算数的にこれは「80点未満」を意味します。
同様に緑枠は「90点未満で、80点未満で、70点未満」→「70点未満」です。

同じ処理をif~elif~else構文で書くとこのようになります。

課題2

入れ子のif~else構文を使い、変数 a が , それぞれの倍数かどうかの4つのケースに応じて表示するコードを書いてください。
(a の値を変えてみて、判定が正しく行われている以下どうか確認してください。4通りのパターンをコードに残す必要はありません)

3. 論理演算子

動画の解説を参照

and, or を使うと、2つのbool型の値を組み合わせてひとつのbool型の値を得られます。値は

and では
a
b
a and b
False
False
False
False
True
False
True
False
False
True
True
True

or では
a
b
a or b
False
False
False
False
True
True
True
False
True
True
True
True
となります。

また、「not」を使うと値を反転させられます。先に紹介した and, or をあわせ、これらを論理演算子といいます。
a
not a
False
True
True
False
一般に、複雑な条件判定をするときは、入れ子のif~else構文やif~elif~else構文よりも論理演算子を使った方が簡単な形になります。
例えばうるう年の判定を入れ子のif~else構文で書くとこうなりますが、

「4の倍数でない」「100の倍数」「400の倍数でない」を組み合わせるだけでこのように簡単になります。
論理演算子の優先順位
複数の論理演算子を組み合わせるときは、not → and → or の優先順位になります。
例えば
True and False or not True
は、まず「not True」が False なので
True and False or False
で、「True and False」が False なので
False or False
となるので、最終的に
False
になります。

課題3

の演算結果を表示するコードを書いてください。ただし、下の図のように1ステップずつ演算を行った結果をコメント文に書いてください。
※ この図と同じコードを書くのではありません。上に表示される、自分の学籍番号に応じたものについて同様のことをしてください。

提出

今回作成したノートブックを「plang2024a@gmail.com」と共有してください。
※ 課題の再提出の際は、ノートブックの再度の共有はせずにチャットで連絡してください。