Python3エンジニア認定基礎試験 文章問題特集

第5問 / 40問
Pythonにおけるタブ補完について正しいものを選択肢から選びなさい。

A. 変数とモジュール名の補完はインタプリタの起動時に自動で有効になっており、[Tab]キーで補完機能が呼び出せる。
B. 変数とモジュール名の補完はインタプリタの起動時に自動で有効になっており、[Tab]+[ctrl]キーで補完機能が呼び出せる。
C. 変数とモジュール名の補完はPCの起動時に自動で有効になっており、[Tab]+[ctrl]キーで補完機能が呼び出せる。
D. 変数とモジュール名の補完はPCの起動時に自動で有効になっており、[Tab]キーで補完機能が呼び出せる。

解答:A

タブ補完と履歴編集
変数とモジュール名の補完はインタプリタの起動時に 自動的に有効化されます 。 従って Tab キーは補完機能を呼び出し、Python の文の名前、現在のローカル変数、および利用可能なモジュール名を検索します。string.a のようなドットで区切られた式については、最後の '.' までの式を評価し、結果として得られたオブジェクトの属性から補完候補を示します。デフォルトの設定ではあなたのユーザーディレクトリの .python_history という名前のファイルに履歴を保存します。 履歴は次の対話的なインタプリタのセッションで再び利用することができます。

第23問 / 40問
シーケンスデータ型について説明した文章で正しいものを
選択肢の中から選びなさい。

A. リストは「immutable」であり、 重複したデータを格納することができない。
B. タプルは「mutable」であり、 重複したデータを格納することができる。
C. タプルは「immutable」であり、 アンパッキングしてアクセスすることができる。
D. リストは「mutable」であり、 タプルの中に格納することができない。

解答:C

Python における「タプル」とは、複数のデータを一直線に並べた「コレクション」タイプのデータ型です。
タプルはリストとは異なり、いったん生成した後に変更ができないオブジェクトになっています。
「変更ができない」というのは、厳密には「オブジェクト id を変えずに、要素を追加・変更・削除することができない」という意味です。この性質のことを「イミュータブル」( immutable )と言います。

下記の操作は可能となります。

  • タプルを参照している変数に再代入すること
  • タプルの中の要素がミュータブルな場合にその要素そのものを変更すること

コレクションの要素を一括して変数に代入する方法を、アンパック(unpack) といいます。

ningyocho = (35.686321, 139.782211)  # (緯度, 経度) のタプル

ido, keido = ningyocho  # ningyocho から緯度と経度を取り出す(アンパック)

print("人形町は緯度:", ido, "経度:", keido)
  1. 次の記述のうち、正しいものはどれか。

A. docstringの1行目では、オブジェクトの目的を丁寧に記述し、母国語の異なるエンジニアが読んだ場合にも誤解が生じないようあえて冗長に説明するべきである。
B. docstringはコンパクトにまとめ、空行は避けるべきである。コメント行は独立させず、該当コードについての説明であることが明示されるよう、同じ行に記述すべきである。
C. 演算子の周囲やカンマの後ろ、カッコの内側にもスペースを入れ読みやすさに配慮すべきである。
D. 国際的な環境で使用する予定のコードでは、PythonのデフォルトであるUTF-8か、さらにプレーンなASCIIが常に最良である。
解答:D

文字コード  説明
ASCIIASCIIは英語圏で使われる方式になります。1文字を1バイトで表現する、最も基礎的なエンコーディングの方式になります。
Shift-JIS
Shift-JISはASCIIに日本独自のひらがなやカタカナ、漢字などを追加したものです。
UTF-8UTF-8はASCIIに世界中で使われている文字を追加しようとしているエンコーディング方式です。UTF-8では日本語も表示させることができます。
Webサイトのエンコーディングでは90%がUTF-8を使っているという発表もされているくらい、ポピュラーな方式です。
  1. データ構造に関する次の記述のうち誤っているものはどれか。

A. タプルは変更不能(immutable)、リストと集合は変更可能(mutable)である。
B. ディクショナリは変更不能(immutable)であるがキーの型は変更可能(mutable)であり、その値は一意でなければならない。
C. ディクショナリは、全要素が「キー」と「値」のペアであるという点で、リストやタプルと大きく異なる。
D. 集合には、「順序を持たない」「同一の値の要素を重複して持つことができない」などの特徴がある。
E. リスト、タプル、集合、ディクショナリには、反復可能(iterable)であるという共通点がある。
解答:B

変更可能(mutable)リスト、辞書、集合

変更不能(immutable)数値、文字列、タプル

  1. エラーと例外に関する次の記述のうち誤っているものはどれか。

A. Pythonのエラーには2つの種類がある。構文エラーと例外である。構文エラーはパース上のエラーとも呼ばれる。
B. 文や式が構文的に正しくても、実行しようとするときにエラーが生じることがある。実行中に検知されるエラーは例外と呼ばれ、これは必ずしも致命的なものではない。
C. 例外のほとんどはプログラムでは処理されず、その結果はエラーメッセージに現れる。エラーメッセージの最終行には、NameError、TypeErrorなど例外の型が記されている。
D. [Ctrl]+[C]キーなどでユーザーがプログラムに割り込みをかけると、KeyboardInterrupt例外が送出される。
E. パーサ(構文解釈器)は違反のある行を表示し、最後にエラーが検知された点を小さな矢印で示す。エラーは矢印より後のトークンが原因である。
解答:E

  1. 文字列に関する次の記述のうち、正しいものはどれか。なお「\」はバックスラッシュに読み替えること。

A. バックスラッシュを前置した文字が特殊文字に解釈されるのが嫌な時は、最初の引用符の前に「print(raw’C:\some\name’)」のように「raw」を記述する。
B. 文字列リテラルを複数行にわたり書く一つの方法は、トリプルクオートを使う方法である。最初の改行などの行末文字が文字列に含まれることを避けたい場合は、C. 行末に「-」を置く。
D. 変数と文字列リテラルの連結、そして変数同士の連結には「.」(ドット)を使う。
E. 文字列は「*」で繰り返すことができる。「’w’ + 3 * ‘o’」は対話型インタープリタで出力「wwwo」が得られる。
F. 対話型インタープリタでは文字列は引用符に囲まれ、特殊文字はバックスラッシュでエスケープされた状態で出力される。print()関数では全体を囲む引用符が除去され、エスケープ文字や特殊文字がプリントされた状態で出力される。
解答:E

文字列リテラル'...'"..."の前にrまたはRをつけると、エスケープシーケンスを展開せずそのままの値が文字列となる。

Python で複数行にわたる文字列を定義する場合、改行を表すエスケープシーケンスを文字列の中に記述する方法の他に三連引用符を使う方法が用意されています。

三連引用符とはダブルクオーテーションまたはシングルクオーテーションを 3 つ続けたもので文字列を囲う方法です。

"""こんにちは。
今日のミーティングですが予定通りの時間に行います。
何か変更があれば連絡してください。"""

改行文字は自動的に文字列に含まれますが、行末に \ を付けることで含めないようにすることもできます。

  1. データ構造に関する次の記述のうち正しいものはどれか。

A. ディクショナリに対する帰属性判定演算子「in」「not in」による判定において、「含まれるかどうか」の判定の対象は「キー」ではなく「値」である。
B. 「set = {} 」において{}は空集合を生成する式であり、{}は空辞書を生成することはできない。
C. リストとタプルは変更可能(mutable)、集合は変更不能(immutable)である。
D. ディクショナリは変更不能(immutable)であるが、キーの型は変更可能(mutable)であり、その値は一意でなければならない。
E. リストとタプルは順序を持つ要素の集まりであるという共通点がある。
解答:E

  1. エラーと例外に関する次の記述のうち誤っているものはどれか。

A. raise文を用いることで、指定の例外を意図的に発生させることができる。raiseの引数は送出する例外を示すものであり、例外インスタンスでも、Exceptionクラスの派生クラスであるクラス(例外クラス)でも構わない。
B. 発生した例外に値が付随することもあり、これを例外の引数と呼ぶ。except 節では、例外名の後に変数を指定することができる。この変数は例外インスタンスに結び付けられており、instance.args に例外インスタンス生成時の引数が格納される。
C. [Ctrl]+[C]キーなどでユーザーがプログラムに割り込みをかけると、KeyError例外が送出される。
D. パーサ(構文解釈器)は違反のある行を表示し、最初にエラーが検知された点を小さな矢印で示す。エラーは矢印より前のトークンが原因である。
E. 例外のほとんどはプログラムでは処理されず、その結果はエラーメッセージにあらわれる。エラーメッセージの最終行には、NameError、TypeErrorなど例外の型が記されている。
解答:C

  1. 次の記述のうち、誤っているものはどれか。

A. 数注釈(アノテーション)は関数のannotations属性にディクショナリとして格納され、関数のほかの部分にはいかなる影響も及ぼさない。
B. 例えば「def func(a: int, b:str) -> value」と関数を記述したときにアノテーションに該当するものは「-> value」のみである。
C. docstringの1行目は、常にオブジェクトの目的の短く簡潔な要約を記述し、大文字で始まりピリオドで終わる行とすべきである。
D. docstringに2行目以降がある場合、2行目は空行としてようやくと他の記述を視覚的に分離すべきである。
E. PEP 8では、演算子の周囲やカンマの後ろにはスペースを入れるが、カッコのすぐ内側にはスペースを入れるべきではないとされる。
解答:B

  1. 次の記述のうち、誤っているものはどれか。

A. PEP8では、クラスや関数には一貫した命名を行うべきであり、クラスには「CamelCase」を、関数やメソッドには「lower_case_with_underscores」を使うべきとされている。
B. トリプルクート「”””」で関数内に記述されたdocstringの内容は、関数のdoc属性に文字列として格納され、help関数でドキュメントとして表示させることができる。
C. 関数注釈(アノテーション)は関数のannotations属性にリストとして格納され、注釈の内容によっては関数のほかの部分に影響を与えることもある。
D. PEP 8では、識別子に非ASCIIキャラクタを使うべきでないとされている。ASCII 範囲内で識別子として有効な文字は、大文字と小文字のアルファベット、アンダースコア、0 から 9の数字である。なお先頭文字は数字以外でなければならない。
E. docstringの1行目は、常にオブジェクトの目的の短く簡潔な要約を記述し、2行目以降がある場合、2行目は空行としてようやくと他の記述を視覚的に分離すべきである。
解答:C

  1. Pythonインタープリタに関する次の記述のうち、誤っているものはどれか。

A. ythonモジュールを呼び出すには、「python -m モジュール名 [引数] …」という方法があり、例えば「python -m timeit -h」を実行すると、timeitモジュールの詳細が出力される。
B. インタープリタの起動方法として、「python -cmd コマンド [引数] …」という方法があり、例えば「python -cmd ‘print(“hello”)’」を実行すると、「hello」が出力される。
C. 対話モードの終了方法には、関数の入力によるものと、キー操作によるものとがある。前者の具体的な方法は、quit()の入力である。後者の具体的な方法は、ファイル終端キャラクタの入力である。
D. インタープリタがスクリプト名(スクリプトのファイル名)と続く引数群を知らされると、これらは文字列のリストとなる。import sys を実行することで、このリストにアクセスできる。
E. デフォルトでは、PythonのソースファイルはUTF-8でエンコードしてあるものとして扱われる。
解答:B

  1. 数値に関する次の記述のうち、誤っているものはどれか。

A. ほとんどの演算子は左から演算が行われるが、例外的にべき乗は右から演算が行われる。例えば「48 // 6 // 4」の演算結果は「2」であり、「2 ** 1 ** 3」の演算結果は「2」である。
B. 切り下げ除算を行って整数解を得たい場合(剰余を捨てたい場合)は「//」演算子を使い、剰余のみを得たい場合は「%」演算子を使う。
C. 等号(=)は、変数を代入するのに使う。変数に代入すると参照先が代入され、値のコピーは行われない。
D. 対話モードでは、最後に表示した式は変数「_」(アンダースコア)に代入される。
E. 整数はint型、小数点を伴う数はfloat(浮動小数点数)型を持つ。演算対象の型が混合していた場合、浮動小数点数は整数に変換される。また除算は常にfloatを返す。
解答:E

対話モード時の「_ 」(アンダースコア)

最後に表示した式を格納している

  1. 文字列に関する次の記述のうち、誤っているものはどれか。なお「¥」はバックスラッシュに読み替えること。

A. Pythonの文字列は改変ができない「変更不能体(immutable)」なものであるが、文字列のインデックス指定(連番による指定)やスライシング(切取)は可能である。
B. 列挙された文字列リテラルは連結される。例えば対話モードで「>>> ‘Py’ ‘thon’」とした場合には、間にスペースを挟んだ形で自動的に連結され「’Py thon’」(yとtの間に半角スペース)となる。
C. トリプルクオート「”””」を使うと、文字列リテラルを複数行にわたって書くことができる。docstring(ドキュメンテーション文字列)でもこの記述方法が使われる。
D. バックスラッシュを前置した文字を特殊文字として解釈させないようにするには、raw文字列を使う。具体的には最初の引用符の前に「r」を置いて「print(r’C:¥some¥name’)」のように記述する。
E. 文字列は「*」で繰り返すことができる。「’He’ + 3 * ‘y’」は対話型インタープリタで出力「’Heyyy’」が得られる。
解答:B

  1. データ構造に関する次の記述のうち誤っているものはどれか。

A. 集合の生成には中カッコ{}またはset()関数を使用する。ただし空の集合を生成するには、{}ではなくset()を使う必要がある。例えば「empty = {}」とすると空のディクショナリが生成される。
B. ディクショナリに対する帰属性判定演算子「in」「not in」による判定において、「含まれるかどうか」の判定の対象は「値」ではなく「キー」である。
C. リストと集合は変更可能(mutable)、タプルは変更不能(immutable)である。
D. ディクショナリは変更可能(mutable)であるが、キーの型は変更不能(immutable)であり、その値は一意でなければならない。
E. ディクショナリにループをかけるときにenumerate()関数を使うと、キーとそれに対応した値を同時に得られる。
解答:E

  1. 入出力に関する次の記述のうち、誤っているものはどれか。

A. 文字列オブジェクトのrjust()メソッドは、文字列の左側にスペースを追加して、指定の幅に右揃えするものである。
B. 文字列オブジェクトのzfillメソッドは、プラスとマイナスの記号も含めて指定文字数となるように、数字の文字列の左側をゼロでパディングするものである。
C. 標準モジュールjsonは、Pythonのデータ階層構造を取って文字列表現にコンバートすることができる。このプロセスを「シリアライズ」という。シリアライズで文字列表現されたオブジェクトは、「デシリアライズ」という。
D. open()はファイルオブジェクトを返す関数である。open関数は第1引数にファイル名を、第2引数にモードを与えて使う。モードはファイルを読み込み専用で開くなら「r+」、書き出し専用なら「w」、追加なら「r」、読み書き両用なら「a」を指定する。
E. 値を書き出す方法には、print()関数やwriteメソッドなどがある。出力のフォーマット方法には、文字列スライシングと連結操作で行う方法や、formatメソッドを利用する方法などがある。
解答:D

右寄せ(右揃え): rjust()

右寄せでゼロ埋め(ゼロパディング)する場合はzfill()という専用のメソッドが用意されている。

中央寄せ(中央揃え): center()

左寄せ(左揃え): ljust()

  1. エラーと例外に関する次の記述のうち誤っているものはどれか。

A. raise文を用いることで、指定の例外を意図的に発生させることができる。raiseの引数は送出する例外を示すものであり、例外インスタンスでも、Exceptionクラスの派生クラスであるクラス(例外クラス)でも構わない。
B. 発生した例外に値が付随することもあり、これを例外の引数と呼ぶ。except 節では、例外名の後に変数を指定することができる。この変数には例外インスタンスが結び付けられており、例外インスタンスには「str()」が定義してある。
C. [Ctrl]+[c]キーなどでユーザーがプログラムに割り込みをかけると、KeyboardInterrupt例外が送出される。
D. パーサ(構文解釈器)は違反のある行を表示し、最初にエラーが検知された点に下線が引かれる。エラーは矢印より前のトークンが原因である。
E. 例外のほとんどはプログラムでは処理されず、その結果はエラーメッセージにあらわれる。エラーメッセージの最終行には、NameError、TypeErrorなど例外の型が記されている。
解答:D

例外インスタンスでは__str__関数はインスタンスの引数を直接印字できるよう実装されているそうです。

except 節では、例外名の後に変数を指定することができます。この変数は例外インスタンスに結び付けられており、 instance.args に例外インスタンス生成時の引数が入っています。例外インスタンスには str() が定義されており、 .args を参照しなくても引数を直接印字できるように利便性が図られています。必要なら、例外を送出する前にインスタンス化して、任意の属性を追加できます。

  1. モジュールに関する次の記述のうち誤っているものはどれか。

A. processingモジュールを使うと、コード処理の実行時間を計測できる。
B. smtplibモジュールを使うと、任意のインターネット上のホストにメールを送ることができる。
C. randomモジュールを使うと、疑似乱数を生成することができる。
D. urllib.request モジュールを使うと、URLにあるデータを取得することができる。
E. statisticsモジュールを使うと、数値データの基本統計量(平均、中央値、分散など)を取得することができる。
解答:A

processingとはプログラミングで画面上に絵を描写して、動かしたりする統合開発環境です。
プログラミング学習のために簡単なゲームのようなものを作る場合にも使われたり、グラフを表示させたりする時によく使われます。

smtplib モジュールは、SMTPまたはESMTPのリスナーデーモンを備えた任意のインターネット上のホストにメールを送るために使用することができる SMTPクライアント・セッション・オブジェクトを定義します。

urllib.request モジュールは基本的な認証、暗号化認証、リダイレクション、Cookie、その他の介在する複雑なアクセス環境において (大抵は HTTP で) URL を開くための関数とクラスを定義します。

  1. 次の記述に関して正しいものはどれか。

A. デフォルト設定ではユーザーディレクトリの「.pyhistory」ファイルにヒストリが保存される。ヒストリは対話型インタープリタセッションで利用できる。
B. [Ctrl]+[t]キーを押すと補完機能が呼び出せる。この機能はPythonの文(命令)の名前、現在のローカル変数、使用できるモジュール名を検索するものである。
C. 拡張された対話型インタープリタとしてBythonがある。これはオブジェクト探索、高度なヒストリ管理などの機能を持つ。
D. IPythonは「pip install ipython」でインストールできる。IPythonの対話モードはipythonコマンドで起動できる。終了時はdeactivateコマンドを実行すればよい。
E. 変数とモジュールの補完機能は、インタープリタの起動時に自動で有効になっている。
解答:E

[Tab]キーを押すと補完機能が呼び出せる。

「Bython」が誤りで、「Bpython」か、または「Ipython」か正しい。

IPythonは「pip install ipython」でインストールできる。IPythonの対話モードはipythonコマンドで起動できる。終了時はdeactivateコマンドを実行すればよい。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。