この記事を読むことで、Pythonのリストの基礎である、添字(インデックス)を指定して表示する方法と、添字の乱数を組み合わせてランダムに配列の中身を表示させるテクニックをゲーム感覚で楽しく且つスピーディーに学ぶことが可能になります。
Pythonの基礎を勉強する中でも特に、八王子駅や浦和駅など、北八王子、南浦和といった待ち合わせをする時に紛らわしいな、と感じた方は興味を持って下さる内容になっているのかもしれません。
なので、前半は八王子の方、後半は埼玉県の浦和、大宮、鴻巣の方や「埼玉あるある」に共感して頂けたら嬉しいです(=^x^=)
Python自作サンプル集へ
これからプログラミングを学ぶ方へ
プログラミングと資格へ
基本情報技術者試験トップへ
自己紹介
この記事を書いている今日は2021(令和3)年3月1日です。
この時期は入学などで1人暮らしを始める方もいらっしゃいますね。
そこで、学生の街で有名な東京の西の方にある八王子という街を題材とした「八王子占い」を作ってみました。
Pythonでリスト(配列)の添え字を乱数にして、「あなたは何八王子か」という
診断のゲームです。
八王子には、
・西八王子駅
・北八王子駅
・京王八王子駅
・(ふつうの)八王子駅
があります。
プログラムはコチラになります。
手順
1:乱数を使うためにランダムモジュールをインポートする
2:駅名のリストを用意する
3:リストの要素数(長さを調べる)
4:乱数を発生させて変数ekiに代入する
5:結果を「あなたは【北八王子駅】です」と言った形式で表示させる。
では、各手順ごとに見ていきます。
手順1:乱数を使うためにランダムモジュールをインポートする
import random
手順2:駅名のリストを用意する
station=[‘西’,’北’,’京王’,’(ふつうの)’]
手順3:リストの要素数(長さを調べる)
num=len(station)
このリストの場合は、要素数の長さが4になります。
手順5:乱数を発生させて変数ekiに代入する
eki=random.randrange(num)
ここで、randrangeを使うことで0から要素数未満の乱数を発生させます。
リストのインデックスは0からリストの長さ-1までになります。
手順5:結果を「あなたは【北八王子駅】です」と言った形式で表示させる。
print(‘あなたは、【’+station[eki]+’八王子駅】です!\n’)
最後に改行して見やすく出来るように、「\n」を入れています。
バックスラッシュNと読みます。
バックスラッシュは、Macでは「option」キーと「¥」を同時に押します。
ここまでのコードをまとめます。
#乱数を発生させるのに使うランダムモジュールをインポートする
import random
#駅名のリストを用意する
station=['西','北','京王','(ふつうの)']
#リストの要素数を調べる
num=len(station)
#乱数を発生させて、変数ekiに代入する
eki=random.randrange(num)
#診断結果の表示
print('あなたは、【'+station[eki]+'八王子駅】です!\n')
実行結果です。
このようにランダムに何八王子なのか出力されます。
ちなみに私は大学時代に京王八王子駅から徒歩2分の物件に住んでいました。
このコードでは、ちょっと物足りないな…と言う方は、馴染みのある場所とか、好きなキャラクターとかでアレンジして見ても良いかもしれません。
例えば埼玉県の浦和では、浦和駅の他に「浦和」が着く駅名は、
・北浦和駅
・東浦和駅
・西浦和駅
・南浦和駅
・武蔵浦和駅
・中浦和駅
・浦和美園駅
と、こんなにあるんですね。
八王子の倍の数ですし、どの浦和駅なのか迷っちゃいますね(涙)
そこで、上記の八王子のプログラムを改良して、浦和駅バージョンを作りたいと思います。
変更したのは2点です。
まず、リストです。
長さが8のリストでstation[0],station[1]・・・,station[7]までになります。
station=[‘東’,’西’,’南’,’北’,’武蔵’,’美園’,’中’,’(ふつうの)’]
ここで、気をつけなければ行けないのは、例えば北浦和、南浦和でしたら、浦和駅の前に北とか南が付きますが、「浦和美園駅」の場合は途中に付きますので、乱数が5(くどいようですが、リストの添字は0から始まるので、リストの「6番目」である浦和美園駅は、添字は「5」になります。)の時ように分岐を設ける必要が出てきます。
if eki!=5:#浦和美園ではない場合
print(‘あなたは、【’+station[eki]+’浦和駅】です!\n’)
else:#浦和美園駅の場合
print(‘あなたは、【浦和’+station[eki]+’駅】です!\n’)
と、乱数がeki=5で浦和美園駅になった場合は、それに対応する分岐を作りました。
!=で、ノットイコール、すなわち最初の分岐は浦和美園駅のekiの添字が5ではない場合です。下のelseで、ekiが5、すなわち浦和美園駅の場合の出力に対応しています。
実行結果です。
では、浦和駅バージョンの全コードを公開します。
#乱数を発生させるのに使うランダムモジュールをインポートする
import random
#駅名のリストを用意する
station=['東','西','南','北','武蔵','美園','中','(ふつうの)']
#リストの要素数を調べる
num=len(station)
#乱数を発生させて、変数ekiに代入する
eki=random.randrange(num)
#診断結果の表示
if eki!=5:#浦和美園ではない場合
print('あなたは、【'+station[eki]+'浦和駅】です!\n')
else:#浦和美園駅の場合
print('あなたは、【浦和'+station[eki]+'駅】です!\n')
それでは、良い物件が見つかって、楽しいキャンパスライフをお過ごしになることを願っております。
ちょっと話が脱線してしまいますが、「埼玉県民あるある」を調べたら、浦和と大宮が仲が悪いとか、千葉県をライバル視しているとかありました。
ゼリーフライって美味しそうですね。
あと、少し気になったのですが、「鴻巣」というと「免許」の話に限定されるようですね。それで、例えば埼玉県の越谷の方も、飯能の方も、みんな免許更新に鴻巣に集まるのでしょうか・・・。
それは大変だな。
だからという訳ではありませんが、免許はゴールドで行きましょう!!
ご精読ありがとうござました!!
■ 参考文献の紹介 ■
じっくり丁寧にPythonを学びたい方向けの書籍を紹介します。
Pythonを基礎から中級程度まで丁寧に学びたい方におすすめの書籍です。
まずはpaizaラーニングなどの学習コンテンツで1〜2巡(苦手な所は納得がいくまで何巡でも)してからこの本で学ぶと、自分の学習状況をブログなどでアウトプット出来るようになり、また、エラーなどの不明点を調べられる力もついていきます。