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