乱数を用いて10から15の範囲の整数を一つ発生させ,1からその数までを要素として持つリストを作成しましょう.
Random number: 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
解答例
2桁の正の整数を乱数により10個発生させ,それらを要素として持つリストを作成しましょう.
55 23 69 78 40 77 38 54 20 49 |
解答例
リストの要素の中身をバラバラに並べ替えることが 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 というメソッドもありますが,こちらは何個の要素をランダム化するかを指定する必要があります.
max 関数と min 関数を使用して,乱数により発生させた2桁の正の整数10個の最大値と最小値を求めるプログラムを作成しましょう.
Random numbers: 49 35 27 49 99 93 14 55 99 63 The maximum: 99 The minimum: 14 |
* による要素表示は f文字列の中に {} で埋め込むことはできません.
内包表記を使用して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 |
解答例 2 (教科書 p.202 にある文字列化を使用した例)
前問の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 を使うには行と列を入れ替えないといけません.
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 |
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 文が必要です.