#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 #プログラミング
この記事が気に入ったらサポートをしてみませんか?