第11回:クラス(演習)#

学籍番号:…

氏名:…


演習1:クラスの作成#

ユーザーごとの情報を管理・処理するプログラムを作成したい.クラスを用いて次のインスタンス変数を持つクラス User を作成せよ.

必要なインスタンス変数

  • 名前(name):str型

  • ID(user_id):str型

# 解答

class User:
    def __init__(self, name, user_id):
        self.name = name
        self.user_id = user_id

演習2:インスタンス化#

作成したクラスからインスタンスを作成せよ.また,以下の結果を出力するコードを作成せよ.

出力

アイザック・アシモフのIDはA123です
ウィリアム・ギブスンのIDはB456です
フィリップ・K・ディックのIDはC789です

ただし,変数に対応する値は以下とする.

インスタンス変数の値

name

user_id

アイザック・アシモフ

A123

ウィリアム・ギブスン

B456

フィリップ・K・ディック

C789

# 解答
user_1 = User('アイザック・アシモフ', 'A123')
user_2 = User('ウィリアム・ギブスン', 'B456')
user_3 = User('フィリップ・K・ディック', 'C789')

print(f'{user_1.name}のIDは{user_1.user_id}です')
print(f'{user_2.name}のIDは{user_2.user_id}です')
print(f'{user_3.name}のIDは{user_3.user_id}です')
アイザック・アシモフのIDはA123です
ウィリアム・ギブスンのIDはB456です
フィリップ・K・ディックのIDはC789です

演習3:インスタンスメソッド#

演習2で作成したクラスを再定義して,以下の情報を出力するインスタンスメソッド print_data を作成せよ.

アイザック・アシモフのIDはA123です
ウィリアム・ギブスンのIDはB456です
フィリップ・K・ディックのIDはC789です
# 解答

class User:
    def __init__(self, name, user_id):
        self.name = name
        self.user_id = user_id
        
    def print_data(self):
        print(f'{self.name}のIDは{self.user_id}です')
        
user_1 = User('アイザック・アシモフ', 'A123')
user_2 = User('ウィリアム・ギブスン', 'B456')
user_3 = User('フィリップ・K・ディック', 'C789')

user_1.print_data()
user_2.print_data()
user_3.print_data()
アイザック・アシモフのIDはA123です
ウィリアム・ギブスンのIDはB456です
フィリップ・K・ディックのIDはC789です

演習4:クラスのまとめ#

講義資料に含まれていないあなた自身が考えた独自の機能を持つクラスを定義して,インスタンスメソッドから実装した処理の呼び出しを行うコードを作成せよ.独自であればどのような機能でも良い.また 説明 と書かれたMarkdownセルに実装したクラスの機能について説明せよ.

一からクラスを作成することが難しければ演習1-3のクラスをベースにしても良い.

# 解答例

class User:
    def __init__(self, name, user_id, score):
        self.name = name
        self.user_id = user_id
        self.score = score
        
    def print_grade(self):
        grade = self.get_grade()
        print(f'{self.name}(ID:{self.user_id})の成績は{grade}です')
        
    def get_grade(self):
        if self.score >= 90:
            return 'A'
        elif self.score >= 80:
            return 'B'
        elif self.score >= 70:
            return 'C'
        elif self.score >= 60:
            return 'D'
        else:
            return 'F'
        
user_1 = User('アイザック・アシモフ', 'A123', 55)
user_2 = User('ウィリアム・ギブスン', 'B456', 71)
user_3 = User('フィリップ・K・ディック', 'C789', 98)

user_1.print_grade()
user_2.print_grade()
user_3.print_grade()
アイザック・アシモフ(ID:A123)の成績はFです
ウィリアム・ギブスン(ID:B456)の成績はCです
フィリップ・K・ディック(ID:C789)の成績はAです

説明

成績評価のためのクラス User の作成した.インスタンス変数として,名前,ID,点数を受け取り,90点以上を’A’,80点以上を’B’,70点以上を’C’,60点以上を’D’,60点未満を’F’とする条件分岐を持つget_grade メソッドを作成した.print_grade メソッドを呼び出すことで名前,ID,成績を表示できる.