Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで成績計算プログラムを作成する方法を徹底解説

教育現場では、試験やテストの後に学生の成績(グレード)を判定する必要がよくあります。本記事では、あらかじめ定めた評定基準に基づいて自動的に成績を割り当てるPythonプログラムの作成方法を解説します。このプログラムを「成績計算機(グレード・カルキュレーター)」と呼ぶことにしましょう。

評定基準(グレーディング基準)

今回のプログラムでは、以下の評定基準を採用します。

score >= 90 : "O"
score >= 80 : "A+"
score >= 70 : "A"
score >= 60 : "B+"
score >= 50 : "B"
score >= 40 : "C"

90点以上が最高評価の「O」、40点未満は「F」(不合格)として扱われます。このように点数帯ごとにグレードを分けることで、公平かつ一貫性のある評価が可能になります。

プログラムの設計方針

  • 学生の詳細情報(学籍番号、名前など)と各教科の得点を保持するための変数と配列(リスト)を初期化します。

  • 画面から入力値を受け取り、上記の変数に格納する関数を定義します。

  • forループを使って、各教科の得点を合計する処理を設計します。

  • if文とelif文を組み合わせて、取得した点数の範囲を判定し、対応するグレードに分類する計算処理を実装します。

  • 最後に、上記の関数群を決まった順序で実行する関数を定義します。

  • プログラムを実行し、値を入力して結果を確認します。

成績計算プログラムの全体像

以下が、上記の方針に沿って作成した成績計算プログラムです。プログラムを実行すると各種入力を求められ、必要な値を入力すると最終的な結果が表示されます。

サンプルコード

class grade_calculator:
    def __init__(self):
        self.__roll_number = 0
        self._Name = ""
        self.__marks_obtained = []
        self.__total_marks = 0
        self.__percentage = 0
        self.__grade = ""
        self.__result = ""
    def setgrade_calculator(self):
        self.__roll_number = int(input("Enter Roll Number: "))
        self.__Name = input("Enter Name: ")
        print("Enter 5 subjects marks: ")
        for n in range(5):
            self.__marks_obtained.append(int(input("Subject " + str(n + 1) + ": ")))
    def Total(self):
        for i in self.__marks_obtained:
            self.__total_marks += i
    def Percentage(self):
        self.__percentage = self.__total_marks / 5
    def calculateGrade(self):
        if self.__percentage >= 90:
            self.__grade = "0"
        elif self.__percentage >= 80:
            self.__grade = "A+"
        elif self.__percentage >= 70:
            self.__grade = "A"
        elif self.__percentage >= 60:
            self.__grade = "B+"
        elif self.__percentage >= 50:
            self.__grade = "B"
        elif self.__percentage >= 40:
            self.__grade = "C"
        else:
            self.__grade = "F"
    def Result(self):
        count = 0
        for x in self.__marks_obtained:
            if x >= 40:
                count += 1
        if count == 5:
            self.__result = "PASS"
        elif count >= 3:
            self.__result = "COMP."
        else:
            self.__result = "FAIL"
    def showgrade_calculator(self):
        self.Total()
        self.Percentage()
        self.calculateGrade()
        self.Result()
        print(self.__roll_number, "\t", self.__Name, "\t", self.__total_marks, "\t",
              self.__percentage, "\t", self.__grade, "\t",
              self.__result)
def main():
    gc = grade_calculator()
    gc.setgrade_calculator()
    gc.showgrade_calculator()
if __name__ == "__main__":
    main()

コードのポイント

このクラスには以下のような役割を持つメソッドが含まれています。

  • setgrade_calculator():学籍番号、名前、5科目の点数をユーザーから入力として受け取ります。
  • Total():5科目の合計点を計算します。
  • Percentage():合計点を科目数(5)で割って平均点(パーセンテージ)を求めます。
  • calculateGrade():平均点に応じてif〜elif文でグレードを判定します。
  • Result():各科目が40点以上かどうかを数え、「合格(PASS)」「追試(COMP.)」「不合格(FAIL)」を判定します。
  • showgrade_calculator():上記の処理を順番に呼び出し、結果をタブ区切りで一覧表示します。

実行結果

上記のコードを実行すると、以下のような出力が得られます。

Enter Roll Number: 3
Enter Name: raj
Enter 5 subjects marks:
Subject 1: 86
Subject 2: 75
Subject 3: 69
Subject 4: 55
Subject 5: 92
3     Kumar     377     75.4     A     PASS

まとめ

このように、Pythonのクラスと条件分岐を組み合わせるだけで、実用的な成績計算プログラムを簡単に作成できます。平均点によるグレード判定と、科目ごとの合格ラインチェックという2つの観点から評価できるのが特徴です。科目数や評定基準を変更したい場合は、range()の引数やif文の閾値を調整するだけで柔軟にカスタマイズできますので、ぜひ自分の用途に合わせて改良してみてください。

  1. Pythonで式ツリー(式木)を構築する方法:後置記法の式から式木を作るプログラム

    式ツリー(Expression Tree)とは、二分木の一種で、葉ノードには演算の対象となる値(オペランド)が格納され、内部ノードには演算子が格納されるデータ構造です。 例:「4 + ((7 + 9) * 2)」という式は、次のような式ツリーで表現できます。 問題を解くためのアプローチ 与えられた式から式ツリーを構築する際には、一般的にスタックというデータ構造を使用します。まず、与えられた後置記法(ポストフィックス記法)の式を走査しながら、以下の手順を実行していきます。 式の中にオペランドが現れた場合は、それをノードとして作成し、スタックにプッシュします。 演算子が現れた場合は、その演算

  2. Pythonのunittestモジュールで学ぶユニットテストの基礎

    本記事では、Python 3.x(およびそれ以前のバージョン)に標準搭載されている unittest モジュールを通じて、ソフトウェアテストの基本を解説します。unittest を使うことで、テストの自動化、セットアップ用コードと終了処理コードの共有、そして各フレームワークごとの独立したテスト実行が可能になります。ユニットテストでは、オブジェクト指向のさまざまな概念が活用されます。ここでは、特によく使われる主要な概念について見ていきましょう。unittestの中核を担う4つの概念TestCase(テストケース):特定の入力に対する応答を検証するための基底クラスです。unittest の基底クラ