簡単じゃんけんプログラム
Python学習の一環として、PCと対戦するじゃんけんプログラムを作ってみました。
While文、if文使う基本要素が入っているので、非常に勉強になります。
環境: Google Colaboratory
条件:
じゃんけんルールに従う。
先に2勝した方が勝ち。
① 乱数を読み込む為、randomモジュールのrandint関数入れる。タイムモジュールも読み込む。
from random import randint
import time
② じゃんけんで出すそれぞれの手をhandsという変数に代入し、あいこ、負け、勝ちという3つの結果をrulesという変数に代入
hands = ['グー', 'チョキ', 'パー']
rules = ['あいこ', '負け', '勝ち']
win = 0
lose = 0
draw = 0
print('***じゃんけんゲームスタート!***')
③ ある条件が達成されるまで処理を繰り返すようにしたい為、While Trueで無限ループを作る。
while True:
④ Player側の処理を書いていきます。
Player側
0:グー 1:チョキ 2:パーの選択肢を設け、出力する。inputで入力欄設け、'あなたは何を出しますか??'に対し、数字を入力すると、入力された数字は文字列なので、数値に変換する必要があります。int型で数値に変換、pという変数に代入する。
print('0:グー 1:チョキ 2:パー')
p = int(input('あなたは何を出しますか??'))
#hands変数から上のp変数を入れてあげる
print('あなたは,' + hands[p] + 'を出す')
#上の処理を1秒止め、対戦形式に近い形にする。
time.sleep(1)
⑤ PC側の処理を書いていきます。
PC側
randomモジュールのrandintからランダムに('0:グー 1:チョキ 2:パー')の0~2までの値を取得し、変数mに代入する。変数pに入れた数字を使って、上記のhands変数よりじゃんけんの手を出力する。time.sleep関数を使い、1秒間を間を空ける形にする為、time.sleep(1)で対戦形式に近い形にする。
m = randint(0,2)
print('PCは,' + hands[m] + 'を出す')
time.sleep(1)
⑥ 勝敗プログラム
Playerが出した数字の変数pとPCが出した数字の変数mの数を引いて、3で割った余りで判定。マイナスが出ても判定できるよう余りが出力する% 代数演算子使う。じゃんけんプログラムに於いて、ココがキモになります。
例:
p:1(チョキ)-m:2(パー) 勝ち -1%3=余り2 elseの条件でwin
p:2(チョキ)-m:2(パー) あいこ 0%3=余り0 if条件でdraw
p:2(パー)-m:1(チョキ) 負け 1%3=余り1 elif条件でlose
p:0(グー)-m:1(チョキ) 勝ち -1%3=余り2 elseの条件でwin
p:0(グー)-m:0(グー) あいこ 0%3=余り0 if条件でdraw
p:1(チョキ)-m:0(グー) 負け 1%3=余り1 elif条件でlose
上記の考えを表したのが下記のコードになります。pからmを引いた数字を3で割り、余りを出力。0の場合は引き分けにて1カウント、1の場合は1カウント、elseで2の場合も1カウント
i = (p-m) % 3
print(rules[i])
if i == 0:
#drawの場合+1でカウント
draw = draw +1
elif i == 1:
#loseの場合+1でカウント
lose = lose +1
else:
#winの場合+1でカウント
win = win +1
time.sleep(1)
⑦ 出力プログラム
上記で記載した下の変数より、format文を使って文字列に置き換えるます。
win = 0
lose = 0
draw = 0
これらの変数をformat文を使って文字列に置き換えるという意味になります。
それぞれの{}は、win, lose, drawの中に入った数字がformat文で処理され、入ることになります。
print('{}勝/{}負/{}引き分け'.format(win, lose, draw))
#winに入った数字が2に達したら、勝ちにして、breakでWhileを抜ける。
if win == 2:
print('対戦結果は****???')
time.sleep(3)
print('「3勝で、あなたの勝ち。Yes, You are winner !」')
break
#loseに入った数字が2に達したら、負けにして、breakでWhileを抜ける。
if lose == 2:
print('対戦結果は****???')
time.sleep(3)
print('「3敗で、あなたの負け。Yes, You are loser !」')
break
time.sleep(1)
まとめ
from random import randint
import time
hands = ['グー', 'チョキ', 'パー']
rules = ['あいこ', '負け', '勝ち']
win = 0
lose = 0
draw = 0
print('***じゃんけんゲームスタート!***')
while True:
print('0:グー 1:チョキ 2:パー')
p = int(input('あなたは何を出しますか??'))
print('あなたは,' + hands[p] + 'を出す')
time.sleep(1)
m = randint(0,2)
print('PCは,' + hands[m] + 'を出す')
time.sleep(1)
i = (p-m) % 3
print(rules[i])
if i == 0:
draw = draw +1
elif i == 1:
lose = lose +1
else:
win = win +1
time.sleep(1)
print('{}勝/{}負/{}引き分け'.format(win, lose, draw))
if win == 2:
print('対戦結果は****???')
time.sleep(3)
print('「3勝で、あなたの勝ち。Yes, You are winner !」')
break
if lose == 2:
print('対戦結果は****???')
time.sleep(3)
print('「3敗で、あなたの負け。Yes, You are loser !」')
break
time.sleep(1)
出力結果
***じゃんけんゲームスタート!***
0:グー 1:チョキ 2:パー
あなたは何を出しますか??0
あなたは,グーを出す
PCは,グーを出す
あいこ
0勝/0負/1引き分け
0:グー 1:チョキ 2:パー
あなたは何を出しますか??1
あなたは,チョキを出す
PCは,パーを出す
勝ち
1勝/0負/1引き分け
0:グー 1:チョキ 2:パー
あなたは何を出しますか??1
あなたは,チョキを出す
PCは,グーを出す
負け
1勝/1負/1引き分け
0:グー 1:チョキ 2:パー
あなたは何を出しますか??2
あなたは,パーを出す
PCは,チョキを出す
負け
1勝/2負/1引き分け
対戦結果は****???
「3敗で、あなたの負け。Yes, You are loser !」
じゃんけんには負けてしまいましたが、うまくプログラムが可動しました。今回のプログラムでWhile文、if文について理解が進みました。
Author And Source
この問題について(簡単じゃんけんプログラム), 我々は、より多くの情報をここで見つけました https://qiita.com/kyokohama66/items/e431f6698319fb02f32e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .