Python勉強会
<第5回Web会議日程>
2024年03月21日(木) 19:00から
<第5回の自習範囲>
【Pythonチュートリアル】
https://docs.python.org/ja/3.9/tutorial/index.html
8. エラーと例外
8.1. 構文エラー
8.2. 例外
8.3. 例外を処理する
8.4. 例外を送出する
8.5. 例外の連鎖
8.6. ユーザー定義例外
8.7. クリーンアップ動作を定義する
8.8. 定義済みクリーンアップ処理
9. クラス
9.1. 名前とオブジェクトについて
9.2. Python のスコープと名前空間
9.2.1. スコープと名前空間の例
9.3. クラス初見
9.3.1. クラス定義の構文
9.3.2. クラスオブジェクト
9.3.3. インスタンスオブジェクト
9.3.4. メソッドオブジェクト
9.3.5. クラスとインスタンス変数
9.4. いろいろな注意点
9.5. 継承
9.5.1. 多重継承
9.6. プライベート変数
9.7. 残りのはしばし
9.8. イテレータ (iterator)
9.9. ジェネレータ (generator)
9.10. ジェネレータ式
12. 仮想環境とパッケージ
12.1. はじめに
12.2. 仮想環境の作成
12.3. pip を使ったパッケージ管理
エラー名 | 内容 |
---|---|
SyntaxError | 括弧()やコロン:が足りない場合などのエラー |
IndentationError | インデントが正しくない場合のエラー |
例外名 | 用途 |
---|---|
ZeroDivisionError | 0で割り算が行われた場合のエラー |
NameError | 名前が見つからなかった場合のエラー |
IndexError | リストやタプルにおいて添字が範囲外を指定している場合に発生するエラー |
KeyError | 辞書(dict型)の値をキーを指定して取得する際に、存在しないキーを指定してしまった場合のエラー |
ValueError | 関数の引数についてのエラー |
※※もっと詳しく見たい方は以下を参照してみてください
Python 標準ライブラリ ~組み込み例外~
A 25
C
F
G
B 25
0
C
G
C 25
D
G
D 25
D
F
G
Pythonにおいて、エラーは構文エラー(syntax error)と例外(exception)に区別される。構文として誤っているものは構文エラー、構文として正しくても実行中に発生するエラーは例外と呼ばれる。
Pythonで例外(実行中に検出されたエラー)をキャッチして処理するにはtry, exceptを使う。例外が発生しても途中で終了させずに処理を継続できる。さらにelse, finallyを使うと終了時の処理を設定可能。
【基本構造】
try:
処理
except 例外1:
例外1が発生した場合の処理
except 例外2:
例外2が発生した場合の処理
else:
例外が発生しなかった場合の処理
finally:
例外の発生有無に関わらず常に実行
課題①の解説
try文で例外処理を指定します
input()関数を設定するとキーボード入力を求められる。
input()関数は入力されたデータを文字列とし扱うため、今回の問題では数値を扱いたいため、int()型を設定している
print(5 ** 2) ⇒ 25
print((5 ** 2) / 0) ⇒ 0
try文で例外が発生した場合に実行される
except節の例外処理で当てはまらなかったら実行される
finallyは例外の発生有無に関わらず常に実行される
C 25
D
G
A pip install でパッケージ名を指定し、そのパッケージ名の後ろに==とバージョン名を付けると、そのバージョンのパッケージをインストールできる。
B pip install –upgradeとすることで、当該パッケージを最新バージョンにアップグレードすることができる。
C 「pip list パッケージ名」で、ある特定のパッケージの詳細情報が表示される。
D pip uninstall にパッケージ名を指定すると、その仮想環境からパッケージを削除できる。削除対象となるパッケージの複数指定も可能である。
※参考内容:12.3. pip を使ったパッケージ管理
<pip>
Pythonのパッケージを管理するためのツール
A pip install でパッケージ名を指定し、そのパッケージ名の後ろに==とバージョン名を付けると、そのバージョンのパッケージをインストールできる。
以下はチュートリアルの抜粋となります。
パッケージ名を指定してそのパッケージの最新版をインストールすることができます:
パッケージ名のあとに == とバージョン番号を付けることで、特定のバージョンのパッケージをインストールすることもできます:
上記内容の記述に当てはまるため、Aは正解
B pip install –upgradeとすることで、当該パッケージを最新バージョンにアップグレードすることができる。
以下チュートリアルの抜粋となります。
同じコマンドを再び実行した場合、pip は要求されたバージョンがインストール済みだと表示して何もしません。別のバージョン番号を指定すればそのバージョンをインストールしますし、pip install –upgrade を実行すればそのパッケージを最新版に更新します:
上記内容の記述に当てはまるため、Bは正解
D pip uninstall にパッケージ名を指定すると、その仮想環境からパッケージを削除できる。削除対象となるパッケージの複数指定も可能である。
以下チュートリアルの抜粋となります。
pip uninstall コマンドに削除するパッケージ名を1つ以上指定します。
※「pip uninstall」についてはチュートリアルでは内容が不十分のため、以下も確認しております。
Pythonのパッケージ管理システムpipの使い方
~パッケージのアンインストール: pip uninstall~
上記内容の記述に当てはまるため、Dは正解
C 「pip list パッケージ名」で、ある特定のパッケージの詳細情報が表示される。
以下はチュートリアルの抜粋となります。
上記内容より、「pip list」はある特定のパッケージの詳細情報が表示されるではなく、
全てのパッケージを表示されるため、Cは不正解となる。
ある特定のパッケージの詳細情報が表示されるのは「pip show」の説明になる。
C 「pip list パッケージ名」で、ある特定のパッケージの詳細情報が表示される。
[sample.py]
A kekka: shioya taketo
B kekka:
C kekka: shioya
D kekka: taketo shioya
「sample.py」の解説
Sampleという名称でクラスを作成する
変数c_listに空のリスト [] を作成
add_c_list関数を作成
クラス変数自信(self)のc_listの末尾に(data)を追加
"kekka:"を出力
Sampleクラスから、sample1オブジェクトを作成
sample1オブジェクトに対してadd_c_list()関数を適用 -> 文字列”shioya″は、dataへ
Sampleクラスから、sample2オブジェクトを作成
sample2オブジェクトに対してadd_c_list()関数を適用 -> 文字列”taketo″は、dataへ -> appendなので末尾に追加される
for文の繰り返し
上記から、「kekka: shioya taketo」が表示される。
A kekka: shioya taketo
クラス内でかつメソッドの外で宣言され、すべてのインスタンス間で共通した値をもつ変数
宣言時には「変数名 = ~」という形式を用いる
個々のインスタンスに格納される変数
宣言時には「self.変数名」という形式を用いる
課題③はクラス変数の問題でしたが、以下はインスタンス変数を用いた例となります。
インスタンス変数を実行すると「shioya」として出力されます。
(1)
(2)
(3)
(4)
A ①構文エラー ②構文エラー ③例外 ④構文エラー
B ①例外 ②構文エラー ③例外 ④例外
C ①構文エラー ②例外 ③例外 ④例外
D ①例外 ②例外 ③構文エラー ④構文エラー
(1)
iの値が"OFFICE54"と等しいか確認
"OFFICE54"を出力する
実行すると「インデントエラー」となり、
インデントエラーは「構文エラー」となる。
(2)
divide(x)を呼び出す
「54 / x」の結果を返す
実行すると「ZeroDivisionError」となり、
ZeroDivisionErrorは「例外」となる。
(3)
iの値が1と等しいか確認
"1"を出力する
実行すると「NameError」となり、
NameErrorは「例外」となる。
(4)
dにa=1,b=2,c=3を入力する
'x'を出力する
実行すると「キーエラー」となり、
キーエラーは「例外」となる。
C ①構文エラー ②例外 ③例外 ④例外