プログラミング入門II 演習課題 2025.06.04

Back to text page


  1. 階乗計算の活用

    数学における順列と組み合わせは以下の公式で計算されることはすでに学習していると思います.

    乱数を用いて 10 から 20 の整数のどれかを発生させて m とし,5 から 10 の数を n としたとき,以下のように mPnmCn を計算するプログラムを階乗計算を関数にして作成しましょう.

    15P9 = 1816214400
    15C9 = 5005
    

    解答例1 (再帰使用)

    解答例2(反復処理使用)

  2. ラムダ式
  3. 教科書 p.290 にある map 関数とラムダ式の説明を参考に,2桁正の整数 10 個を要素に持つリストを作成し,続いて,各要素の値を2倍したリストを作成してみましょう.

    [61, 94, 33, 72, 62, 90, 86, 94, 34, 63]
    [122, 188, 66, 144, 124, 180, 172, 188, 68, 126]
    

    解答例

  4. リストのソートへのラムダ式の活用
  5. 5×2の要素を持つ2次元のリストを作ります.内側の要素が2個のリストの2番目(インデックスとしては1番目)の要素が大きい順にリストを並べ替えてみましょう.ラムダ式を使いますが,どの要素で並べ替えるかを key で指定します.

    lst = sorted(lst, key = lambda x: x[1])
    

    [[65, 21], [11, 52], [78, 61], [92, 65], [94, 53]]
    [[92, 65], [78, 61], [94, 53], [11, 52], [65, 21]]
    

    解答例

  6. 成績ソートの関数版

    5月14日の演習問題の i. の成績ソートを関数版にしてみましょう.今回は乱数でどの科目で並べ直すかを指定する形式とします.

    並べ替える科目名を覚えておくために以下の科目名リストも用意します.

    course = [' Eng', 'Math', 'Phys']
    

    No.   Eng  Math  Phys Total
      1    82    76     8   166
      2    72    28    72   172
      3    22    47    47   116
      4    35    56    21   112
      5    56    77    33   166
      6    34    73    33   140
      7    87    36    15   138
      8    43    63     4   110
      9    70    15    58   143
     10    16    46    86   148
    
    Sort score by Phys
    No.   Eng  Math  Phys Total
     10    16    46    86   148
      2    72    28    72   172
      9    70    15    58   143
      3    22    47    47   116
      5    56    77    33   166
      6    34    73    33   140
      4    35    56    21   112
      7    87    36    15   138
      1    82    76     8   166
      8    43    63     4   110
    

    ラムダ式を使用し,sorted 関数に key を与えることで並べ替える操作の関数を簡単に作れます.
    解答例

  7. filter関数

    0から9までの整数を乱数により20個発生させます.また別にターゲットとなる数として0から9の整数をどれか1つ発生させます.ターゲットの数が何個出たかを数えるプログラムをラムダ式と filter 関数を使用して作成しましょう.

    Numbers:  5 7 3 7 3 3 7 8 9 1 2 9 9 5 8 7 3 7 1 2
    Target number: 2
    Frequency: 2
    

    filter 関数でチェックしてできたリストの長さを見れば,何回出たかがわかります.
    解答例


Back to text page