🐥

pythonでじゃんけんプログラムを作成する(基礎)

2023/05/26に公開

じゃんけんゲーム

こんにちは!わいわわです。
AIやpythonの勉強でprogateさんのカリキュラムを並行して学習しており、
「じゃんけんゲーム」の作成がありましたのでアウトプットとしてまとめます。
今回のポイントはモジュールやライブラリになります!

コンピューターとじゃんけんするプログラムを作る

今回はファイルが2つあります。
関数をまとめた「utils.py」
プログラムを書いた「script.py」です!

utils.py
def validate(hand):
    if hand < 0 or hand > 2:
        return False
    return True

def print_hand(hand, name='ゲスト'):
    hands = ['グー', 'チョキ', 'パー']
    print(name + 'は' + hands[hand] + 'を出しました')

def judge(player, computer):
    if player == computer:
        return '引き分け'
    elif player == 0 and computer == 1:
        return '勝ち'
    elif player == 1 and computer == 2:
        return '勝ち'
    elif player == 2 and computer == 0:
        return '勝ち'
    else:
        return '負け'
script.py
import utils
import random

print('じゃんけんをはじめます')
player_name = input('名前を入力してください:')
print('何を出しますか?(0: グー, 1: チョキ, 2: パー)')
player_hand = int(input('数字で入力してください:'))

if utils.validate(player_hand):
    computer_hand = random.randint(0,2)
    
    if player_name == '':
        utils.print_hand(player_hand)
    else:
        utils.print_hand(player_hand, player_name)

    utils.print_hand(computer_hand, 'コンピューター')
    
    result = utils.judge(player_hand, computer_hand)
    print('結果は' + result + 'でした')
else:
    print('正しい数値を入力してください')

解説

モジュール

以前投稿したprogateさんのカリキュラムである「りんごの会計プログラム」ではファイルは1つでした
今回はプログラム量が多くなってしまったため、ファイルを2つにしています。
このファイルのことをモジュールといいます。
モジュールは別のモジュールを呼び出して使用することができ、

script.py
import utils

↑その表記がこれです、「import ファイル名」!
また、実際にscript.pyでutils.pyの関数を使用するときは
例)utils.pyのvalidate関数を使用したい時は

utils.validate():

のように「ファイル名.関数名():」で使用できます。

ライブラリ

pythonにはあらかじめ便利なモジュールが用意されており、それを標準ライブラリと呼びます。
同じくimportで読み込むことで便利な関数を利用できるようになります。
今回はrandomモジュールに用意されている関数randintを使用しています。

script.py
import random

↑読み込み、、、

script.py
computer_hand = random.randint(0,2)

↑呼び出し使用しています。
今回はじゃんけんゲームのコンピューターの手を
0~2のランダムな数字を生成することで実装しています。

戻り値

judge関数には、returnを用いた「戻り値」を使用しています。
条件がそろえばreturnでその値を返す、ようなイメージでこれを戻り値といいます
今回はコンピュータとのじゃんけん結果をreturnで戻り値にし、(勝ち・負けなど)
それをresult変数に代入、出力しています!

所感

今回はpythonのプログラムの中でもモジュールやライブラリなど、
ただ四則演算を行う簡単なプログラムよりも少し発展的な内容でした。
rubyをやっていたこともあり、問題なく理解できているので、
引き続き次のステップに取り組んでいきます!!

Discussion