Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Rock, Paper, Scissors Python Tutorial 2025

2025年09月14日に「Dev.to」が公開したITニュース「Rock, Paper, Scissors Python Tutorial 2025」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Pythonでジャンケンゲームを作成するチュートリアル記事だ。条件分岐、ループ、エラー処理といったプログラミングの基本を、実践的なコードを通じて学べる。システムエンジニアを目指す初心者がPythonの基礎を習得するのに最適な内容である。

出典: Rock, Paper, Scissors Python Tutorial 2025 | Dev.to公開日:

ITニュース解説

この記事は、Pythonというプログラミング言語を使って、じゃんけんゲームを作成する方法を段階的に解説している。プログラミングの基礎を学びたいシステムエンジニアの初心者にとって、実際に動くプログラムを作ることは、知識を深めるための非常に良い経験となる。このゲーム制作を通じて、Pythonにおける基本的なプログラミング概念がどのように使われているかを見ていこう。

このじゃんけんゲームのプログラムは、まずゲーム全体をまとめる「関数」という単位で定義されている。def game():という記述がそれにあたる。関数を使うことで、プログラムの塊を名前で呼び出すことができ、再利用性が高まる。ゲームの開始時には、このgame()関数が呼び出され、処理がスタートする。

ゲームで使う選択肢、「Rock(グー)」「Paper(パー)」「Scissors(チョキ)」は、game_options = ["Rock", "Paper", "Scissors"]という形で「リスト」に格納されている。リストは複数のデータを一つの変数にまとめて管理できる便利な機能で、ここではゲームの選択肢をまとめておくために使われている。

プログラムは、ユーザーがゲームを終了すると選択するまで何度も繰り返されるように設計されている。これはwhile True:という「無限ループ」によって実現されている。Trueという条件は常に真なので、ループは基本的に止まることなく実行され続ける。ユーザーが明示的に終了を指示した場合にのみ、このループは中断される仕組みだ。

ループの中でまず行われるのは、ユーザーにゲームの選択肢を表示することだ。print()関数を使って、「1. Rock」「2. Paper」「3. Scissors」「4. Exit」というメニューが画面に表示される。ここで使われている\nは、改行を意味する特殊な文字で、出力を見やすくする役割がある。

次に、ユーザーからの入力を受け付けるためにinput()関数が使われる。user_option = int(input("Choose any one number to start the game (1-4): "))という行では、ユーザーに「1から4の数字を選んでゲームを開始してください」と促している。input()関数は、ユーザーが入力した値を「文字列」として受け取るが、ここでは数字として扱いたいため、int()関数を使って文字列を「整数」に変換している。

このユーザー入力の処理には、重要な考慮事項がある。それは、ユーザーが数字ではない値を入力する可能性があるということだ。例えば、「abc」のような文字列を入力した場合、int()関数はそれを整数に変換できず、エラーが発生してしまう。これを防ぐために「エラーハンドリング」という仕組みが導入されている。try-exceptブロックがそれで、tryブロックの中のコードでエラーが発生した場合、プログラムが中断されるのではなく、except ValueError:ブロックに書かれた処理が実行される。ここでは「有効な数字を入力してください!」というメッセージを表示し、continueを使ってループの先頭に戻り、もう一度入力を促すようになっている。これにより、プログラムが予期せぬ入力で停止するのを防ぎ、ユーザーフレンドリーな設計になる。

ユーザーが入力した数字に基づいて、プログラムは次に進む。「4」が入力された場合、それはユーザーがゲームを終了したいことを意味する。if user_option == 4:の条件が真となり、「遊んでくれてありがとう!」というメッセージを表示した後、break文によってwhileループが強制的に終了し、ゲームが終了する。

もしユーザーが「1」「2」「3」「4」以外の数字(例えば「5」など)を入力した場合も考慮されている。if user_option not in [1, 2, 3]:という条件文でこれをチェックし、無効な選択であれば「無効な選択です!1, 2, 3, または4を選択してください。」と表示し、再びcontinueでループの先頭に戻り、正しい入力を促す。

ユーザーの選択(1, 2, 3)が有効であれば、次にその数字を実際のゲームの選択肢に変換する処理が行われる。user_choice = game_options[user_option - 1]という行では、game_optionsリストから対応するじゃんけんの手を取得している。ここでuser_option - 1としているのは、リストのインデックス(番号)が0から始まるのに対し、ユーザーの入力は1から始まるため、ずれを調整するためだ。例えば、ユーザーが「1」(Rock)を選んだ場合、リストの0番目(game_options[0])が「Rock」に対応する。

コンピューターの選択肢は、randomモジュールを使ってランダムに決定される。import randomでこのモジュールをプログラムに読み込み、computer_index = random.randint(0, 2)によって0から2までのランダムな整数が生成される。このランダムな整数が、game_optionsリストのインデックスとして使われ、computer_choice = game_options[computer_index]によってコンピューターの手が決定される。

ユーザーとコンピューターの手が決定したら、print(f"\nUser: {user_choice}")print(f"Computer: {computer_choice}")という行で、それぞれの手が画面に表示される。ここで使われているfのプレフィックスが付いた文字列は「f-string(フォーマット済み文字列リテラル)」と呼ばれ、文字列の中に変数の値を埋め込むことができる便利な機能だ。

いよいよ勝敗の判定だ。まず、引き分けのケースがチェックされる。if user_choice == computer_choice:という条件が真であれば、両者の手が同じなので「ゲーム引き分け!もう一度プレイ!」と表示され、continueでループの先頭に戻り、新しいゲームが始まる。

引き分けでない場合、ユーザーが勝つ条件が詳細にチェックされる。じゃんけんのルールは「グーはチョキに勝ち、パーはグーに勝ち、チョキはパーに勝つ」だ。このルールはプログラムでは次のように表現されている。 if (user_choice == "Rock" and computer_choice == "Scissors") or \ (user_choice == "Paper" and computer_choice == "Rock") or \ (user_choice == "Scissors" and computer_choice == "Paper"): これは、ユーザーの手がグーでコンピューターの手がチョキの場合、または、ユーザーの手がパーでコンピューターの手がグーの場合、または、ユーザーの手がチョキでコンピューターの手がパーの場合、という三つの条件のいずれかが満たされれば、ユーザーの勝利となることを意味する。andは両方の条件が真の場合に全体が真となることを、orはいずれか一つの条件が真であれば全体が真となることを示す論理演算子だ。この複雑な条件が真であれば、「ユーザー勝利」と表示される。

上記のいずれの条件も満たされなかった場合、残るはコンピューターの勝利ケースのみとなるため、else:ブロックが実行され、「コンピューター勝利」と表示される。

こうして一回のゲームが終了すると、プログラムは再びwhile True:のループの先頭に戻り、ユーザーが「Exit」を選択するまで、この一連の流れが繰り返される。

このじゃんけんゲームの作成を通じて、関数定義、リストの利用、無限ループ、条件分岐(if-else)、ユーザー入力の処理、データ型変換、エラーハンドリング、乱数生成、文字列のフォーマットなど、Pythonプログラミングの基礎となる多くの重要な概念を学ぶことができる。これらのスキルは、システムエンジニアとして様々なアプリケーションやシステムを開発する上で不可欠なものであり、今回の学習が今後のプログラミング学習の土台となるだろう。

関連コンテンツ