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が表示されます。