プログラミング入門I
2025.11.05
if 文 その2

Back to index page



  1. 本日の作業内容

  2. 前回の宿題について

    今回もエラーが出るものがありましたので,提出の際には実行してもエラーにならないようにチェックしてください.

    以下は例によって問題のあるプログラムの例です.参考にしてください.

    P = x**2 + y**2
    

    変数名は小文字で始めるようにしてください.Python自体には特に制約は無いのですが,他の言語では大文字で始めると変数ではなく定数として扱うようなものもありますし,プログラミング業界では変数は小文字で始めるのがお約束です.

    if x^2 + y^2 == 25:
        print('On the circumference')
    elif x^2 + y^2 < 25:
        print('In the circle')
    else:
        print('Out of the circle')
    

    上の例は初心者はやりがちと言えばそうですが,授業の内容をフォローできていればしない間違いです.記号の ^ は,教科書の p.126 に出てきますが,ビット排他的論理和演算子です.演算子の両側のどちらかが真(True)であれば真となります.そのような論理演算を行っているので,結果は当然下のように間違ったものになります.

    point(-5,-5)
    In the circle
    

    最初の if は x^2 は真になるか偽になるかで返す数値としては1か0なので,y^2 と足しても決して25になることはなく,偽です.そのため,次の < 25 は必ず真になるので,円内の答えしか返しません.

    以下の2つのプログラムは円の内外を半径で判断していないもので,理系であれば半径を使うことくらいは思いついてほしいところですね.実行結果も当然間違っていますし.

    if -5 < numx < 5 and -5 < numy < 5:
        print('In the circle')
    elif numx == 0 and numy == 5 or numy == -5:
        print('On the circumference')
    elif numy == 0 and numx == 5 or numx == -5:
        print('On the circumference')
    else:
        print('Out of the circle')
    

    Point: (-5, 1)
    On the circumference
    

    if s1 == -5 or s1 == 5:
        print('On the circumference')
    elif s2 == -5 or s2 == 5:
        print('On the circumference')
    elif -5 < s1 < 5 or -5 < s2 < 5:
        print('In the circle')
    else:
        print('Out of the circle')
    

    Point: (-2, 5)
    On the circumference
    

    ちなみに,半径を使わず座標値をそのまま用いるとすれば,以下のように複雑な条件設定が必要になりますよ.

  3. 前回の復習

    if 文について,基本的なことを学習しました.前回も紹介したツボの部分を再掲します.今回も引き続き if 文ですので,しっかりと理解していきましょう.

    if 文のポイント

    単純な if 文 条件式が真の場合に処理を行う
    if - else 文 条件式が真の場合にある処理を行い,偽の場合に別の処理を行う
    if - elif 文 条件式が真の場合にある処理を行い,偽の場合にはさらに別の条件式が真であれば別の処理を行う

  4. if 文 その2

    1. 入れ子の if 文
    2. if 文の中にさらに if 文を入れることが可能です.そのような状態を 入れ子と言います.

    3. スイート suite
    4. if 文の条件式に従って実際に動作させる処理の文が複数になっても構いません.そのように複数の文が入る場合にそれらをスイート(組,ホテルのスイートルームのスイート)と言います.

    5. インデント
    6. if 文などのようにその効力が及ぶ範囲を明確に示す必要があるのが制御構造というもので,今後登場する for 文など重要な項目があります.その際に,スイートの範囲がどこまでかを示すのに,Python ではインデント(字下げ)を使用します.他の言語ではカッコを使用したり,ブロックの終了を示す文字列を入れたりしますが,Python では区切りの記号を使用しませんので,このインデントが非常に重要です.インデントが正しくないと実行時にエラーが出ますので,注意してください.

      インデントの例

      if hoge:
          Do this
           Do that
      

      上のようにスイートのインデントがそろっていない場合には,下図のようなエラーとなります.

      一方で,以下のソースのような場合,各文のインデントがバラバラでもエラーとはなりません.ただし,見づらいので,決してこのような書き方を推奨はしません!

      if hoge:
          Do this
      elif hege:
              Do that
      else:
        Do it
      

    7. 2値の交換
    8. 教科書 p.70 List 3-31 で説明のある値の交換はとても便利な機能なので,この授業でも頻繁に使用することになると思います.活用してください.

    9. sorted 関数
    10. 教科書 p.72 の sorted 関数も便利な関数です.本来は複数の値を [ ] で囲むリストが登場したところ(教科書 p.164)で詳しく扱うものですが,今回ここで紹介されていますので,適宜使用してください.

      リストとは複数の値(数値や文字列等)を一つの名前で管理できる便利なもので,通常は配列と呼ばれるものです.配列を使用できるようになると,実用的なプログラムを作成することが可能になりますが,残念ながらプログラミング入門IIの範囲です.

      また,教科書 p.73 の代入演算子と代入式は今回は省略します.

    11. match 文
    12. 他の言語では switch 文として用意されている機能とほぼ同じです.今回の授業では扱わないこととしますが,一応見ておいてください.

    13. プログラムの構成要素
    14. 重要なことが網羅的にまとめてありますので,しっかりと読んでおいてください.

  5. 演習

    今回の演習問題です.

  6. 本日のまとめ

  7. 宿題

    宿題が公開されるのは明日木曜日10:00の予定で,締切りは来週の月曜日11月10日の13:00です.

  8. 次回の予習範囲

    次回は教科書のp.90-101の範囲を学習しますので,予習をしてきてください.

    また,次回はいよいよ第1回目の確認テストを行います.範囲は教科書の p.73 までです.復習をしっかりしておきましょう.


目次ページに戻る