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

2021.05.28

2022.02.02

Fabeee社員ブログ


はじめまして。3月に入社しました、たこ です。
前職はいろいろとアレな会社にいまして・・・。
Fabeeeに入ってから、とても快適な生活が送れています!人間らしい生活バンザイ!!
やっと人間になれた軟体生物。突然ですが、社会に出てからほぼPHPで食べてきました。
「せっかく新しいとこで働くんだ、何かはじめよう」と思い、みなさんもブログで触れているPythonを基礎から学んで、資格も取ってしまおう!と意気込みました。(ステマみたいですね 笑)
いままではたまに遊ぶ程度だったPythonさん。きちんと学ぶと、当然ながら「?」がたくさん。
同じ Pythonエンジニア認定基礎試験 を受ける方にとって、少しでも力になればよいなと思います。

試験の概要

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

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

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

章立て出題数出題率
1章 食欲をそそってみようか12.5%
2章 Pythonインタープリタの使い方12.5%
3章 気楽な入門編615.0%
4章 制御構造ツール922.5%
5章 データ構造717.5%
6章 モジュール25.0%
7章 入出力12.5%
8章 エラーと例外410.0%
9章 クラス25.0%
10章 標準ライブラリめぐり410.0%
11章 標準ライブラリめぐり─PartII12.5%
12章 仮想環境とパッケージ12.5%
13章 次はなに?00.0%
14章 対話環境での入力行編集とヒストリ置換12.5%
合計40100.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楽しいな!!
最後までお読みいただき、ありがとうございました!またどこかで〜 (:。)彡

この記事の監修者:杉森由政

この記事の監修者:杉森由政

2018年2月Fabeee株式会社CTOに就任。現在は、新規事業開発部門の責任者を務めるともに、AIやブロックチェーンなどの先端技術を用いた研究開発も担当。また広島大学との連携研究においては、生体データを解析する人工知能および解析アルゴリズムの研究開発にも携わるなど、多岐に渡り活躍をしている。
>>プロフィール情報