# -*- coding: utf-8 -*-
"""
接待ジャンケンと勝敗表示（プログラム）
"""
# これは，難易度１を達成するプログラムのソースコードです．
# これを流用する場合は，内容を理解し，コメントを追加しなさい．
# 難易度２以上の達成を目指すには，このコードからでは遠回りになる場合があります．
# きちんと自分で考えて試行錯誤することが大切です．


import random


def main():
    # ジャンケンの手を予めlistで用意するとスッキリ
    HAND_STR_JP = ["グー", "チー", "パー"]
    # ついでに勝敗の表示文字列もlistで用意
    DWL_STR_JP  = ["あいこです", "あなたの勝ちです", "あなたの負けです"]
    dwl_usr_num = [0, 0, 0]  # あいこ，勝ち，負け，の記録用
    hand_dif    = 1  # 手の差（あいこ判定にも利用）

    while True:
        # あいこの際は掛け声が変わる（Trueなら1，Falseなら0）
        print(("どの手を出しますか", "あいこで")[hand_dif == 0])
        # 入力された整数がHAND_STRのインデックスに対応するよう調整
        hand_usr = int(input("グー(1)、チー(2)、パー(3)、おわり(0)：")) - 1
        print()  # 採点の都合上の空行

        # 入力された整数が0以下なら終了，2より大きいなら再入力
        if hand_usr < 0:
            break
        elif hand_usr > 2:
            continue

        # あいこの際は掛け声が変わる（Trueなら1，Falseなら0）
        print(("ジャンケン", "しょ")[hand_dif == 0])

        # 「ＣＰＵの手」を乱数で決定（等確率）
        # ただし，このアプローチでは難易度２を達成できない
        # 逆転の発想が必要
        hand_cpu = random.randrange(3)

        # 結果の表示
        print("ＣＰＵ：", HAND_STR_JP[hand_cpu])
        print("あなた：", HAND_STR_JP[hand_usr])
        print()  # 空行

        # 数値化した手の差から勝敗を判定
        hand_dif = hand_cpu - hand_usr

        # 勝敗の記録を更新（長さ3のlistなら-1が2の位置）
        dwl_usr_num[hand_dif] += 1
        if hand_dif == 0:
            continue
        print(DWL_STR_JP[hand_dif])
        win_rate = int(dwl_usr_num[1] * 100 / (dwl_usr_num[1] + dwl_usr_num[2]))
        print(f"あなたの {dwl_usr_num[1]} 勝 {dwl_usr_num[2]} 敗 {dwl_usr_num[0]} 分で、勝率 {win_rate} ％ですね")
    
    input("\nEnterを押してプログラムを完全終了")


if __name__ == "__main__":
    main()
