今回で4度目の受験。素点 33 / 40 正解率 82.5% 評価得点 825 / 1000 により700点以上のため合格となりました。
こういう言い方もなんですが、合格して嬉しいという気持ちはありません。こんだけ受けたのだから合格して当たり前だからという理由ではなく、どちらかというと、もういっそのことあと3回ぐらい受験して、過去問題集を出版するぐらいの意気込みだったからです。逆にもう受験できないと思うと残念ですらあります。
本来であれば合格することが目的のはずですが、受験料4万円、期間2年を費やしたことで目的がずれてしまったのかもしれません。3回目(前回)の受験で不合格になったことで、合否に関係なく40問全部暗記して、それが教科書の何ページに載っているか、あるいはどこにも載っていないかを明確にすることに力を入れることとなりました。逆に、そのぐらいしないと合格には至らなかったということになります。
負け惜しみかもしれませんが(一応今日合格したので負けてはいないんですが)、2年前に1度目の受験で合格していたら、「終わったー!ブックオフ行ぐべ!」となっていたかもしれません。それが今は、この教科書をすぐには手放すことなくまだまだ情報を掬い取ろうとすら思えています。
と、前置きが長くなりましたが、それでは恒例の40問一覧です。
- venv P10
- PEP 8 2.1全体
- Blackでがimport文の順番修正はできない P34
- 例外が2個以上ある場合最初の例外が見つかったら以後の処理がなされずにfinallyへ飛ぶ
(直接そのものズバリのソースコードは教科書に載っていない) - with文を使わない書き方 P47のコード
- 可変長位置引数を受け取った場合はtupleになる P54(該当のコードはP55)
- for文でitems()メソッドを使うと2個の値を渡せるみたいな内容で足し算が正解、本当に2個書くとエラー?
(直接そのものズバリのソースコードは教科書に載っていない) - 内包表記に関する問題だったが詳細を忘れた
- next(変数名) P69のコード
- 「関数名」と「docstring」のみであり、「repr」は対象外 P79の本文ラスト4行
- repr P88のコード
- dataclassでデフォルト値がない場合は代入必須
(直接そのものズバリのソースコードは教科書に載っていない) - isinstanceで複数のデータ型のいずれかに属しているかの書き方 P103のコード
- 型ヒントで引数と戻り値両方の書き方 P109のコード
- tupleで複数の要素の型の書き方 P110のコード
- titile() P127の表およびコード
- fを使って小数第一位まで表示 P132の表およびコード
- serchおよびmatch P135のコード
- lookupで絵文字が取得でき、normalizeで半角カタカナを全角カタカナにできる
P142-143の文章およびコード - 年月日を取得する場合、 date(2025, 2, 17) あるいは datetime(2025, 2, 17) のように書く。
“2025-02-17″という書き方も一応あるにはあるがあくまでもfromisoformatの場合のみでありひっかけである。
P163およびP166のコード - sleep(0.3)で0.3秒停止する P172一番上のコード
- sort 単なる暗記ではなくソースコードの読解 P185のコード
- defaultdictの引数listにした場合、空のlistが作られる。
P195のコードが近いといえば近いが直接そのものズバリのソースコードは教科書に載っていない。 - デコレータを書くべき所になぜか @enum.Enum という無効な記載があるというひっかけ。
当然そのコードは教科書に載っていない。
ukiLab というサイト https://www.ukilab.net/python3cpe-try-again/ にて2023年9月に全く同じ問題が出ていたとの情報がある。 - product() permutations() combinations() combinations_with_replacement() の使い方。
うろ覚えの場合、最初の2個は引数が1個でもよいが、最後の2個は引数が2個必要なので絞り込みができるかもしれない。
P213-215のコード - 今回はcopyについてのみ問われた。P217のコード
ただし前回はdeepcopyについても問われたので、どっちも暗記しておくとよい。 - os.environ[“名前”]という表記。ひっかけでgetenvなる語句が選択肢にある。
同じく上記 ukiLab サイトに全く同じ問題の情報がある。
P222の表及びコード - P234のラスト7行の文章にある、初期化される要素3個がそのままズバリ出る。そうでない文章は誤り。
- PurePathにはwrite_textは存在しない。
同じく上記 ukiLab サイトに全く同じ問題の情報がある。 - tempfileには最初からディスクにのみ書き込むものと、最初はまずメモリに書き込むSpoold…がある(P225の表)。
また、コンストラクタで存在が確認できるかのような選択肢があったが、P257のコードではexists()という記載があった。 - TSV読み込みはデリミタt P286のコード
- loadsの戻り値は単なるオブジェクトとP292の表に明記してあるがこれはデマである。listが正しい。
P293のコード - funaoka.wew.jp を取り出す場合は hostname P320のコード
- P327にPOSTのコードがあるがこれが全く使われておらず、なぜかP328の「GET、POST以外」とわざわざ銘打っているコードを利用してPOSTを記述するという卑怯なもとい巧妙なひっかけ。
同じく上記 ukiLab サイトに全く同じ問題の情報がある。 - doctestは >>> を記載する P366のコード
- unittestでエラーになるものを選ぶ問題。 P373の表
- mockではintに変換できないのはP382の下のコードで明確であるが、教科書に載っていないmock()という表記はreturn_valueを定義していればエラーにはならないという教科書をいくら読み込んでも絶対に正解できない問題。
- デバッグモードに入った際に1行進めるにはどうしたらいいか。cかnの2択に絞れる。nextの略でnだと分かりやすすぎるので裏をかいてcと答えたがやっぱりnが正解という人間不信になりそうな問題。
P400の表およびP402の一番上のコード - ログ3種類出る。直接そのものズバリの説明やソースコードは教科書に載っていないがしいて言えばP415の表や文章が近いかもしれない。
- secrets.choice()で予測されにくいパスワードが生成できる P424のコード