プログラミング上達のコツは学習初期段階でとにかく手を動かしてコーディングすることです。
本シリーズでは Python の初学者に向けたコーディング問題を出題します。
今回は クラスのイニシャライザや、クラス変数・クラスメソッド について学習します。コーディング指示に従ってコーディングしてみましょう!
学習の進め方
- プログラム説明および目的を確認し、どのようなプログラムで何を学ぶかイメージしましょう。
- コーディング指示に従ってコーディングをします。
もし分からなければ、コード例を確認しても良いです。 - 自分の出力結果と出力結果例を比較してみましょう。
- コード例を確認し、自分のコードと比較してみましょう。
コード例は「あくまでも例」なので完全に一致する必要はありません。 - 最終的にはコーディング指示だけでコーディングできるよう、繰り返し練習しましょう。
Python コーディング問題1: 動物情報管理システム
プログラム説明
このプログラムは、動物の基本情報を管理します。ユーザーは動物の名前と種類を入力し、各動物の情報を表示します。
目的
このプログラムを通じて、学習者はクラスの基本的な定義方法、イニシャライザ(コンストラクタ)の使い方、パスカルケースおよびスネークケースの命名規則、メソッドの定義と利用方法、リストを用いた複数のインスタンスの管理方法を学びます。
コーディング指示
新しいPythonファイル animal_info.py
を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
animal_info.py
として保存します。
動物を表現する Animal
クラスを定義する
Animal
クラスを作成し、以下のメソッドを定義します:__init__
メソッド:名前と種類を引数に取り、インスタンス変数に設定します。print_name
メソッド:動物の名前を表示します。print_species
メソッド:動物の種類を表示します。
メインプログラムを作成する
- 空のリスト
animals
を作成します。 for
ループを使用して、3匹の動物の情報を入力させ、それぞれのインスタンスをanimals
リストに追加します。- ループ内で、
input
関数を使用して名前と種類を入力させます。 - 入力された名前と種類を使って
Animal
クラスのインスタンスを生成します。 append
メソッドを使って生成したインスタンスをanimals
リストに追加します。
- ループ内で、
- ループを使用して、リスト内の各動物の情報を表示します。
Python コード例
タップしてコード例を表示
class Animal:
"""動物情報を管理するクラス"""
def __init__(self, name, species):
self.name = name
self.species = species
# 動物の名前を表示するメソッド
def print_name(self):
print(f"名前: {self.name}")
# 動物の種類を表示するメソッド
def print_species(self):
print(f"種類: {self.species}")
# メインプログラム
# 空のリストを作成
animals = []
# 3匹の動物の情報を入力してリストに追加
for i in range(3):
# 名前の入力
name = input(f"{i+1}匹目の動物の名前を入力してください: ")
# 種類の入力
species = input(f"{i+1}匹目の動物の種類を入力してください: ")
# Animalクラスのインスタンスを生成してリストに追加
new_animal = Animal(name, species)
animals.append(new_animal) # appendメソッドを使用してリストに追加
# 動物の情報を表示
for animal in animals:
animal.print_name()
animal.print_species()
Python コーディング問題2: 書籍情報管理システム
プログラム説明
このプログラムは、書籍の基本情報を管理します。ユーザーは書籍のタイトルと著者を入力し、各書籍の情報を表示します。
目的
このプログラムを通じて、学習者はクラスの基本的な定義方法、イニシャライザ(コンストラクタ)の使い方、パスカルケースおよびスネークケースの命名規則、メソッドの定義と利用方法、リストを用いた複数のインスタンスの管理方法を学びます。
コーディング指示
新しい Python ファイル book_info.py
を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
book_info.py
として保存します。
書籍を表現する Book
クラスを定義する
Book
クラスを作成し、以下のメソッドを定義します:__init__
メソッド:タイトルと著者を引数に取り、インスタンス変数に設定します。print_title
メソッド:書籍のタイトルを表示します。print_author
メソッド:書籍の著者を表示します。
メインプログラムを作成する
- 空のリスト
books
を作成します。 for
ループを使用して、3冊の書籍の情報を入力させ、それぞれのインスタンスをbooks
リストに追加します。- ループ内で、
input
関数を使用してタイトルと著者を入力させます。 - 入力されたタイトルと著者を使って
Book
クラスのインスタンスを生成します。 append
メソッドを使って生成したインスタンスをbooks
リストに追加します。- ループを使用して、リスト内の各書籍の情報を表示します。
Python コード例
タップしてコード例を表示
class Book:
"""書籍情報を管理するクラス"""
def __init__(self, title, author):
self.title = title
self.author = author
# 書籍のタイトルを表示するメソッド
def print_title(self):
print(f"タイトル: {self.title}")
# 書籍の著者を表示するメソッド
def print_author(self):
print(f"著者: {self.author}")
# メインプログラム
# 空のリストを作成
books = []
# 3冊の書籍の情報を入力してリストに追加
for i in range(3):
# タイトルの入力
title = input(f"{i+1}冊目の書籍のタイトルを入力してください: ")
# 著者の入力
author = input(f"{i+1}冊目の書籍の著者を入力してください: ")
# Bookクラスのインスタンスを生成してリストに追加
new_book = Book(title, author)
books.append(new_book) # appendメソッドを使用してリストに追加
# 書籍の情報を表示
for book in books:
book.print_title()
book.print_author()
Python コーディング問題3: 映画情報管理システム
プログラム説明
このプログラムは、映画の基本情報を管理します。映画の本数をクラス変数で保持し、映画が追加されるたびに本数を更新します。また、クラスメソッドを使って現在の映画の本数を表示します。
目的
このプログラムを通じて、学習者はクラス変数、クラスメソッド、インスタンス変数、インスタンスメソッドの定義と使用方法を学びます。
コーディング指示
新しい Python ファイル movie_management.py
を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
movie_management.py
として保存します。
映画を表現する Movie
クラスを定義する
Movie
クラスを作成し、以下のメソッドを定義します:__init__
メソッド:タイトルと監督を引数に取り、インスタンス変数に設定します。また、クラス変数counter
を1増やします。print_title
メソッド:映画のタイトルを表示します。print_director
メソッド:映画の監督を表示します。check_num
クラスメソッド:現在の映画の本数を表示します。
メインプログラムを作成する
- 空のリスト
movies
を作成します。 for
ループを使用して、3本の映画の情報を入力させ、それぞれのインスタンスをmovies
リストに追加します。- ループ内で、
input
関数を使用してタイトルと監督を入力させます。 - 入力されたタイトルと監督を使って
Movie
クラスのインスタンスを生成します。 append
メソッドを使って生成したインスタンスをmovies
リストに追加します。- ループを使用して、リスト内の各映画の情報を表示します。
Movie.check_num()
を呼び出して現在の映画の本数を表示します。
Python コード例
タップしてコード例を表示
class Movie:
"""映画情報を管理するクラス"""
# クラス変数として映画の本数をカウントする変数
counter = 0
def __init__(self, title, director):
# インスタンス変数にタイトルと監督を設定
self.title = title
self.director = director
# クラス変数をインクリメント
Movie.counter += 1
# 映画のタイトルを表示するメソッド
def print_title(self):
print(f"タイトル: {self.title}")
# 映画の監督を表示するメソッド
def print_director(self):
print(f"監督: {self.director}")
# 現在の映画の本数を表示するクラスメソッド
@classmethod
def check_num(cls):
print(f"現在の映画の本数: {cls.counter}本")
# メインプログラム
# 空のリストを作成
movies = []
# 3本の映画の情報を入力してリストに追加
for i in range(3):
# タイトルの入力
title = input(f"{i+1}本目の映画のタイトルを入力してください: ")
# 監督の入力
director = input(f"{i+1}本目の映画の監督を入力してください: ")
# Movieクラスのインスタンスを生成してリストに追加
new_movie = Movie(title, director)
movies.append(new_movie) # appendメソッドを使用してリストに追加
# 映画の情報を表示
for movie in movies:
movie.print_title()
movie.print_director()
# 現在の映画の本数を表示
Movie.check_num()
Python コーディング問題4: ゲームキャラクター管理システム
プログラム説明
このプログラムは、ゲームキャラクターの情報を管理します。キャラクターの数をクラス変数で保持し、キャラクターが追加されるたびに数を更新します。また、クラスメソッドを使って現在のキャラクターの数を表示します。
目的
このプログラムを通じて、学習者はクラス変数、クラスメソッド、インスタンス変数、インスタンスメソッドの定義と使用方法を学びます。
コーディング指示
新しいPythonファイル character_management.py
を作成する
- 任意のエディタを開き、新しいファイルを作成します。
- ファイル名を
character_management.py
として保存します。
キャラクターを表現する Character
クラスを定義する
Character
クラスを作成し、以下のメソッドを定義します:__init__
メソッド:名前と役割を引数に取り、インスタンス変数に設定します。また、クラス変数counter
を1増やします。print_name
メソッド:キャラクターの名前を表示します。print_role
メソッド:キャラクターの役割を表示します。check_num
クラスメソッド:現在のキャラクターの数を表示します。
メインプログラムを作成する
- 空のリスト
characters
を作成します。 for
ループを使用して、3人のキャラクターの情報を入力させ、それぞれのインスタンスをcharacters
リストに追加します。- ループ内で、
input
関数を使用して名前と役割を入力させます。 - 入力された名前と役割を使って
Character
クラスのインスタンスを生成します。 append
メソッドを使って生成したインスタンスをcharacters
リストに追加します。- ループを使用して、リスト内の各キャラクターの情報を表示します。
Character.check_num()
を呼び出して現在のキャラクターの数を表示します。
Python コード例
タップしてコード例を表示
class Character:
"""ゲームキャラクター情報を管理するクラス"""
# クラス変数としてキャラクターの数をカウントする変数
counter = 0
def __init__(self, name, role):
# インスタンス変数に名前と役割を設定
self.name = name
self.role = role
# クラス変数をインクリメント
Character.counter += 1
# キャラクターの名前を表示するメソッド
def print_name(self):
print(f"名前: {self.name}")
# キャラクターの役割を表示するメソッド
def print_role(self):
print(f"役割: {self.role}")
# 現在のキャラクターの数を表示するクラスメソッド
@classmethod
def check_num(cls):
print(f"現在のキャラクターの数: {cls.counter}人")
# メインプログラム
# 空のリストを作成
characters = []
# 3人のキャラクターの情報を入力してリストに追加
for i in range(3):
# 名前の入力
name = input(f"{i+1}人目のキャラクターの名前を入力してください: ")
# 役割の入力
role = input(f"{i+1}人目のキャラクターの役割を入力してください: ")
# Characterクラスのインスタンスを生成してリストに追加
new_character = Character(name, role)
characters.append(new_character) # appendメソッドを使用してリストに追加
# キャラクターの情報を表示
for character in characters:
character.print_name()
character.print_role()
# 現在のキャラクターの数を表示
Character.check_num()
コメント