見出し画像

#45 じゃんけん1

● 問題

PCとじゃんけんします。
じゃんけんは,グー(0),チョキ(1),パー(2) と数字を入力します。
判定が間違っているようです。
また,0,1,2以外の数字を入力したときにエラーになります。 

import random

janken = ['グー','チョキ','パー']

pc_select = random.randint(0,2)
my_select = input('じゃんけん:グー(0),チョキ(1),パー(2)')

if janken[pc_select] == 'グー':
    if janken[int(my_select)] == 'グー':
        print('あいこ')
    elif janken[int(my_select)] == 'チョキ':
        print('負け')
    elif janken[int(my_select)] == 'パー':
        print('勝ち')

if janken[pc_select] == 'チョキ':
    if janken[int(my_select)] == 'チョキ':
        print('あいこ')
    elif janken[int(my_select)] == 'グー':
        print('負け')
    elif janken[int(my_select)] == 'パー':
        print('勝ち')

if janken[pc_select] == 'パー':
    if janken[int(my_select)] == 'パー':
        print('あいこ')
    elif janken[int(my_select)] == 'グー':
        print('負け')
    elif janken[int(my_select)] == 'チョキ':
        print('勝ち')

print(f'あなた:{janken[int(my_select)]} vs PC:{janken[int(pc_select)]}')

● 解答

場合分けが多い場合,エラーを特定するには,全ての場合をつくす必要があります。
乱数が使われていると,場合をつくすのに手間がかかってしまうので,その部分のプログラムを定数に変更して実行するとよいでしょう。
pc_select = random.randint(0,2) を pc_select = 0,pc_select = 1,pc_select = 2 と順に変更してPCの手を固定します。あとは,自分でもグー(0),チョキ(1),パー(2)と順に入力して,9つ全部のパターンを調べればよいでしょう。

import random

janken = ['グー','チョキ','パー']

pc_select = random.randint(0,2)
my_select = input('じゃんけん:グー(0),チョキ(1),パー(2)')

if my_select in ['0','1','2']: # 追加
    if janken[pc_select] == 'グー':
        if janken[int(my_select)] == 'グー':
            print('あいこ')
        elif janken[int(my_select)] == 'チョキ':
            print('負け')
        elif janken[int(my_select)] == 'パー':
            print('勝ち')

    if janken[pc_select] == 'チョキ':
        if janken[int(my_select)] == 'チョキ':
            print('あいこ')
        elif janken[int(my_select)] == 'パー'#変更
            print('負け')
        elif janken[int(my_select)] == 'グー'#変更
            print('勝ち')

    if janken[pc_select] == 'パー':
        if janken[int(my_select)] == 'パー':
            print('あいこ')
        elif janken[int(my_select)] == 'グー':
            print('負け')
        elif janken[int(my_select)] == 'チョキ':
            print('勝ち')

    print(f'あなた:{janken[int(my_select)]} vs PC:{janken[int(pc_select)]}')
else# 追加
    print('入力を確認してください:グー(0),チョキ(1),パー(2)'# 追加

ユーザーから入力された値の判定はプログラミングでも難しいものの1つです。様々な方法があるのですが,今回は,次のような方法で解決することにしました。
if my_select in ['0','1','2']: は 入力された値 my_select に 0,1,2が含まれていたとき,真(True)となります。それ以外では,入力確認のメッセージを表示します。

#Python  #プログラミング

この記事が気に入ったらサポートをしてみませんか?