最近Webスクレイピングの興味からPythonの勉強を始めました。
使っている教材でじゃんけんゲームを作ってみようという課題があり、若干詰まりながらもなんとか作成することができたので、この場でアウトプットをしていきます。
全体のコード
まずは全体のコードから。
import random
#リストにじゃんけんの手を格納
list=["グー","チョキ","パー"]
#プレイヤーの手をインプット
player = input("あなた:")
#リストから手を出す
com = random.choice(list)
print("相手:{}".format(com))
#プレイヤーと相手の手で勝敗を決める
#勝敗もプリント
if player == com:
print("あいこです。")
elif player == "グー":
if com == "チョキ":
print("あなたの勝ち")
elif com == "パー":
print("あなたの負け")
elif player == "チョキ":
if com == "グー":
print("あなたの負け")
elif com == "パー":
print("あなたの勝ち")
elif player == "パー":
if com == "グー":
print("あなたの勝ち")
elif com== "チョキ":
print("あなたの負け")
コードの流れ
流れとしては以下のような感じです。
リストに「グー、チョキ、パー」を格納
↓
自分の手をインプット
↓
リストから相手の手をランダムに出力
↓
If文で勝敗を決めて出力。
というような感じ。
コードは結構シンプルで単純。
解説
というわけで行ごとに解説していきます。
今回はrandom モジュールを使います。
random モジュールはリスト内や数値、文字などをランダムに出力してくれる優れものです。
randomをインポートしてリストにじゃんけんの手を格納します。
import random
#リストにじゃんけんの手を格納
list=["グー","チョキ","パー"]
#プレイヤーの手をインプット
player = input("あなた:")
#Listから手を出す
com = random.choice(list)
print("相手:{}".format(com))
そしてinputでプレイヤーの手をインプットします。
Inputした文字はPlayerに変数として格納されます。
その後randomでListの中の手を出力します。
いわばrandomはじゃんけんでいう相手ですね。
ちなみに相手の手はcomとして変数に格納されます。
次は勝敗をIf文で定義します。
#プレイヤーと相手の手で勝敗を決める
#勝敗もプリント
if player == com:
print("あいこです。")
elif player == "グー":
if com == "チョキ":
print("あなたの勝ち")
elif com == "パー":
print("あなたの負け")
elif player == "チョキ":
if com == "グー":
print("あなたの負け")
elif com == "パー":
print("あなたの勝ち")
elif player == "パー":
if com == "グー":
print("あなたの勝ち")
elif com== "チョキ":
print("あなたの負け")
”あいこ”の場合は、Player=com
ようはListの中身の文字とInputで入力した文字と一緒の場合は”あいこ”になります。
似たような要領で勝敗を決めていきます。
先程のInputで入力された文字(変数のPlayer)と相手が出した文字(変数のcom)をIf文で定義します。
これで完成になります。
詰まったポイント
私はIf文で詰まりました。
初めは相手の出す手と自分の出す手を変数にしてIf文で勝敗を決めるように設定しようと試みましたが全然動かず。。。
x = "グー"
y = "チョキ"
z = "パー"
list=["x","y","z"]
player = input("あなた:")
a = "グー"
b = "チョキ"
c = "パー"
com = random.choice(list)
print("相手:{}".format(com))
if x == a:
print("あいこです。")
elif x == b
print("ちょきの勝ち")
#以下省略
↑のようにListの中身の手を変数に指定、自分の手を変数に指定して変数同士で勝敗を決めるIF文で作ろうとしたのですが、うまく動かず。
わざわざ変数に指定する必要なくね?と頭によぎり変数指定を取りやめることで完成しました。
変数同士を条件にIF文って作れないのだろうか。。。
暇なときにでもまた考えてみます。