FabeeeFabeee

お問い合わせ
2021.05.28

『Pythonエンジニア認定基礎試験』を受けてみよう!

pythonの画像

 

はじめまして。3月に入社しました、たこ です。
前職はいろいろとアレな会社にいまして・・・。
Fabeeeに入ってから、とても快適な生活が送れています!人間らしい生活バンザイ!!

やっと人間になれた軟体生物。突然ですが、社会に出てからほぼPHPで食べてきました。

「せっかく新しいとこで働くんだ、何かはじめよう」と思い、みなさんもブログで触れているPythonを基礎から学んで、資格も取ってしまおう!と意気込みました。(ステマみたいですね 笑)

いままではたまに遊ぶ程度だったPythonさん。きちんと学ぶと、当然ながら「?」がたくさん。
同じ Pythonエンジニア認定基礎試験 を受ける方にとって、少しでも力になればよいなと思います。

試験の概要


公式サイトにありますが、試験について簡単にご説明します!
試験の概要は下記のとおりです。

    ・受験料金:1万円(税別) 学割5千円(税別)
    ・問題数:40問(すべて選択問題)
    ・試験時間:60分
    ・合格ライン:正答率70%

出題傾向も公式サイトに載っていて、「Pythonチュートリアル 第3版」から、出題される問題がほぼみたいで、セクションごとに比率が決まっています。下記引用です。

 

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

 

比率の高い章を重点的に学習すれば問題なさそう・・・?(せこい)

 

ですが、〇時間で合格する!が目的ではないので、教材は総なめしてゆきます。笑
また、教材を買わずとも、Pythonの公式がまるっとPython チュートリアルを無料で公開してくれているみたいです。ありがたいですね!

 

今回は、私が勉強・過去問題を解いていて、へーと思った&よく落とすところを紹介します!

複数比較について


PHPでは 「x < y && z < y 」と比較するところ、
x < y < z」でできるのは可読性も上がるので魅力です。
1文字目が同じなら2文字目、その次は3文字目・・・と順番に比較されます。また、文字列でも同じように比較ができます。

模擬問題で出たのは、こんな感じです。

下記のなかで、Trueが返却されるのはどれか。
1. (1,2,3,4) > (1,2,4)
2. 'Math' < 'NumPy' < 'pandas' < 'scikit-learn'
3. (1,2,('xyy','a')) < (1,2,('xyz','a'))
4. ('bb', 'c') < ('bcd', 'a')

答えは2です。
ちゃんと考えれば単純ですが、私はこういうのが苦手で落としがち。冷静に解きたいところです。

 

文字の大小の比較は、Unicode一覧表で確認できますが、全て覚えるのは大変なので、アルファベットは大文字の方が番号が若い点だけ覚えておけば、OKだと思います!
日本語もひらがなのほうがカタカナより番号が若いです。今回は割愛します。

[参考]
Unicode一覧 0000-0FFF – Wikipedia
Unicode一覧 3000-3FFF – Wikipedia

関数の引数に可変長の設定できる


そんな設定できるんですか・・・?という気持ちで実際やってみました。

・可変長の文字列。可変長にしたいところに「*」を付ける。


def food(name, *values):
        print(name + "の餌は、", end='')
        for val in values:
                print(val, end=' ')

        print('です。')
food('たこ', 'かに', 'えび')

# 結果
たこの餌は、かに えび です。

 

・可変長のキーワード。可変長にしたいところに「**」を付ける。


def food(name, **keyword):
        print(name + "は、", end='')
        for key, val in keyword.items():
                print(f'{key}に{val}', end=' ')
        print('を食べました。')
food('たこ', 朝='かに', 夜='えび')

# 結果
たこは、朝にかに 夜にえび を食べました。

えーー良い子。。。
ただ、使いすぎると元の関数の形がわからずに、ごちゃつきそうです。
模擬問題では、上記2つを組み合わせた、当てはめ問題が出ていました!

文字列の扱い


これまた単純ではありますが、理解んい苦しんだところです。
文字列は インデックスを指定して文字を取得できます。また、「スライス」に馴染みがなかったので、慣れませんでした。
それら関しての模擬問題が出題されていました。

例えば、こんな文字列があったとします。


>>> Tako = 'MyNameIsOctopus'

スライスを使って、1-5文字目を取り出してみましょう。インデックスは、リストと同じく0から始まるようです。よしよし。


>>> Tako[0:4]
'MyNa'

あれ?0〜4の指定じゃない。
よく読むと「開始値は常に含まれ、終了値は常に含まれない」とあります。
いきなりひっかかりました。ただ一度引っかかったのでもう大丈夫!次はいける。次の例題。

・Tako[100]
・Tako[100:100]

いやいや、これは両方エラーでしょ!結果は・・・


>>> Tako[100]
Traceback (most recent call last):
  File "", line 1, in 
IndexError: string index out of range
>>> Tako[100:100]
''

片方通るんですか。。参考書を読みました。
「大き過ぎるインデックスを使おうとするとエラーが発生しますが、スライスで範囲外のインデックスを使ったときは、上手く対応して扱ってくれます。」
なんで。。。はい覚えます。
それ以外にも、文字列は不変なので「Tako[5]=Z」など、文字の置き換えができないことを知りました。
もう間違えないぞ〜!

まだまだありますが


学んだ点はたくさんありますが、キリがないのでこの辺で・・・。

 

先ほどから、「模擬問題」とありますが・・・。下記から無料で受けられます。コテ調べで受けてみてはいかがでしょうか!
https://study.prime-strategy.co.jp/
https://exam.diveintocode.jp/exam

さいごに


Pythonを扱っている方には、あーハイハイ案件。
これまで、欲しいところだけ摘んでいたのがもったいなかったなと感じます。
きっちり資格を取得して、レベルアップします!Python楽しいな!!

最後までお読みいただき、ありがとうございました!またどこかで〜 (:。)彡