Python入門講座

【Python講座】リスト型を覚えてじゃんけんプログラムを作ろう

皆さんこんばんわTwitter APIを活用して、久々にPythonをレベルアップさせようと目論むも、申請したdeveloper accountの返事が全然帰ってこなくて足踏み中のノンストップ飯田です。

今日はリスト型について学んでいきましょう。
リスト型を学んだら前回の条件式と、これまでの知識を活用してじゃんけんゲームを一緒に作りたいと思います。

↓あなたの応援が飯田の力に!!
ブログランキング・にほんブログ村へ
にほんブログ村




リスト型のつくり方

リスト型は、その名のとおり複数の値を格納しておける型です。
数値型も文字型もどちらも格納可能ですが、数値と文字を混在させることは不可です。
今回はリストを使って条件式も組み合わせたじゃんけんプログラムを書いてみましょう。

では早速リスト型を書いてみましょう。
じゃんけんのグー、チョキ、パーをじゃんけんリストに格納してみます。
なお、変数の時に学んだように、リストについても自分で名称をつけます。

jyanken = [“グー”,”チョキ”,”パー”]

これでリスト作成完了です。
では、きちんとリストができているかprint関数で出力してみましょう。
出力方法は、変数の時と同様です。


>>>print(jyanken)
[‘グー’, ‘チョキ’, ‘パー’]

きちんと格納できていますね。

リストから好きな文字を取り出す

リストに格納した値を一つだけ取り出したい。
そんな時はどのように、コードを書けばいいのでしょうか?

例えば、チョキをリストから取り出したい時は以下のようにコードを書きます。

>>>print(jyanken)
チョキ

取り出せましたね。ただ、じゃなくてだと思った!という方が殆どだと思います。
実は、リスト内に格納された数値に振られている番地は以下のようになっているのです。

【図】リストに格納された値の番地

そのため、チョキはで取り出すんですね。では試しに、グーを取り出してみてください。


>>>print(jyanken[0])
グー

リストからランダムに値を取り出す

リストから値の取り出し方が分かったところで、ランダムに値を取り出す方法を考えてみましょう
じゃんけんリストからランダムに値を取り出すことができれば、一人でもじゃんけんができちゃいますね!

リストから値を取り出すには、リストの番地(targetと呼びます)を指定する必要があります。
つまり、ランダムで値を取り出すには番地を変数aにして(変数名はなんでもOKです)、ランダムに0~2が代入されるようにしてあげれば言いわけです。
(慣れてくれば、思いつくようになるので、初めは思いつかなくても全然大丈夫です。)
変数aに0~2をランダムで代入する際には、Pythonの標準ライブラリ(※)であるRandomモジュールを使用します。

Pythonには、やりたい事に応じてあらかじめ用意されたいくつもの”ライブラリ”が存在します。
randomモジュールは、整数をランダムで生成する目的で用意されており、randint関数やrandrange関数が使用可能です。
(いずれライブラリや関数については別途記載したと思います。)
モジュールを使用する時は、初めに import モジュール名で呼び出しを行ってからコードを書いて行きます。

では、randomモジュールを使ってみましょう。
と、その前に、、、そろそろコマンドプロンプトではなく、プログラムファイルを作ってそこにコードを書いて実行するということを覚えましょう。そんなに難しいことはないです。

じゃんけんプログラム用のファイルを用意しよう

まず、IDLEとプログラムを検索してみてください。
私は古いバージョンのPythonも入っているので、2つ出てきましたが多分1個だけ出てくるはずです。

では、IDLEが開けたら「file」>「new file」でファイルを新しく開いてください。

ちょっと回り道をしてしまい、すいませんでした。ではrandomモジュールのrandrange関数を書いていきましょう。
(見やすいので、背景黒で引き続きプログラムは書いていきます。)

#cording:utf-8

import random
a = random.randrange(3)
print(a)

プログラムを書けたら、「Run」>「Run Module」を選択しましょう。プログラムは実行する場合、必ずファイルを保存する必要があるため、”jyanken.py”とでも名前をつけて保存しましょう。
保存すると、プログラムが実行されます。0か1か2が表示されたと思います。
何回かRun Moduleを繰り返してみましょう、その都度0・1・2いずれかの数字がランダムで表示されるかと思います。
これでランダム関数もあなたのものです!

では、jyankenリストからランダムに値を取り出すプログラムを先ほどまでの説明を踏まえて、考えてみてください。


     #randomモジュールをインポート、randrange関数で変数aに0~2をランダムに代入
import random
a = random.randrange(3)

#ジャンケンリストを作成し、ジャンケンリストの”a”番目の値を出力
jyanken = [“グー”,”チョキ”,”パー”] print(jyanken[a])

どうでしょうか?できましたか?これであ相手の作成はできましたね!

↓アイフォンアプリでプログラミング学習が可能(初級レベルは無料)

プレイヤー側の設定を行い、条件式を使って勝敗を判定する!

相手側の設定ができたところで、今度はプレイヤー側の出す手に応じた勝敗判定
そして、勝敗やあいこに応じたメッセージのプログラムを追加していきましょう
※自身がない方は前回の条件式を復習してからでもOKです。

それでは、まず相手の出した手を格納する変数enemyと自分の出す手を格納する変数prayerを設定し、
次にenemyにprayerが勝てる手だったら勝利と判定し「おめでとう!」と、あいこだったら「もう一度!」と、
負けだったら「残念!!」と勝敗結果とともに出力する条件式を追加しましょう。

#randomモジュールをインポート、randrange関数で変数aに0~2をランダムに代入
import random
a = random.randrange(3)

#ジャンケンリストを作成し、ジャンケンリストの”a”番目の値を変数enemyに代入
jyanken = [“グー”,”チョキ”,”パー”] enemy = jyanken[a]

#プレイヤーの手をprayer変数に代入(グーかチョキかパーを入れてください)
prayer = “グー” 

#双方の手を条件式で勝敗判定、勝敗とメッセージを出力する
if enemy == prayer:
    print(“あいこです、もう一度!”)
elif enemy == “グー” and prayer == “パー”:
    print(“あなたの勝ち!おめでとうございます!!”)
elif enemy == “チョキ” and prayer == “グー”:
    print(“あなたの勝ち!おめでとうございます!!”)
elif enemy == “パー” and prayer == “チョキ”:
    print(“あなたの勝ち!おめでとうございます!!”)
elif prayer== “グー” and enemy == “パー”:
    print(“あなたの勝ち!おめでとうございます!!”)
elif prayer == “チョキ” and enemy == “グー”:
    print(“あなたの勝ち!おめでとうございます!!”)
elif prayer == “パー” and enemy == “チョキ”:
    print(“あなたの勝ち!おめでとうございます!!”)
else:
    print(“エラー発生”)

じゃんけんのパターンはお互い3つの選択肢があるため、合計9パターン。
うち、あいこはどんな手でも、表示すべき内容が一緒のため一番初めにあいこをさばいて、
その後で、プレイヤーが勝つ3パターンと、相手が勝つ3パターンを表示しています。
ちなみに、prayer変数にグー・チョキ・パー以外が代入された場合のことを想定して、else(どれにも当てはまらなかった場合)、エラー発生と表示するようにしています。
このように、どう実装するかを考えるのってとっても頭の体操になりますし、すごく楽しい時間です。

条件式の場合、必ずどれにも当てはまらいケースを想定してelseで受けるようにしておくと、プログラムミスを防げるので、ぜひやってみてください。

もしエラーが出てしまう場合、インデント(if,elif,elseの次の行の字下げ(スペース4文字))または、スペルミス等がないか丁寧にチェックしてデバッグ処理をしてみてください。飯田も、2回ほどデバッグ処理をしました(笑)

次回はこの、じゃんけんプログラムをウインドウ表示し、プレイヤー用の入力エリアを作って、じゃんけんゲームに進化させたいと思いますので、ぜひ次回も一緒に学んでいきましょう!

そしてそろそろ、練習を繰り返し定着をさせることが必要です。

上にも張りましたが、Progateというアプリでpythonの学習が可能です。私もやってみましたが、穴埋め形式で電車等でもできるので、オススメです。しかも、初めに覚えるべき基礎の部分はなんと無料でできました!

↓progateのダウンロードはこちらから

それでは、また次回お疲れさまでした!