この章のキーワード
- リスト
- インデックス
- randomライブラリ
- random.randrange()
- メソッド
この章のキーワード
色鉛筆の色(赤、青、黄色、緑・・・)や、学校のクラスメート(木村さん、加藤さん、上杉さん・・・)のように、たくさんあるものをプログラムで扱う時に便利なのが リスト です。他のプログラミング言語では 配列(はいれつ) とも呼ばれます。ここでは、おみくじの内容をリストで表してみることにしましょう。
kuji = ["大吉","中吉","小吉"]print(kuji[0])
このプログラムを実行すると「大吉」が表示されます。
“大吉”が表示される
[]
を使うことでリストを作ることができます。 ,
(カンマ)で区切って内容を複数入れます。おみくじのリストは文字なので、 "
で囲むことに注意してください。ここでは、 kuji
というリストを作りました。
kuji = ["大吉","中吉","小吉"]
リスト kuji
の中からひとつの要素を取り出す時には、 kuji[0]
のように []
の中に数字を入れます。この数字のことを インデックス または 添字(そえじ) と呼びます。1番目の「大吉」を取り出すときは0、2番目の「中吉」を取り出すときは1を指定します。リストのインデックスは1ではなく0から始まることに注意してください。
print(kuji[0])
“吉”や”凶”もリストに増やして表示させてみてください。
おみくじのリストを作ったので、実際に毎回違ったものが表示されるようにコードを追加しましょう。
import randomkuji = ["大吉","中吉","小吉"]i = random.randrange(3)print(kuji[i])
プログラムを実行すると、その都度「大吉」・「中吉」・「小吉」のどれかが表示されます。
ランダムに表示される
ランダムにくじを出すために、 random(ランダム) ライブラリを使います。 ライブラリ というのは、他の人が作ったプログラムのことです。 import(インポート) は「読み込む」という意味です。
import random
randomライブラリの randrange()
関数は与えられた数字未満の整数をランダムで返します。この場合、 randrange(3)
なので、変数 i
には0,1,2のうちのどれかの数字が代入されます。
その結果、4行目のprint文で大吉・中吉・小吉のどれかが表示されます。
i = random.randrange(3)print(kuji[i])
リストはfor文と組み合わせると便利です。名前をリストで与えるとみんなに挨拶するプログラムを書いてみましょう。
names = ["りゅう","レイ","ミサト","だいき"]for name in names: print(name + "さんこんにちは")
プログラムを実行するとそれぞれの人への挨拶文が表示されます。
for 変数 in リスト
という書き方で、リストの中の要素ひとつひとつを繰り返し処理できます。 in
は「~の中に~」という意味なので、全体では「リストnamesの要素を変数nameに入れて繰り返す」という意味になります。
このように、Pythonではリストをかんたんに繰り返し処理することができます。
for name in names:
リストの中のデータは文字列以外にも入れることができます。今度は、数字のリストを作ってその中で一番大きい数字を見つけてみましょう。
nums = [2,5,3,9,1]max_num = 0for num in nums: if max_num < num: max_num = numprint(max_num)
このプログラムを実行すると、最大の数9が表示されます。
9が表示された。
リスト nums
を初期化します。数字をカンマで区切って代入しています。変数 max_num
には、最大の数を入れます。最初はデータを比較してないので0にしておきます。
nums = [2,5,3,9,1]max_num = 0
3行目の for num in nums
ではリストnumsから一つずつ取り出してnumに入れています。4行目と5行目では、max_numとnumを比較してnumのほうが大きかったらmax_numにnumを代入しています。
たとえばnumsの最初は2なので、max_numの0とnumの2を比較して、numのほうが大きいのでmax_numを2にしています。
for num in nums: if max_num < num: max_num = num
下は、数字の入ったリストの中から最小値を求めるプログラムです。答えは1になるはずですがうまくいきません。コードを修正してください。
nums = [2,5,3,9,1]min_num = 0for num in nums: if min_num > num: min_num = numprint(min_num)
リストに値を追加したり、並べ替えたりするのには、便利なリストの メソッド が使えます。メソッドは、リストのあとに .
で書きます。
nums = [10,6,3,8,20]
nums.append(5)print(nums) # [10,6,3,8,20,5] が出力される
nums.sort()print(nums) # [3,5,6,8,10,20] が出力される
nums.reverse()print(nums) # [20,10,8,6,5,3] が出力される
append()
は要素を追加するメソッドです。この例では、リストの最後に5が追加されます。
nums.append(5)
sort()
は並べ替えのメソッドです。数字の場合は小さい順に並べ替えられます。
nums.sort()
reverse()
は逆順にするメソッドです。
nums.reverse()
リスト [10,6,3,8,20]
を、メソッド reverse()
を 使わず に逆順にするプログラムを書いてください。
大吉、中吉、小吉、凶が出るおみくじを作ってください。ただし、凶が出る確率は他のくじの1/3にしてください。
100回以上おみくじを引いて集計し、それぞれの出る確率を確認できるプログラムを作ってください。結果は、例えば次のように確率が分かるように表示してください。
実施回数 100000 回大吉 30046回 30.0%中吉 29853回 29.9%小吉 30169回 30.2%凶 9932回 9.9%