[資格] python3エンジニア認定基礎試験を受けるため基礎からPythonを勉強してみた（受験記）

# 0.目標
機械学習をやるためPythonを習得しようと思い、単にやってもゴールがないので、
『python3エンジニア認定基礎試験』を取得することにした。

# 1.まず最初に公式サイトを確認（Python試験）
[一般社団法人Pythonエンジニア育成推進協会](https://www.pythonic-exam.com/exam)

試験時間が60分、問題数40問、70%以上で合格、受験料1万円(税別)(学生は半額)、あと参考書と試験範囲を確認

# 2.次にやること
公式サイトに載っている参考書を入手
###### ・[Pythonチュートリアル 第3版](https://www.amazon.co.jp/dp/4873117534)　(2016/3/24,オライリー,Guido van Rossum著)
***Pythonの経験がなくてもプログラミング経験ある人は***これ一択で十分です。
通し読みだけで問題ない人もいるようですが、手を動かして覚えれば全く問題ないかと。
（Python<font color="Red">3.5</font>が前提だが、3.7でも問題なかった。）

誤記があるので、[正誤表](https://www.oreilly.co.jp/books/9784873117539/#errata0)も参照

※下記、Webで見ることが可能。
翻訳者が異なるらしく言い回しが微妙に異なり、一部Webにないと思ったら別の場所に記載があったり、ほぼ一緒。
※(本)1章　食欲をそそってみようか、(Web)1. やる気を高めよう　といったような言い回しの違い　など

・[Web] [Python チュートリアル](https://docs.python.org/ja/3.5/tutorial/index.html)
2019/12/15時点ではバージョン2.7,3.5.4,<font color="Red">3.6</font>.3.7(dev)が選択可能


# 3.試験範囲とPythonチュートリアル 第3版をやってみた感想
公式サイトに教材の記載はありますが、
教材の章ごとの出題率まで記載してある試験は覚えがありません。
基本的に「Pythonチュートリアル 第3版」を覚えれば合格可能です。
さらに少し薄めの本のため、やれるかなという錯覚を覚えます。

| 章立て                                     | 出題数 | 出題率 | 感想                                                                                                         |
|--------------------------------------------|--------|--------|--------------------------------------------------------------------------------------------------------------|
| 1章　食欲をそそってみようか                | 1      | 2.5%   | 読み物。Pythonはインタープリタ言語ぐらい。                                                                   |
| 2章　Pythonインタープリタの使い方          | 1      | 2.5%   | 起動・終了など。覚えていないと困るがOSの違いは普段使っているところしか覚えていないが終了方法のquit()ぐらいか |
| 3章　気楽な入門編                          | 6      | 15.0%  | 変数「_」と文字列操作が簡単にできるところが印象に残る。記載以外のパターンも試す必要ありそう。                                                    |
| 4章　制御構造ツール                        | 9      | 22.5%  | 他の言語の基本的なことを知っていれば、Pythonではこうなんだという印象                                         |
| 5章　データ構造                            | 7      | 17.5%  | ここら辺から飛ばし読みができない箇所が出てきた。                                                             |
| 6章　モジュール                            | 2      | 5.0%   | モジュール、パッケージのpythonの解釈の仕組みのためPython独自                                                 |
| 7章　入出力                                | 1      | 2.5%   | 業務では確実に必要だが1問しかでない                                                                          |
| 8章　エラーと例外                          | 4      | 10.0%  | エラー処理の基本。ただ、入出力までがボリュームがあったため一旦力尽きる。                                     |
| 9章　クラス                                | 2      | 5.0%   | Pythonのクラスの仕組み。                                                                                     |
| 10章　標準ライブラリめぐり                 | 4      | 10.0%  | 基本的なライブラリ、覚えるだけ                                                                                  |
| 11章　標準ライブラリめぐり─PartII          | 1      | 2.5%   | 基本的なライブラリ、覚えるだけ                                                                                           |
| 12章　仮想環境とパッケージ                 | 1      | 2.5%   | pyvenvやpipなど環境構築した場合に目にするところ                                                              |
| 13章　次はなに?                            | 0      | 0.0%   | 出題されないため内容だけ確認                                                                                 |
| 14章　対話環境での入力行編集とヒストリ置換 | 1      | 2.5%   | 一読しただけでは問題が不明                                                                                   |
| 合計                                       | 40     | 100.0% | ―                                                                                                            |

また、13章が出題率0%で記載があるにも拘わらず、本にある下記の章が入っていないが対象外かと。
内容は実務では知っておいたほうがよい内容

15章　浮動小数点（float）の演算：その問題と限界

（試験外だが、付録について）
・付録A　用語
　Web版のチュートリアル内にはないが、Pythonドキュメントの本文のほうに「用語集」が存在。本に記載の内容より多い。
・付録B　Pythonのドキュメント群について
　用語と同様。「このドキュメントについて」にて記載。
・付録C　歴史とライセンス
　用語と同様。「歴史とライセンス」にて記載
・付録D　コピーライト
　用語と同様。「著作権」にて記載
・付録E　Python初心者だった頃ーみんながひっかかるPythonのヘンなとこ
　※マニュアル上の記載箇所不明
・付録F　Python2を読んだり書いたりせざるを得ない人へ
　※マニュアル上の記載箇所不明

# 4.一通り勉強した後に模擬試験
[Python3エンジニア認定基礎模擬試験 β版](https://exam.diveintocode.jp/exam)
ユーザ登録が必要だが、無料。
本番の試験を受け比較すると、ほぼ同じ問題やほぼ同じ答えだが違う角度からの出題で判断に迷う問題がありました。
模擬試験の使い方としては、問題を解き間違っている箇所について、回答結果を覚えるだけでなく、本を再度確認したり、少しケースを変えて実行したり細かく確認しておくのがよいかと思います。

# 5.試験申し込み
[オデッセイコミュニケーションズ](http://cbt.odyssey-com.co.jp/pythonic-exam.html)
オデッセイコミュニケーションズはこの試験で今回初めて登録しました。
OracleやMicsorosoft、Ciscoなど他民間試験もまあまあ過去受けましたが、ここは初でした。
場所と自分のスケジュール次第だが、数週間後に空いているという印象を受けました。

# 6.経験値別の勉強方法
下記実施後、模擬試験を何度か実施すればまず問題ないかと。

### Pythonを実務で使用している人
実務では必要な比較的効率のいい一部の機能しか使用していなかったりするため、Python本来の標準的な方法をやってこなかった、やっても初期だけということがあるかと思っています。
最終チェックのつもりで、こんなやり方があったのかといった気づきを覚えながら、参考書を流し読みするレベルでよいと思っています。
 
### Python以外の言語を実務で使用している人（自分ですが。。）
言語間で、微妙に文法が異なります。特に色々やっている人になると、数回試せばわかるが、
試験で一発で正解をだすとなると正確に覚えていないと不正解となる恐れがあります。
文法の違いと、Python固有の仕組みに注目しながら、出来れば実行して覚えるのがベストかと思います。

### 上記以外のプログラミングになれていない人
「Pythonチュートリアル 第3版」を学習する必要はあります。
ただ、Pythonの初心者向けではありますが、プログラミング初心者向けではないので
他のプログラミング用語から解説してくれるプログラミング入門書（Pythonのものもあります）からやる必要があります。

# 7.試験結果
合格でした。

| 章立て                                     | 出題数 | 出題率 | 正答率 |
|--------------------------------------------|--------|--------|--------|
| 1章　食欲をそそってみようか                | 1      | 2.5%   | 100%   |
| 2章　Pythonインタープリタの使い方          | 1      | 2.5%   | 100%   |
| 3章　気楽な入門編                          | 6      | 15.0%  | 67%    |
| 4章　制御構造ツール                        | 9      | 22.5%  | 100%   |
| 5章　データ構造                            | 7      | 17.5%  | 100%   |
| 6章　モジュール                            | 2      | 5.0%   | 100%   |
| 7章　入出力                                | 1      | 2.5%   | 100%   |
| 8章　エラーと例外                          | 4      | 10.0%  | 75%    |
| 9章　クラス                                | 2      | 5.0%   | 100%   |
| 10章　標準ライブラリめぐり                 | 4      | 10.0%  | 100%   |
| 11章　標準ライブラリめぐり─PartII          | 1      | 2.5%   | 100%   |
| 12章　仮想環境とパッケージ                 | 1      | 2.5%   | 100%   |
| 14章　対話環境での入力行編集とヒストリ置換 | 1      | 2.5%   | 100%   |
| 合計                                       | 40     | 100.0% | 925点  |

# 8.感想
通読すれば大丈夫という方もいましたが、この翻訳本は私にはすんなり頭に入ってこなかったため、
手を動かすことにしました。
３週間前にせっかくだから自分用の勉強メモとしてQiita書くため実行しながら勉強を３，４日しましたが、その後機械学習関連の本は読んでいたもののPythonの文法は前日までやっていなかったので、自分で書いた記事を再度見直しました。（自分で書いたものだが、長い。。。）
前回一部飛ばしたところもあったり忘れている所も多く、誤字脱字が気になったりしながら全部読みなおし、それでも全問正解するつもりでやりました。
ただ、試験中は自信がない箇所が10箇所以上あったりしましたが、再度見直したりした結果、満足いく結果になりました。