小学6年生の長男が夏休みの自由研究にPythonを勉強したいというので付き合ってみました。
どこから手を付けていけばわからないので、いくつか課題を出し、それを実現するコードを一緒に書くということを繰り返しました。
この記事では、「課題4 じゃんけん」について扱います。その他の課題については下記の記事をご覧ください。
- 夏休みなので小学生とPythonを勉強してみた - 課題1 FizzBuzz - Qiita
- 夏休みなので小学生とPythonを勉強してみた - 課題2 掛け算九九 - Qiita
- 夏休みなので小学生とPythonを勉強してみた - 課題3 掛け算ゲーム - Qiita
- 夏休みなので小学生とPythonを勉強してみた - 課題5 サイコロの目の出る確率 - Qiita
- 夏休みなので小学生とPythonを勉強してみた - 課題6 写真の整理 - Qiita
- 夏休みなので小学生とPythonを勉強してみた - 課題7 掛け算ゲームWeb版 - Qiita
- 夏休みなので小学生とPythonを勉強してみた - 課題8 掲示板 - Qiita
- 夏休みなので小学生とPythonを勉強してみた - 課題9 顔の検出 - Qiita
- 夏休みなので小学生とPythonを勉強してみた - 課題10 顔の認識 - Qiita
コードはGitHubにて公開しています。
課題4-1 ランダムにじゃんけんの手を選び表示する
指示
Rock(グー)、Paper(パー)、Scissors(チョキ)のランダムに手を選んで表示するプログラムを作りましょう。
ヒント
ランダムに要素を選択するには、randomモジュールのchoice関数を使います。
回答例
import random
robot_choice = random.choice(['Rock', 'Paper', 'Scissors'])
print('I am ' + robot_choice)
課題4-2 ランダムにじゃんけんの手を選ぶとともにユーザーに手を入力させて表示する
指示
Rock(グー)、Paper(パー)、Scissors(チョキ)のランダムに手を選ぶとともに、ユーザーに手を入力させ、それぞれの手を表示するプログラムを作りましょう。
ユーザーの入力は大文字と小文字のどちらでもよいこととし、Rock、Paper、Scissorsの最初の一字だけでよいものとします。
ユーザーの入力の前後に空白が入力された場合はそれを無視します。
ヒント
文字列はインデックス(添字)を指定して文字を取得できます。
文字列から前後の空白を取り除くにはstrip関数を使います。
キーと値のペアの集合を扱うには、辞書型を使います。
回答例
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(チョキ)のランダムに手を選ぶとともに、ユーザーに手を入力させ、勝敗を表示するプログラムを作りましょう。
回答例
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