読者です 読者をやめる 読者になる 読者になる

@ゲー単走部

ローグライク雑記。変愚蛮怒、DCSSなど。

じゃんけんプログラム 入力してCPUと戦う

コマンドライン引数で規定回数を設定し、引数を与えなかったら規定回数を設定しないというのをやりたかった。
max_count=∞とかいう書き方ができないので、例外処理で誤魔化している。
意図的に例外を起こしうるようなコード書かずにmax_countが定義されない条件で条件分岐させたほうがいいのか?

import random
import sys

count_win = 0
count_lose = 0
count_draw = 0
count = 0

tmp = ['g', 'c', 'p']
judge = { 'g':'c','c':'p','p':'g' }

my_list = []
cpu_list = []

try:
    if len(sys.argv) > 1:
        if int(sys.argv[1]) >= 1:
            max_count = int(sys.argv[1])
        else:
            print('cmd引数を無効として進める')
except ValueError:
    print('cmd引数を無効として進める')

print('game開始\n')

while True:
    my_jank = input()
    if my_jank == 'stop':
        break
    if my_jank not in tmp:
        print('正しく入力せよ\n')
        continue

    count += 1

    cpu_jank = tmp[random.randint(0,2)]
    my_list.append(my_jank)
    cpu_list.append(cpu_jank)

    if my_jank == cpu_jank:
        count_draw += 1
        print('引き分け\n')
    elif cpu_jank == judge[my_jank]:
        count_win += 1
        print('勝ち\n')
    else:
        count_lose += 1
        print('負け\n')

    try:
        if count == max_count:
            print('規定回数に達したのでゲーム終了です\n')
            break
    except NameError:
        pass


print('win:', count_win, 'lose:', count_lose, 'draw:', count_draw)
print(my_list)
print(cpu_list)