27 / 27100%

LESSON 27 ・ クラス

クラスとコレクション

オブジェクトをリストで管理する

class Student:
    name = ""
    score = 0

    def __init__(self, name, score):
        self.name = name
        self.score = score

    def show(self):
        print(f"{self.name}: {self.score}")

students = [Student("Mary", 65), Student("Mike", 90), Student("Tom", 85)]
for student in students:
    student.show()

クラスを使うことで、複数の生徒の情報を一つのリストで管理することができます。

リストのメソッド

a = [2, 1, 7, 5]
print(a)

a.append(3)
print(a)

a.remove(1)
print(a)

a.sort()
print(a)

リストもクラスなのでメソッドを持っています。

たとえば、appendメソッドを使えば要素を追加することが、removeメソッドを使えば要素を削除することができます。また、sortメソッドを使えば、要素を小さい順に並べ替えることもできます。

文字列のメソッド

a = "2,3,5,7"
b = a.split(",")
c = list(map(int, b))
print(c)

文字列もクラスなのでメソッドを持っています。

たとえば、splitメソッドを使えば文字列を分割することができます。

ここでは、"2,3,5,7"という文字列を,で分割しています。しかし、分割して得られたリストの要素は["2", "3", "5", "7"]のように文字列になっているので、これをさらにint関数を使って整数に変換しています。

PRACTICE

演習問題

コードを自分で書いて実行してから、答えと解説を確認しましょう。

問題1

名前と点数を作成時に受け取り、showメソッドで表示できるStudentクラスを定義してください。二人分のオブジェクトを一つのリストにまとめ、すべての生徒のshowを呼び出してください。

答えと解説を見る

模範解答

class Student:
    name = ""
    score = 0

    def __init__(self, name, score):
        self.name = name
        self.score = score

    def show(self):
        print(f"{self.name}: {self.score}")

students = [Student("Mary", 65), Student("Mike", 90)]
for student in students:
    student.show()

オブジェクトもリストの要素にできます。ループで一つずつ取り出すと、それぞれのオブジェクトに対してメソッドを呼び出せます。

問題2

[4, 1, 7, 3]5を追加し、1を削除してから、小さい順に並べ替えて表示してください。

答えと解説を見る

模範解答

numbers = [4, 1, 7, 3]
numbers.append(5)
numbers.remove(1)
numbers.sort()
print(numbers)

追加、削除、並べ替えを順番に行います。最後に表示される内容は[3, 4, 5, 7]です。

問題3

文字列"10,20,30,40",で分割し、すべての要素を整数に変換してください。変換した整数の合計を求めて表示してください。

答えと解説を見る

模範解答

text = "10,20,30,40"
parts = text.split(",")
numbers = list(map(int, parts))

total = 0
for number in numbers:
    total += number

print(total)

splitの結果は文字列なので、整数へ変換してから足します。4個の整数の合計である100が表示されます。