練習問題

4.5 練習問題

本章で習った内容を元に練習問題を解いてください。

問1 次の設問①~⑤について○か×で答えなさい。

設問
① クラス内における変数は、インスタンス変数またはクラス変数に分類することができる。
② インスタンス変数はインスタンスを生成して初めてアクセスが可能になる。
③ インスタンスメソッドからクラス変数へアクセスは不可能。
④ インスタンスを生成すると、クラス変数もインスタンスに関連付けられる。
⑤ クラスメソッドからインスタンス変数にアクセス可能。

問2 以下に示すソースコード①~③が、どのように間違っているか答えなさい。

ソースコード

ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 演習問題回答例.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第4章.ipynb

問3 以下の仕様をもつBookクラスを定義しなさい。

① クラス変数 count 整数0で初期化
② インスタンス変数 title
③ インスタンス変数 price
④ インスタンス変数 number

コンストラクタ
引数title、price
処理

クラス変数のcountをインクリメント(1増やす)します。
引数の値を同一名のインスタンス変数にそれぞれ格納します。
インスタンス変数numberにクラス変数countの値を代入します。

ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 演習問題回答例.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第4章.ipynb

1class Book:
2    #インスタンス変数4つ持つコンストラクタを定義

問4 問3で作成したクラスBookに、以下の仕様をもつ2つのメソッドを追加したクラスBook2を作成しなさい。

関数の仕様

メソッド名 :showBook(インスタンスメソッド)
戻り値 :なし
引数 :self
処理内容 :以下のメッセージを画面に出力する。※title、price、numberはインスタンス変数です。「この本のタイトルはtitle、価格はprice円です。」

メソッド名 :getCount(クラスメソッド)
戻り値 :クラス変数count
引数 :cls
処理内容 :クラス変数countの値をリターンする。

ソースコード

ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 演習問題回答例.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第4章.ipynb

1class Book2:
2 
3    #コンストラクタの定義
4 
5    #インスタンスメソッドshowBookの定義
6 
7    #クラスメソッドgetCountの定義;

問5 問4で作成したBook.2をコピーしBook3クラスを作成し、以下の実行結果になるように以下のソースコードを書き換えなさい。

実行結果
1本のタイトルを入力してくださいJava
2本の価格を入力してください2000
3この本のタイトルは Java 価格は 2000 円です。
4生成番号は 1 です。
5本のタイトルを入力してくださいRuby
6本の価格を入力してください1000
7この本のタイトルは Ruby 価格は 1000 円です。
8生成番号は 2 です。
9本のタイトルを入力してくださいHtml
10本の価格を入力してください500
11この本のタイトルは Html 価格は 500 円です。
12生成番号は 3 です。
13本の生成回数は 3 回です。
ソースコードの仕様

① 3回ループするfor文を記述する。
② input関数を使用して入力を促し、新しく別に宣言するtitlel、priceという変数にそれぞれ格納する
③ キーボードから本のタイトルを入力する。※1
④ キーボードから本の価格を入力する。※1
⑤ ③と④で入力した値を引数に、Book3クラスからインスタンス(インスタンス名book1)を生成する
⑥ ⑤で生成したインスタンスメソッドを介してshowBookメソッドにアクセスする。※1
⑦ Book3クラス変数であるgetCountメソッドを利用して、画面に本の総生成回数を表示する。※2 ※1:②のループ内で処理を行う。 ※2:②のループ外で処理を行う。

ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 演習問題回答例.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第4章.ipynb

1class Book3:
2#問4の内容を記載
3 
4 
5#3回for文開始
6for i in range(3):
7    #タイトルの入力
8    title = input('本のタイトルを入力してください')
9    #価格の入力
10    price = input('本の価格を入力してください')
11    #title、priceを引数にクラスBook3からインスタンスbook1を生成
12 
13    #インスタンスbook1を介してshowBookメソッドを実行
14 
15 
16#インスタンスの生成回数を表示

NEXT>> 4.6 練習問題 解答

f