PythonのBisectモジュールを活用した成績評価プログラム

スポンサーリンク

PythonのBisectモジュールを活用した成績評価プログラムを作ってみます。

今回はbisectを用います。このライブラリ・モジュールはPythonの標準ライブラリですので、事前にインストールする必要はありません。

■Python

今回のPythonのバージョンは、「3.10.9」を使用しています。(Windows11)(pythonランチャーでの確認)

■Bisectモジュールを活用した成績評価プログラムの作成

では、早速Bisectモジュールを活用した成績評価プログラムを書いていきます。

■コード

import bisect

def grade_to_letter(grade):
    # 成績の閾値と対応するアルファベット成績を定義
    grade_thresholds = [60, 70, 80, 90]
    grade_letters = ['F', 'D', 'C', 'B', 'A']

    # bisect を使用して、与えられた成績に対応するアルファベット成績を見つける
    grade_index = bisect.bisect_right(grade_thresholds, grade)
    
    # インデックスが適切な範囲内にあることを確認
    grade_index = min(grade_index, len(grade_letters) - 1)

    return grade_letters[grade_index]

# 数値の成績を入力
numeric_grade = float(input("数値の成績を入力してください: "))
letter_grade = grade_to_letter(numeric_grade)
print(f"あなたのアルファベット成績は: {letter_grade}")

まずはbisectモジュールをインポートします。これによって、ソートされたリスト内で値を挿入するために bisect関数を利用できるようになります。

次にgrade_to_letter関数が定義します。この関数は、数値の成績を受け取り、それに対応するアルファベット成績を返します。成績の閾値と対応するアルファベット成績は、それぞれgrade_thresholdsというリストとgrade_lettersというリストに定義されています。grade_thresholdsというリストは成績の下限を示し、grade_lettersというリストはそれに対応するアルファベット成績を示します。

次にbisect.bisect_right(grade_thresholds, grade)を使用し、与えられた成績がgrade_thresholdsというリスト内でどの位置に挿入されるかを調べます。これにより、成績の閾値を超えるアルファベット成績を見つけるのに役立ちます。

次にgrade_indexはアルファベット成績のリスト内でのインデックスですが、最後のアルファベット成績 “A” の後には “A+” などの成績があるかもしれません。そのため、インデックスを `len(grade_letters) – 1` で制限し、適切な範囲内に収めます。

関数の処理の最後には、grade_letters[grade_index]を返して、数値の成績に対応するアルファベット成績を得ます。

次に、ユーザーから数値の成績を入力するよう促すメッセージが表示されるようにします。入力された数値の成績に対して、先ほど定義したgrade_to_letter関数を呼び出して、アルファベット成績を計算します。

最終的に計算されたアルファベット成績が表示されます。

■実行・検証

このスクリプトを「l_gra.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、入力された数値の成績に対応したアルファベット成績を計算し、計算結果を出力させることができました。

コメント

タイトルとURLをコピーしました