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

Back to text page


  1. 内包表記によるリスト作成1

    乱数を用いて10から15の範囲の整数を一つ発生させ,1からその数までを要素として持つリストを作成しましょう.

    Random number: 15
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    

    解答例

  2. 内包表記によるリスト作成2

    2桁の正の整数を乱数により10個発生させ,それらを要素として持つリストを作成しましょう.

    55 23 69 78 40 77 38 54 20 49
    

    解答例

  3. リストの要素のシャッフル
  4. リストの要素の中身をバラバラに並べ替えることが random モジュールの shuffle メソッドで可能です.以下のように 1 から 20 までの数字が順に入ったリストの中身を並べ替えてみましょう.

    Original: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
    Shuffled: [11, 7, 4, 16, 1, 10, 18, 19, 13, 12, 6, 9, 20, 5, 2, 3, 15, 14, 8, 17]
    

    shuffle はリストそのものを変えてしまいますが,これを破壊的処理と言います.

    random.shuffle(lst)
    

    のようにすると,リストの中身が変わっています.他にも中身自体は変えない sample というメソッドもありますが,こちらは何個の要素をランダム化するかを指定する必要があります.

    解答例

  5. 最大値と最小値
  6. max 関数と min 関数を使用して,乱数により発生させた2桁の正の整数10個の最大値と最小値を求めるプログラムを作成しましょう.

    Random numbers: 49 35 27 49 99 93 14 55 99 63 
    The maximum: 99
    The minimum: 14
    

    * による要素表示は f文字列の中に {} で埋め込むことはできません.

    解答例

  7. 2次元リスト生成

    内包表記を使用して2次元リストを作りましょう.8×8のサイズとし,要素は0から255の範囲の整数値とします.

     36  65  30 251 112 245 200  71 
     35 131   5 205  31 174 205  86 
     11  80 222 209 134  17  38 226 
    164  44 174 157  34  48 176 243 
     91  53 200 158 200 131 126 153 
    131 165 109 164  51  97  97  85 
     27  71  32 216 237 143 159 230 
    199 143  77 168  36 129   8  54
    

    解答例 1

    解答例 2 (教科書 p.202 にある文字列化を使用した例)

  8. 行と列に関する計算

    前問の2次元リストに行と列の合計も表示するように変更しましょう.

     137    9   88  193   54  165  173  231 | 1050
      42   71  117   80  115  147  149  249 |  970
      27  244  253  140  150   68   43  158 | 1083
      58  157  169   71   20  108   38   98 |  719
     215  234  208   46  156  141  172   41 | 1213
     104   88  164   76   64   50  138  136 |  820
      49   84  114   37   19   35   40  243 |  621
     242   64  155  212   91   38  177  190 | 1169
    ----------------------------------------
     874  951 1268  855  669  752  930 1346 
    

    リストの合計は sum 関数で求まりますが,列の計算で sum を使うには行と列を入れ替えないといけません.

    解答例1 for 文で列の和

    解答例2 行と列の入れ替え

  9. 文字列のリスト
  10. 11月5日の演習問題の iv. でトランプのカードを表示することを行いました.Joker 無しとして普通のカード52枚について,以下のような文字列のリストを準備しておくと,if 文が不要になります.作り直してみましょう.

    suite = ['spades', 'diamonds', 'hearts', 'clubs']
    mark = ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']
    

    Random number: 16
    4 of diamonds
    

    解答例

  11. カードのシャッフル
  12. iii. で使用した shuffle を使うと以下のように52枚のカード全てをランダムに表示できます.こちらもやってみましょう.

        5 of clubs         8 of diamonds   Jack of spades        2 of diamonds  
        6 of diamonds      6 of spades    Queen of spades        5 of spades    
     King of diamonds      7 of hearts      Ace of spades       10 of hearts    
        5 of hearts        6 of clubs         3 of clubs         7 of diamonds  
        9 of spades       10 of spades        3 of hearts        6 of hearts    
    Queen of hearts        9 of diamonds      4 of clubs      King of clubs     
      Ace of hearts     King of spades        2 of hearts        9 of hearts    
      Ace of clubs         4 of hearts      Ace of diamonds      8 of clubs     
     King of hearts       10 of clubs         7 of clubs        10 of diamonds  
        7 of spades        3 of diamonds      9 of clubs         4 of spades    
     Jack of diamonds  Queen of clubs         2 of clubs         3 of spades    
     Jack of hearts     Jack of clubs     Queen of diamonds      4 of diamonds  
        8 of spades        8 of hearts        5 of diamonds      2 of spades 
    

    0 から 51 までの数字が入ったリストをシャッフルするだけですね.それと,上のように見栄え良く改行するには if 文が必要です.

    解答例


Back to text page