---
# System prepended metadata

title: 早稲田本庄プログラミング課題解説(Python3)
tags: [課題解説]

---

###### tags: `課題解説`

早稲田本庄プログラミング課題解説(Python3)
========================

* 自由課題3-1 ずるいじゃんけんけんゲーム
* 自由課題3-2 コイントス-1
* 自由課題3-3 コイントス-2
* 自由課題3-4 ずるくないじゃんけんゲーム

-------
## 自由課題3-1　ずるいじゃんけんゲーム

#### ・input()関数でじゃんけんの⼿を読み込み，コンピュータが絶対に負けないようにprint⽂で⼿を出⼒してください．

```
event={"グー":"パー","チョキ":"グー","パー":"チョキ"}

print("じゃんけんで私に勝ってくだいさい")
s = input("じゃんけん！(グー、チョキ、パーのいずれか１つを入力してください)")

print("私："+event[s])
print("あなたの負けです")

```

辞書「event」ではキーとバリューが勝敗関係となっています。したがって入力値「s」をキーとすれば、それに対応するバリューが勝ちの手です。

-------
## 自由課題3-2　コイントス-1

#### ・コイントスをした結果を表⽰するプログラムを作成してください．

```
import random

event=["Head","Tail"]
print(random.choice(event))
```
・random.choice()：リストからランダムに要素を１つ選択するrandomモジュールの関数。また、以下により裏と表が出る確率がほぼ同じであることが確認できる。
```
＃コード
import random

event=["H","T"]
Tn=0
Hn=0
for i in range(10000):
    if random.choice(event)=="H":
        Hn+=1
    else:
        Tn+=1
print(Tn,Hn)

＃出力例
4944 5056
```



-------
## 自由課題3-3　コイントス-2

#### ・input()で⼊⼒として H, T を受け取り，勝負を仕掛けて くるプログラムを作ってください．プログラムは，ユーザが選ばなかったほうを選びます．
```
import random

com_choice={"H":"T","T":"H"}

print("コインの裏表当て勝負！")

usr = input("H,Tのどちらかを入力してください：")
com = com_choice[usr]
print("私は"+com + "を選択しました。")
result = random.choice(list(com_choice.keys()))

if result== usr:
    print("結果："+ result)
    print("あなたの勝ちです")
else:
    print("結果："+ result)
    print("あなたの負けです。")

```
list(com_choice.keys())：辞書「com_choice」のキーだけを取り出したリスト

```
> print(list(com_choice.keys()))
["H","T"]
```



-------
## 自由課題3-4 ずるくないじゃんけんゲーム

#### ・ランダムにじゃんけんの⼿を出すじゃんけんゲームを作成してください．

```
import random

relation={"グー":"パー","チョキ":"グー","パー":"チョキ"}
while True:
    print("じゃんけんで私に勝ってくだいさい")
    usr = input("じゃんけん！グー、チョキ、パーのいずれか１つを入力してください")
    com = random.choice(list(relation.keys()))
    print(com)
    print(relation[com])


    if usr in relation:
        if  usr == relation[com]:
            print("私は"+com+"を出しました")
            print("あなたの勝ちです")
            break
        elif usr==com:
            print("あいこです")
        else:
            print("私は"+com+"を出しました")
            print("あなたの負けです")
            break
    else:
        print("無効な値が入力されました")
```
　変数usrは「グー、チョキ、パー、」以外のものを受け取る場合もあります(ユーザが指示に従わない場合)。そのような場合、じゃんけんが成り立たなくなってしまいます。そこで、指定されたもの以外が入力された場合に"無効な値が入力されました"と表示し、再入力させるようにしています。このように、プログラムが思うように動作しない可能性があることが分かっている場合、それに対して事前に処理を記述することでうまくプログラムを動作させることができます。
　また、似たようなもので「[例外処理(try-except)](https://techacademy.jp/magazine/19311)」というものがあります。非常に便利な機能なのでぜひ調べてみてください。


-------

