概要
本プログラムは、JRAのレースにおける馬の数を基準に、各レースの馬の番号をランダムに3つ選択します。ユーザーはレースの総馬数を入力することができ、この番号の選択は3回繰り返されます。結果は3つの異なる組み合わせとしてコンソールに出力されます。予期せぬ入力があった場合、適切な総馬数を入力するように指示されます。
要件定義
- 目的:
- 競馬の馬の番号をランダムに選択するプログラムを作成する。
- 基本条件:
- ユーザーは総馬数を指定できる。この総馬数の最大値は18頭とする。
- プログラムは、指定された総馬数から3つの馬の番号をランダムに選択する。
- このランダムな選択プロセスは3回繰り返される。
- 同一の選択プロセス内での馬の番号の重複は許されない。
- 異なる選択プロセス間での馬の番号の重複は許される。
- 出力条件:
- プログラムは、3つの異なる馬の番号の選択結果をコンソールに表示する。
- 各選択結果は、3つの馬の番号を含む。
- 使用技術:
- プログラムはPython言語で実装される。
- 馬の番号のランダムな選択には、Pythonの標準ライブラリ
random
を使用する。 - ユーザーが無効な入力(例: 文字列や18を超える数字など)をした場合、プログラムは適切な総馬数を入力するように指示するメッセージを表示する。
詳細設計
- モジュールのインポート:
random
モジュールをインポートします。これは、馬の番号をランダムに選択するために使用されます。
- 関数の定義:
choose_horse_numbers
:- 入力:
total_horses
(総馬数) - 処理:
horses
: 1からtotal_horses
までの連続した数字のリストを作成します。chosen_patterns
: 選択された馬の番号の組み合わせを保存するための空のリストを初期化します。- 3回のループを実行します:
chosen
:horses
リストからランダムに3つの馬の番号を選択します。- 選択された3つの馬の番号を
chosen_patterns
リストに追加します。
- 出力: 3つの異なる馬の番号の組み合わせを含むリストを返します。
- 入力:
- ユーザー入力の取得:
- ユーザーに総馬数を入力してもらいます。
- 入力された総馬数が1から18の間であることを確認します。
- 無効な入力があった場合、エラーメッセージを表示して再度入力を求めます。
- 結果の表示:
choose_horse_numbers
関数を呼び出して、選択された馬の番号の組み合わせを取得します。- 各組み合わせをコンソールに表示します。
プログラム
import random
def choose_horse_numbers(total_horses):
horses = list(range(1, total_horses + 1))
chosen_patterns = []
for _ in range(3):
chosen = random.sample(horses, 3)
chosen_patterns.append(chosen)
return chosen_patterns
while True:
try:
# ユーザーに総馬数を入力してもらう
total_horses = int(input("レースの総馬数を入力してください: "))
if 1 <= total_horses <= 18: # 馬の数は1〜18の間であるべきです
break
else:
print("馬の数は1〜18の間で入力してください。")
except ValueError:
print("無効な入力です。レースの総馬数を正しく入力してください。")
# 選択された馬の番号を表示
for pattern in choose_horse_numbers(total_horses):
print(f"Chosen Numbers: {pattern}")
解説
- ライブラリのインポート
- この部分では、Pythonの標準ライブラリである
random
をインポートしています。このライブラリは、後の部分でランダムな数字を選択するために使用されます。
- この部分では、Pythonの標準ライブラリである
import random
- 関数の定義
choose_horse_numbers
- この関数は、指定された総馬数から3つの馬の番号をランダムに選択するためのものです。選択は3回行われ、3つの異なる組み合わせがリストとして返されます。
def choose_horse_numbers(total_horses):
horses = list(range(1, total_horses + 1))
chosen_patterns = []
for _ in range(3):
chosen = random.sample(horses, 3)
chosen_patterns.append(chosen)
return chosen_patterns
- ユーザー入力の取得とバリデーション
- この部分では、ユーザーにレースの総馬数を入力してもらいます。入力された値が1〜18の間でない場合、または数値でない場合、エラーメッセージが表示され、再度入力を求められます。
while True:
try:
total_horses = int(input("レースの総馬数を入力してください: "))
if 1 <= total_horses <= 18:
break
else:
print("馬の数は1〜18の間で入力してください。")
except ValueError:
print("無効な入力です。レースの総馬数を正しく入力してください。")
- 結果の表示
- この部分では、先ほど定義した
choose_horse_numbers
関数を使用して、選択された馬の番号の組み合わせを取得し、それをコンソールに表示します。
- この部分では、先ほど定義した
for pattern in choose_horse_numbers(total_horses):
print(f"Chosen Numbers: {pattern}")
出力結果
プログラムを実行すると、3つの異なる馬の番号の組み合わせがコンソールに表示されます。各組み合わせには、3つの馬の番号が含まれています。
Chosen Numbers: [5, 3, 12]
Chosen Numbers: [7, 9, 4]
Chosen Numbers: [10, 11, 13]
このサンプル出力では、3つの異なる組み合わせが表示されています。ユーザーが指定した総馬数に基づいて、ランダムに3つの馬の番号が選択されます。
コメント