プログラミング入門I
2024.11.06
if 文 その1
前回は乱数について学習しました.Python にあらかじめ用意してある関数を使用して乱数を発生させることができるようになったので,今後はプログラムの作成においてほぼ毎回使用することになります.整数や実数の乱数を使いこなせるようにしましょう.
関数 引数仕様 発生する数値
randint() min, max min から max の範囲の整数
random() 無し 0 以上 1 未満の数値
randrange() min, max, step min から max の範囲の整数で step 刻み
プログラムの処理の流れは入力された数値や計算結果などにより分岐させて条件ごとの処理を行うことが大半です.そのために処理を条件ごとにわけることを条件分岐と言いますが,そのためにどの言語においても用意されているのが今回取り扱う if 文です.基本的なことは教科書に書いてありますので,それに従って作業していきましょう.
if 文のポイント
単純な if 文 | 条件式が真の場合に処理を行う |
if - else 文 | 条件式が真の場合にある処理を行い,偽の場合に別の処理を行う |
if - elif 文 | 条件式が真の場合にある処理を行い,偽の場合にはさらに別の条件式が真であれば別の処理を行う |
if 文の Tips
例えば変数の値が偶数のときのみ何かの処理をすることを考えてみましょう.その際には,次のような書き方が考えられます.
if num % 2 == 0: Do something |
次に偶数だったらある処理をして,奇数だったら別の処理をすることを考えます.その際に以下のように書くことはお薦めしません.
if num % 2 == 0: Do this if num % 2 == 1: Do that |
プログラムを書いている際にはよくあることですが,ちょっとしたキーの打ち間違いや入力忘れなどでちょっと間違った処理にしてしまったりします.今回は偶数と奇数とどちらの場合も何かの処理を必ず行うので,上のように書いてしまうとどちらも実行しないとか,両方とも実行してしまうという間違いにつながることがあります.
そうならないようにするために,条件分岐の数が何個であろうとも,必ずどれかの処理を実行するという場合には最後に必ず else をつけておいて,何があっても何かを1つだけ実行するという保険をかけておくことが大事です.
if num % 2 == 0: Do this else: Do that |
比較演算子の中の等しいかどうかを判定する記号は == です.ところが,誰でも必ず1回以上はこれを間違えて等号一つの = にしてしまうでしょう.他の言語ではこれは文法的には問題ないものの間違った処理となります.ところが,Python ではこれを文法エラーとしてはじいてくれます.便利ですね.
IDLE で Run module した際のエラーメッセージ
File "Z:\Ubuntu_backup\common\ECS_html\lecture\python1_23\20231106\equal.py", line 3 if a = 2: ^^^^^ SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='? |
教科書の p.46 に説明があるように,if 文では処理の構成をインデント(字下げ)によって作ります.インデントの文字幅が間違っているとエラーとなりますので,注意してください.
教科書の補足
値の型として整数型や文字列型などが以前から出てきていますが,if 文の判定などでは真か偽かの2択となる論理型(ブール型)が登場します.ほとんどの言語で値が数値の 0 のときが偽となります.また,文字列の False も偽を意味します.そういったもの以外は大体真として扱われます.
比較演算子を用いて大きい,小さい,等しいなどを if 文では判定しますが,そのような比較を複数まとめて表現する際に論理演算子が使用されます.言葉でいうと,「かつ」や「または」です.他の言語では記号が用意されていることが大半ですが,Python では文字の and や or を使用します.
Python の特徴として論理演算子を省略できる書き方があります.他の言語では認められない以下のような表現が可能です.
if 0 < num < 10:
上の処理は例えばC言語では以下のようになり,論理演算子が必要です.
if(num > 0 && num < 10)
条件式が単純な大小比較などであれば簡単な表現で処理を実現できますが,とびとびの値など比較演算子だけでは長くなる処理などで,教科書 p.61 の List 3-19 にあるような集合(プログラム入門IIで学習予定)を用いた判定が役に立ちます.これも Python の便利なところの一つです.
今回の演習問題です.
教科書の p.46-63 の範囲について学習しました.if 文は以下のように構成されています.
if 式: 文 |
最初のうちは式の後のコロン : を忘れがちなので注意しましょう.また,文はインデント(字下げ)が無いと認識されませんので,注意してください.
宿題が公開されるのは明日木曜日10:00の予定で,締切りは来週の月曜日11月11日の10:00です.レポート提出システムを使用します.
次回も教科書のp.45-88の範囲を学習しますので,予習をしてきてください.