じゃんけん(無限ループの利用)

無限ループを利用して,コンピュータとじゃんけんをするプログラムを作成しなさい。 ここでコンピュータは,勝敗がつくまでグー,チョキ,パー,グー,チョキ,パー,グー,…… の順に手を繰り返すものとする。

stone_scissors_paper.py

# coding: shift_jis
hands = ["グー", "チョキ", "パー"]
i = 0   #最初はグー
msg = ""
while True:
	print(msg, "手(グー・チョキ・パー)を入力してください:", end="")
	hand1 = input()    #あなた(プレイヤー)の手
	hand2 = hands[i]   #コンピュータの手
	print("コンピュータの手は:", hand2)
	if hand1 == "グー" and hand2 == (ア):
		print("あなたの勝ちです。")
		break
	if hand1 == "グー" and hand2 == (イ):
		print("あなたの負けです。")
		break
	if hand1 == (ア) and hand2 == (イ):
		print("あなたの勝ちです。")
		break
	if hand1 == (ア) and hand2 == "グー":
		print("あなたの負けです。")
		break
	if hand1 == (イ) and hand2 == "グー":
		print("あなたの勝ちです。")
		break
	if hand1 == (イ) and hand2 == (ア):
		print("あなたの負けです。")
		break
	print("引き分けです。")
	i = (i + 1) % 3
	msg = "次の"
H:\prg1\06> python stone_scissors_paper.py↵
 手(グー・チョキ・パー)を入力してください:グー
コンピュータの手は:グー
引き分けです。
次の 手(グー・チョキ・パー)を入力してください:チョキ
コンピュータの手は:チョキ
引き分けです。
次の 手(グー・チョキ・パー)を入力してください:パー
コンピュータの手は:パー
引き分けです。
次の 手(グー・チョキ・パー)を入力してください:パー
コンピュータの手は:グー
あなたの勝ちです。


プログラムの書き換え問題

上のプログラムを実行すると,ひらがなでたとえば"ちょき"と入力すると, 勝敗はコンピュータの手に関係なく引き分けとなる。それはなぜか? プログラムの実行者がカタカナのグー・チョキ・パー以外の文字を入力した場合に再度, カタカナで手の入力を促すように,上のプログラムを改良しなさい。

ヒント

	if not(hand1 == "グー" or hand1 == "チョキ" or hand1 == "パー"):
		print("入力が不適切です。")
		msg = "もう一度"
		continue