Python 3 エンジニア認定実践試験 問題集3. 「Pythonの言語仕様」

投稿日:

更新日:

カテゴリ:

Python 3 エンジニア認定実践試験対策として、第3章「Pythonの言語仕様」についてChatGPTで生成した模擬問題です。

生成された問題の適切性と“正解”回答の正しさは一通り検証しておりますので、皆さんのご参考になれれば嬉しいです。

問題

問題は以下になります。3章は問題割合が一番高い章になりますので、少し多めに用意してます。

問題の下に正解を隠してますので、クリックしたら確認できます。
あとは、検証した内容や補足を付け加えてますので参考にしてください。

  1. Pythonの変数は何の型を持つことができますか?

    • a) int
    • b) float
    • c) str
    • d) すべての上記
    クリックして正解と解説をチェック
    正解: d) すべての上記

    Pythonのデータ型について公式のドキュメントは「The Python Standard Library」で紹介されています。
    よく使われるのは、int, float, list, tuple, range, str, bytes, set, dict あたりでしょうか。


  2. Pythonのリスト(list)はどのようなデータ型を含むことができますか?

    • a) 同じデータ型の要素のみ
    • b) 異なるデータ型の要素のみ
    • c) 同じまたは異なるデータ型の要素を含むことができる
    • d) 数値のみ
    クリックして正解と解説をチェック
    正解: c) 同じまたは異なるデータ型の要素を含むことができる

    下記通り、文字列や整数、小数、辞書などを同じリストに格納できます。

    >>> ['a', 1, 0.2, {'k': 'value'}]
    ['a', 1, 0.2, {'k': 'value'}]


  3. Pythonのクラス内でメソッドを定義する際、メソッドの最初の引数は何ですか?

    • a) this
    • b) method
    • c) self
    • d) cls
    クリックして正解と解説をチェック
    正解: c) self

    これは第4章クラスの内容ですね。テキストでいうP84になります。selfという名前は慣例です。


  4. Pythonの条件文において、条件が複数の選択肢のいずれかに一致する場合に使用するキーワードは何ですか?

    • a) while
    • b) else if
    • c) else
    • d) elif
    クリックして正解と解説をチェック
    正解: d) elif

    問題文の表現は微妙かもしれませんが、選択肢からは、b)かd)かだとお分かりかと思います。
    次の通り、Pythonの場合はelifです。

    >>> a = None
    >>> if a == "a":
    ...     print("a")
    ... elif a == None:
    ...     print("none")
    ... else:
    ...     print("other")
    ... 
    none


  5. Pythonのモジュール(module)ファイルの拡張子は何ですか?

    • a) .py
    • b) .pm
    • c) .mod
    • d) .pyl
    クリックして正解と解説をチェック
    正解: a) .py

    ん〜こんな問題出ますかね。。一応残しておきます。


  6. Pythonのforループを途中で終了し、次の繰り返しを開始するために使用されるキーワードは何ですか?

    • a) continue
    • b) break
    • c) return
    • d) pass
    クリックして正解と解説をチェック
    正解: a) continue

    次の通りです。

    >>> for i in range(10):
    ...     if i % 2 == 0:
    ...         continue
    ...     print(i)
    ... 
    1
    3
    5
    7
    9

    ちなみに、passだと次の書き方で同じ結果を得られます。

    >>> for i in range(10):
    ...     if i % 2 == 1:
    ...         print(i)
    ...     else:
    ...         pass
    ... 
    1
    3
    5
    7
    9


  7. Pythonの整数(int)型はどのような範囲の値を表現できますか?

    • a) -128から127まで
    • b) -32,768から32,767まで
    • c) 0から2,147,483,647まで
    • d) 無限大の範囲を表現できる
    クリックして正解と解説をチェック
    正解: d) 無限大の範囲を表現できる

    これは、、知りませんでした。。
    Pythonでの整数型の定義と最大値」が参考になりますが、Python3のintにはメモリが許容される範囲で制限がないようですね。

    ちなみに、「How to Get Max Int in Python?」を参考にすると、次のように最大値が取れるようです。

    >>> import sys
    >>> print(sys.maxsize)
    9223372036854775807


  8. Pythonの浮動小数点数(float)型は、通常、何ビットの精度を持ちますか?

    • a) 16ビット
    • b) 32ビット
    • c) 64ビット
    • d) 128ビット
    クリックして正解と解説をチェック
    正解: c) 64ビット

    Python floatが参考になります。
    ちなみに、下記公式とstackoverflowの回答を参考にすると、Pythonにはdoubleがなく、floatは他の言語で言うdouble的な精度になっているようです。

    1. Numeric Types — int, float, complex
    2. Double precision floating values in Python?

  9. Pythonの文字列(str)は、通常、どのようなエンコーディングを使用してテキストを表現しますか?

    • a) ASCII
    • b) UTF-8
    • c) Latin-1
    • d) ISO-8859-1
    クリックして正解と解説をチェック
    正解: b) UTF-8

    Pythonの公式チュートリアルでは「class str(object=b”, encoding=’utf-8′, errors=’strict’)」が参考になります。
    あとは、あまり直接な証拠ではありませんが、テキストP128、第6章テキストの処理の内容になりますが、strのメソッドについてencode(encoding="utf-8", errors="strict")とありますように、デフォルト値から上記の回答を導き出すことはできるだと思います。


  10. Pythonのセット(set)は、要素の順序を保持しますか?

    • a) はい、順序を保持する
    • b) いいえ、順序を保持しない
    • c) 要素の数による
    • d) 特定の条件による
    クリックして正解と解説をチェック
    正解: b) いいえ、順序を保持しない

    これについて面白い例があります。テキストP370 doctestについての内容ですが、次のコードになります。

    def foo():
    """doctest
    
    >>> foo()
    {'Hermione', 'Harry'}
    """
    return {"Hermione", "Harry"}

    実行すると、次のようになります。

    % python -m doctest -v foo.py
    Trying:
        foo()
    Expecting:
        {'Hermione', 'Harry'}
    **********************************************************************
    File "/Users/foo.py", line 4, in foo.foo
    Failed example:
        foo()
    Expected:
        {'Hermione', 'Harry'}
    Got:
        {'Harry', 'Hermione'}
    1 items had no tests:
        foo
    **********************************************************************
    1 items had failures:
        1 of   1 in foo.foo
    1 tests in 2 items.
    0 passed and 1 failed.
    ***Test Failed*** 1 failures.

    これはまさにセットは並び順を保持できないことが原因ですね。


  11. Pythonの辞書(dictionary)は、キーと値のペアを格納するためのデータ構造ですが、値は何の型である必要がありますか?

    • a) 任意の型
    • b) 文字列型(str)
    • c) 整数型(int)
    • d) リスト型(list)
    クリックして正解と解説をチェック
    正解: a) 任意の型

    3-1. 辞書 (dictionary)」が参考になりますので、一部引用すると以下になります。

    辞書は、キー (key) と値 (value) を対応づけるデータです。 キーとしては、文字列・数値・タプルなどの変更不可能なデータを使うことができますが、 変更可能なデータであるリスト・辞書を使うことはできません。 (辞書も変更可能なデータです。) 一方、値としては、変更の可否にかかわらずあらゆる種類のデータを指定できます。

    ChatGPT元の問題は「キーは何の型」でした。それに対して正解は任意の型だったので、、えぇぇー思いましたが、実際検証してみたら以下の通り、案の定嘘でしたね。ですので、問題を値の型について変更しました。

    >>> {['a','b']: 'ab', ['c']: 'c'}
    Traceback (most recent call last):
      File "", line 1, in 
    TypeError: unhashable type: 'list'
    
    >>> {'ab':['a', 'b'], 'c':['c']}
    {'ab': ['a', 'b'], 'c': ['c']}
    
    >>> {1:['a', 'b'], 3:['c']}
    {1: ['a', 'b'], 3: ['c']}


  12. Pythonのジェネレータ関数を定義するために使用されるキーワードは何ですか?

    • a) gen
    • b) generator
    • c) def
    • d) yield
    クリックして正解と解説をチェック
    正解: d) yield

    テキストP68に関連する内容があります。

    文は実行された時点の値を返し、その位置で一時停止の状態になり次の呼び出しを待つ


  13. Pythonのリスト内包表記(List Comprehension)は、何を簡潔に記述するために使用されますか?

    • a) 条件文
    • b) ループ
    • c) 関数呼び出し
    • d) クラス定義
    クリックして正解と解説をチェック
    正解: b) ループ

    次のような感じです。
    ちなみに、range()は0から始まります。

    >>> [i for i in range(5)]
    [0, 1, 2, 3, 4]
    
    >>> [i for i in range(0)]
    []
    >>> [i for i in range(-1)]
    []


  14. Pythonのモジュールをインポートする際、別名を付けるために使用されるキーワードは何ですか?

    • a) use
    • b) as
    • c) alias
    • d) with
    クリックして正解と解説をチェック
    正解: b) as

    テキストはP41に、次のような例外をキャッチした時の書き方で「as 一時変数名」として紹介されています。

    >>> try:
    ...     num = 10 / 0
    ... except (ZeroDivisionError) as e:
    ...     print(f'exception: {e}')
    ... 
    exception: division by zero

    インポートの例ならこんな感じです。

    >>> from datetime import datetime as dt
    >>> d1 = dt(2023,9,24)
    >>> dt
    


  15. Pythonのリストを浅いコピー(シャローコピー)するために使用されるメソッドは何ですか?

    • a) clone()
    • b) copy()
    • c) deepcopy()
    • d) slice()
    クリックして正解と解説をチェック
    正解: b) copy()

    テキストP216、第9章のミュータブルなオブジェクトをコピーする内容になります。
    浅いコピーはcopy()、深いコピーはdeepcopy()です。


  16. Pythonのモジュール(module)ファイルの中には、通常、どの特殊な変数が含まれていますか?

    • a) __main__
    • b) __init__
    • c) __module__
    • d) __file__
    クリックして正解と解説をチェック
    正解: b) _init_

    関連内容はテキストP91になります。
    主な特殊メソッドは以下です。当てはまるのはb) __init__ですね。

    • __init__
    • __call__
    • __repr__
    • __str__
    • __len__
    • __lt__
    • __le__
    • __eq__
    • __ne__
    • __gt__
    • __ge__
    • __add__
    • __sub__
    • __mul__
    • __truediv__

  17. Pythonのリスト(list)に要素を追加するためのメソッドはどれですか?

    • a) push()
    • b) append()
    • c) insert()
    • d) add()
    クリックして正解と解説をチェック
    正解: b) append()

    私はなぜかaddだと思ってました。。以下検証した通りです。

    >>> a = [1, 2, 3]
    >>> a
    [1, 2, 3]
    
    >>> a.add(4)
    Traceback (most recent call last):
      File "", line 1, in 
    AttributeError: 'list' object has no attribute 'add'
    
    >>> a.append(4)
    >>> a
    [1, 2, 3, 4]


  18. Pythonのインスタンス変数は、通常、どこで初期化されますか?

    • a) クラス定義の中で
    • b) コンストラクタ内で
    • c) メソッド内で
    • d) インスタンス作成時に自動的に初期化される
    クリックして正解と解説をチェック
    正解: b) コンストラクタ内で

    コンストラクタについての内容はテキストP85です。


  19. Pythonのコード内でコメントを複数行にまたがって書く場合、どの記号を使用しますか?

    • a) #
    • b) /#
    • c) “”” “””
    • d) //
    クリックして正解と解説をチェック
    正解: c) “”” “””

    コメントに関する内容はテキストのP22~23あたりです。


  20. Pythonのクラス内で別のクラスを継承するために使用されるキーワードは何ですか?

    • a) base
    • b) extends
    • c) inherits
    • d) class
    クリックして正解と解説をチェック
    正解: d) class

    継承に関する内容はテキストのP94あたりです。Pythonの継承はclass 子クラス名(親クラス名):というような書き方です。


  21. Pythonのクラスメソッドを定義するために使用されるデコレータは何ですか?

    • a) @classmethod
    • b) @staticmethod
    • c) @instance_method
    • d) @class_method
    クリックして正解と解説をチェック
    正解: a) @classmethod

    テキストはP87とP92で触れてます。datetime.now()には@classmethodが付けられています。
    ライブラリソースはこちらです。

    @classmethod
    def now(cls, tz=None):
        "Construct a datetime from time.time() and optional time zone info."
        t = _time.time()
        return cls.fromtimestamp(t, tz)


  22. Pythonの条件文で、条件がFalseの場合に実行されるブロックを指定するキーワードは何ですか?

    • a) when
    • b) unless
    • c) else
    • d) otherwise
    クリックして正解と解説をチェック
    正解: c) else

    rubyにはunlessがあり、Pythonというif notに当たります。


  23. Pythonの文字列のスライス(slicing)を使用して、文字列の一部を取り出すときに、開始位置が省略された場合、どの位置から開始されますか?

    • a) 最初の位置
    • b) 最後の位置
    • c) 省略できません
    • d) 0から数えて5番目の位置
    クリックして正解と解説をチェック
    正解: a) 最初の位置

    次のような感じです。

    >>> b = "Hello, World!"
    >>> print(b[2:5])
    llo
    >>> print(b[:5])
    Hello
    
    # 1個飛ばし
    >>> print(b[::2])
    Hlo ol!


  24. Pythonのwith文は、主にどのようなリソースを簡潔に扱うために使用されますか?

    • a) メモリリソース
    • b) ファイルリソース
    • c) グラフィックリソース
    • d) サウンドリソース
    クリックして正解と解説をチェック
    正解: b) ファイルリソース

    テキストP50にwith文のよく利用されるケースについて以下記載があります。

    ファイルやネットワーク、データベースコネクションのopen/close

    厳密にはJavaで言うcloseable的なソースが対象になると思います。


  25. Pythonのタップルやリスト、辞書などの複数要素を持つものから要素を取り出して複数の変数に代入する操作は何と呼ばれますか?

    • a) アサインメント
    • b) マッピング
    • c) アンパック
    • d) スワップ
    クリックして正解と解説をチェック
    正解: c) アンパック

    テキストP60あたりになります。個人的には、特に次のようなアスタリスクを使ったアンパックが便利だと感じています。

    >>> tp = (0, 1, 2, 3, 4, 5)
    >>> a, *b, c = tp
    >>> print(f'{a}, {b}, {c}')
    0, [1, 2, 3, 4], 5


  26. Pythonのジェネレーター(generator)は、通常、何を簡潔に生成するために使用されますか?

    • a) クラスインスタンス
    • b) リスト
    • c) イテレータ
    • d) シーケンス
    クリックして正解と解説をチェック
    正解: c) イテレータ

    テキストP67、一番最初に書いてますね。


  27. Pythonのyield文は通常、何を定義するために使用されますか?

    • a) ループ
    • b) 関数
    • c) ジェネレーター
    • d) クラス
    クリックして正解と解説をチェック
    正解: c) ジェネレーター

    テキストP68に関連する内容があります。上に似た解説がありましたのでここでは省略します。


  28. Pythonのwith文は、コードブロックの開始時に何を実行するために使用されますか?

    • a) 初期化
    • b) クリーンアップ
    • c) 条件判定
    • d) 無効化
    クリックして正解と解説をチェック
    正解: a) 初期化

    テキストP48になります。with文の開始時には、コンテキストマネージャーの__init__()__enter__()メソッド処理が実行されます。
    withブロックの終了時には__exit__()メソッド処理が実行されます。



投稿日

カテゴリー:

投稿者:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です