answer5_4.py

import random

n = random.randrange(3)
if n == 0:
    com = "グー"
elif n == 1:
    com = "チョキ"
else:  # n == 2
    com = "パー"
print("コンピュータは手を決めました!")

you = input("あなたの手は?(グー/チョキ/パー)")
print(f"コンピュータの手は{com}です!")
if you == com:
    print("あいこでした!")
elif ((you == "グー" and com == "チョキ")
   or (you == "チョキ" and com == "パー")
   or (you == "パー" and com == "グー")):
    print("あなたの勝ちです!!")
elif ((you == "グー" and com == "パー")
   or (you == "チョキ" and com == "グー")
   or (you == "パー" and com == "チョキ")):
    print("あなたの負けです……")
else:
    print(f"{you}はじゃんけんの手ではありません♯")

# 章末問題 5章【4】解答例
#
# 3行目から9行目でコンピュータの手をランダムに決めています。
# グー・チョキ・パーの3通りなのでrandom.randrange(3)で生成しました。
# random.randint(0, 2)でもよいですし、random.randint(1, 3)として
# グーを1、チョキを2、パーを3などとしてもよいです。
#
# 勝敗は14行目から始まるif文で判定し、結果を出力しています。
# 4行目からのif文では、randrangeが確実に0から2のいずれかを
# 生成するので、2だった場合をelse節で扱っています(8行目~)が、
# ユーザがキーボードから手を入力する際には誤りそうなので、
# 24行目からのelse節でエラー処理をしています。
# 誤った入力に対しては次のように動作します。
#
# コンピュータは手を決めました!
# あなたの手は?(グー/チョキ/パー) チョー
# コンピュータの手はパーです!
# チョーはじゃんけんの手ではありません♯