コース管理とデータ比較

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、コース情報の作成と管理方法を学びます。これには、コースインスタンスの作成、辞書に保存、データのバックアップ作成、コース情報の更新、および更新された情報と以前のデータの比較が含まれます。

👀 プレビュー

Linux - 新しいデータ
COURSE Linux
Lab数: 20
公開: はい
価格: 199
Linux - 古いデータ
COURSE Linux
Lab数: 10
公開: はい
価格: 99
---------------------------
Python - 新しいデータ
COURSE Python
Lab数: 10
公開: はい
価格: 99
Python - 古いデータ
COURSE Python
Lab数: 7
公開: はい
価格: 79
---------------------------

🎯 タスク

このプロジェクトでは、以下のことを学びます。

  • Course クラスと BootcampCourse クラスをどのように作成するか
  • BootcampCourse のインスタンスをどのように作成し、辞書に保存するか
  • コース情報のバックアップをどのように作成するか
  • 各コースのLab数と価格をどのように更新するか
  • 更新されたコース情報を以前保存されたデータとどのように比較するか

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • 継承の概念とPythonでサブクラスを作成する方法を理解する
  • コース情報を更新および比較するメソッドを実装する
  • 辞書を使ってコースデータを保存および管理する
  • データのバックアップを作成し、更新された情報を以前のレコードと比較する

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ObjectOrientedProgrammingGroup -.-> python/constructor("Constructor") python/ObjectOrientedProgrammingGroup -.-> python/inheritance("Inheritance") python/PythonStandardLibraryGroup -.-> python/data_serialization("Data Serialization") subgraph Lab Skills python/for_loops -.-> lab-302713{{"コース管理とデータ比較"}} python/dictionaries -.-> lab-302713{{"コース管理とデータ比較"}} python/classes_objects -.-> lab-302713{{"コース管理とデータ比較"}} python/constructor -.-> lab-302713{{"コース管理とデータ比較"}} python/inheritance -.-> lab-302713{{"コース管理とデータ比較"}} python/data_serialization -.-> lab-302713{{"コース管理とデータ比較"}} end

コースとブートキャンプコースクラスを作成する

このステップでは、Course クラスと BootcampCourse クラスをどのように作成するかを学びます。

  1. /home/labex/project ディレクトリにある course.py ファイルを開きます。

  2. Course クラスで:

    • コース名、公開状態、および実験数を受け取る __init__ メソッドを定義します。
    • 実験数を返す count プロパティを実装します。
    • オブジェクト型を返す typename メソッドを実装します。
    • コース名と typename を表示する info メソッドを実装します。
    • コースの公開状態を返す is_public メソッドを実装します。
    class Course:
     OBJECT_TYPE = "COURSE"
    
     def __init__(self, name, public, lab_count):
         self.name = name
         self.public = public
         self.lab_count = lab_count
    
     @property
     def count(self):
         return self.lab_count
    
     def typename(self):
         return self.OBJECT_TYPE
    
     def info(self):
         print(self.typename(), self.name)
    
     def is_public(self):
         return self.public
  3. BootcampCourse クラスで:

    • コース名、実験数、および価格を受け取る __init__ メソッドを定義します。Course クラスの __init__ メソッドを呼び出し、公開状態を True に設定します。
    • 新しい実験数と新しい価格を受け取り、対応する属性を更新する update メソッドを実装します。
    • Course クラスの info メソッドを呼び出し、その後実験数、公開状態、および価格を表示する info メソッドを実装します。
    class BootcampCourse(Course):
     def __init__(self, name, lab_count, price):
         super().__init__(name, True, lab_count)
         self.price = price
    
     def update(self, lab_count, price):
         self.lab_count = lab_count
         self.price = price
    
     def info(self):
         super().info()
         print("Lab count:", self.count)
         print("Public:", self.public)
         print("Price:", self.price)

コースを作成して管理する

このステップでは、BootcampCourse のインスタンスを作成し、辞書に保存し、コース情報のバックアップを作成する方法を学びます。

  1. if __name__ == "__main__": ブロック内で:

    • BootcampCourse の2つのインスタンス linux_coursepython_course を作成します。
    • course_dict という辞書を作成し、コース名をキーとして2つのコースインスタンスを保存します。
    • course_dict のディープコピーを作成し、backup_course_dict に保存することで course_dict のバックアップを作成します。
    if __name__ == "__main__":
       linux_course = BootcampCourse("Linux", 10, 99)
       python_course = BootcampCourse("Python", 7, 79)
    
       ## build course dict
       course_dict = {"Linux": linux_course, "Python": python_course}
    
       ## copy and backup course dict
       backup_course_dict = copy.deepcopy(course_dict)

コース情報を更新する

このステップでは、各コースの実験数と価格をどのように更新するかを学びます。

  1. if __name__ == "__main__": ブロック内で:

    • update メソッドを使って linux_course の実験数と価格を更新します。
    • update メソッドを使って python_course の実験数と価格を更新します。
    ## update lab count and price
    linux_course.update(20, 199)
    python_course.update(10, 99)

コース情報を比較する

このステップでは、更新されたコース情報と以前保存されたコース情報をどのように比較するかを学びます。

  1. if __name__ == "__main__": ブロック内で:

    1. course_dict のキー("Linux" と "Python")をループ処理します。
    2. 各キーに対して:
    • コース名と "- 新しいデータ" というラベルを表示します。
    • course_dict 内の対応するコースインスタンスの info メソッドを呼び出します。
    • コース名と "- 古いデータ" というラベルを表示します。
    • backup_course_dict 内の対応するコースインスタンスの info メソッドを呼び出します。
    • 区切り線を表示します。
## compare with backup
for name in ("Linux", "Python"):
    print(name, "- New Data")
    course_dict[name].info()
    print(name, "- Old Data")
    backup_course_dict[name].info()
    print("---------------------------")

course.py ファイルを実行して出力を確認します。

python3 course.py

出力:

Linux - New Data
COURSE Linux
Lab count: 20
Public: True
Price: 199
Linux - Old Data
COURSE Linux
Lab count: 10
Public: True
Price: 99
---------------------------
Python - New Data
COURSE Python
Lab count: 10
Public: True
Price: 99
Python - Old Data
COURSE Python
Lab count: 7
Public: True
Price: 79
---------------------------
✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。LabExでさらに多くの実験を行って、スキルを向上させることができます。