夏休みなので小学生とPythonを勉強してみた - 課題4 じゃんけん

小学6年生の長男が夏休みの自由研究にPythonを勉強したいというので付き合ってみました。
どこから手を付けていけばわからないので、いくつか課題を出し、それを実現するコードを一緒に書くということを繰り返しました。

この記事では、「課題4 じゃんけん」について扱います。その他の課題については下記の記事をご覧ください。

* [夏休みなので小学生とPythonを勉強してみた - 課題1 FizzBuzz - Qiita](https://qiita.com/shakiyam/items/b8366fde704639abb63d)
* [夏休みなので小学生とPythonを勉強してみた - 課題2 掛け算九九 - Qiita](https://qiita.com/shakiyam/items/0e4153fe7c610b3e8e49)
* [夏休みなので小学生とPythonを勉強してみた - 課題3 掛け算ゲーム - Qiita](https://qiita.com/shakiyam/items/4b4df04369914df3baa6)
* [夏休みなので小学生とPythonを勉強してみた - 課題5 サイコロの目の出る確率 - Qiita](https://qiita.com/shakiyam/items/9e0c5548efd0952ab250)
* [夏休みなので小学生とPythonを勉強してみた - 課題6 写真の整理 - Qiita](https://qiita.com/shakiyam/items/2dd2e2763ccf85b19126)
* [夏休みなので小学生とPythonを勉強してみた - 課題7 掛け算ゲームWeb版 - Qiita](https://qiita.com/shakiyam/items/3945a224a8774c332220)
* [夏休みなので小学生とPythonを勉強してみた - 課題8 掲示板 - Qiita](https://qiita.com/shakiyam/items/c3aa6425ff42b75d3310)
* [夏休みなので小学生とPythonを勉強してみた - 課題9 顔の検出 - Qiita](https://qiita.com/shakiyam/items/110b4819b12124587d80)
* [夏休みなので小学生とPythonを勉強してみた - 課題10 顔の認識 - Qiita](https://qiita.com/shakiyam/items/0125dd5db15976d5520e)

コードは[GitHub](https://github.com/shakiyam/python4kids)にて公開しています。

課題4-1 ランダムにじゃんけんの手を選び表示する
----------------------------------------------

### 指示 ###

Rock(グー)、Paper(パー)、Scissors(チョキ)のランダムに手を選んで表示するプログラムを作りましょう。

### ヒント ###

ランダムに要素を選択するには、randomモジュールのchoice関数を使います。

* [random — 擬似乱数を生成する — Python 標準ライブラリ](https://docs.python.org/ja/3/library/random.html#functions-for-sequences)

### 回答例 ###

```python
import random

robot_choice = random.choice(['Rock', 'Paper', 'Scissors'])
print('I am ' + robot_choice)
```

課題4-2 ランダムにじゃんけんの手を選ぶとともにユーザーに手を入力させて表示する
------------------------------------------------------------------------------

### 指示 ###

Rock(グー)、Paper(パー)、Scissors(チョキ)のランダムに手を選ぶとともに、ユーザーに手を入力させ、それぞれの手を表示するプログラムを作りましょう。
ユーザーの入力は大文字と小文字のどちらでもよいこととし、Rock、Paper、Scissorsの最初の一字だけでよいものとします。
ユーザーの入力の前後に空白が入力された場合はそれを無視します。

### ヒント ###

文字列はインデックス(添字)を指定して文字を取得できます。

* [3.1.2. 文字列型 (string) — Python チュートリアル](https://docs.python.org/ja/3/tutorial/introduction.html#strings)

文字列から前後の空白を取り除くにはstrip関数を使います。

* [組み込み型 str.strip — Python 標準ライブラリ](https://docs.python.org/ja/3/library/stdtypes.html#text-sequence-type-str)

キーと値のペアの集合を扱うには、辞書型を使います。

* [5.5. 辞書型 (dictionary) — Python チュートリアル](https://docs.python.org/ja/3/tutorial/datastructures.html#dictionaries)

### 回答例 ###

```python
import random

robot_choice = random.choice(['Rock', 'Paper', 'Scissors'])
user_input = input('Rock, Paper, Scissors, Go! : ')
rock_paper_scissors = {'R': 'Rock', 'P': 'Paper', 'S': 'Scissors'}
user_choice = rock_paper_scissors[user_input.strip()[0].upper()]
print('I am ' + robot_choice)
print('You are ' + user_choice)
```

課題4-3 ランダムにじゃんけんの手を選ぶとともにユーザーに手を入力させて勝敗を表示する
------------------------------------------------------------------------------------

### 指示 ###

Rock(グー)、Paper(パー)、Scissors(チョキ)のランダムに手を選ぶとともに、ユーザーに手を入力させ、勝敗を表示するプログラムを作りましょう。

### 回答例 ###

```python
import random

robot_choice = random.choice(['Rock', 'Paper', 'Scissors'])
user_input = input('Rock, Paper, Scissors, Go! : ')
rock_paper_scissors = {'R': 'Rock', 'P': 'Paper', 'S': 'Scissors'}
user_choice = rock_paper_scissors[user_input.strip()[0].upper()]
print('I am ' + robot_choice)
print('You are ' + user_choice)

win = {'Rock': 'Paper', 'Paper': 'Scissors', 'Scissors': 'Rock'}
if robot_choice == user_choice:
    print('One more time')
elif win[robot_choice] == user_choice:
    print('You win!')
else:
    print('I win!')
```

### 実行例 ###

```
Rock, Paper, Scissors, Go! : P
I am Scissors
You are Paper
I win!
```

```
Rock, Paper, Scissors, Go! : r
I am Scissors
You are Rock
You win!
```

```
Rock, Paper, Scissors, Go! : s
I am Scissors
You are Scissors
One more time
```