電気エネルギーの流れと設計 2025.11.26

制御構造2

Back to index page


  1. 本日の内容
  2. 条件分岐 続き
    1. 論理演算子
    2. 複数の条件が同時に成立しないといけないような場合には論理演算子を使用することがあります.複数の条件が同時に成立する場合に必要な演算子としては論理積(and)があり,複数の条件のどれか一つが成立すればよいのであれば論理和(or)を使用します.

      条件A条件B A and B A or B

    3. 多重の if 文
    4. if 文の中に if 文を入れることも可能です.うるう年を判定するプログラムを考えてみましょう.うるう年とは基本は西暦年が4で割り切れるときですが,100では割り切れない年です.ただし,400で割り切れる年はうるう年ということになっています.

      from random import randint
      
      year = randint(2000, 2200)
      # year = 2000
      # year = 2100
      
      print(f'Year {year} is ', end = '')
      
      if year % 4 == 0:
          if year % 400 == 0:
              print('a leap year.')
          elif year % 100 == 0:
              print('not a leap year.')
          else:
              print('a leap year.')
      else:
          print('not a leap year.')
      

      上のプログラムは論理演算子を使用すると少しだけ短く書けます.

      from random import randint
      
      year = randint(2000, 2200)
      # year = 2000
      # year = 2100
      
      print(f'Year {year} is ', end = '')
      
      if year % 4 == 0:
          if year % 100 == 0 and year % 400 != 0:
              print('not a leap year.')
          else:
              print('a leap year.')
      else:
          print('not a leap year.')
      

      演習問題

      1. 1から12までの整数を乱数により1つ発生させ,それを今年の月とします.その月の日数が何日まであるかを以下のように答えるプログラムを作成しましょう.
      2. Month: 7
        Days: 31
        

        解答例

      3. 1から30までの整数を乱数により1つ発生させ,それを今月の日付とします.その日が何曜日かを答えるプログラムを作成しましょう.
      4. Date: 18
        Tuesday
        

        解答例

  3. 反復処理
  4. 特定の処理を繰り返し実行する反復処理には for 文と while 文があります.どちらも同じように使用できますが,反復回数が決まっている単純な繰り返しの場合には for 文が,回数が決まっていないような処理には while 文が適しています.

    処理を繰り返すその流れが周回することから,ループとも呼ばれます.
    for ループと while ループ
    1. while 文
    2. while 文の書き方は基本的には以下のようになります.

      while 式:
          文
      

      式が真のときに文を実行します.ループにするためには,なんらかの変数の値が変わっていくような条件にしていきます.例えば,素因数分解だと以下のような例になります.

      from random import randint
      
      num = randint(100, 999)
      print(f'Decomposition of {num} into prime numbers: ', end = '')
      
      i = 2
      
      while num > 0:
          if num % i == 0:
              print(i, end = ' ')
              num //= i
          else:
              i += 1
      else:
          print()
      

      3桁の正の整数を乱数により1つ発生させ,その素因数分解を行います.実行すると,例えば以下のようになります.

      Decomposition of 144 into prime numbers: 2 2 2 2 3 3
      

      演習

      1. 5桁の正の整数を乱数により1つ発生させ,その各位の数を順に取り出して表示するプログラムを作成しましょう.
      2. A number with 5 digits: 81243
        Each digit of places: 8 1 2 4 3
        

        考え方

        基準となる数 base = 10000 を定義する
        num を base で割ると万の位を取り出せる
        例えば 54321 // 10000 --> 5
        num を base で割った余りが次の千の位の準備になる
        54321 %= 10000 --> 4321
        base を10で割った値に更新しておく
        10000 //= 10 --> 1000
        それを base が 0 になるまで続ける
        

        解答例


Back to index page