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

2021.05.28

2021.08.12

Fabeee社員ブログ


はじめまして。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楽しいな!!
最後までお読みいただき、ありがとうございました!またどこかで〜 (:。)彡

Fabeee編集部

Fabeee編集部

こちらの記事はFabeee編集部が執筆しております。