Python3 エンジニア認定基礎試験 – 1

2022年10月10日

□1. Python の特徴に関する次の記述のうち、誤っているものはどれか。

a. Python はインタープリタ言語であり、コンパイル等が必要でないため、プログラム開発における時間を節約し
てくれる。インタープリタは対話的に使うことも可能である。
b. Python は Windows、MacOS、Linux など多くの環境で動作する。
c. Python では、文のグルーピングはカッコで囲うことでなくインデントで行われるなど、プログラムを小さく読みや
すく書けるという特徴がある。ただ変数や引数の宣言は必要である。
d. Python はフリーのオープンソースソフトウェアである。
e. Python は機械学習やディープラーニング、データ解析、Web アプリケーションなど多くの分野を得意としてい
る。

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

a. スクリプトファイルを走らせた後に対話モードに入るには、スクリプトファイル名の前に「-i」を入れるとよい。
b. プライマリプロンプトの記号は「>>>」である。
c. セカンダリプロンプトの記号はデフォルトでは「<<<」である。
d. インタープリタを対話モードで起動すると、はじめにバージョンと著作権からはじまるメッセージが、その後にプラ
イマリプロンプトが表示される。
e. プログラムの冒頭で「# coding: (エンコーディング方式)」のようにすると、デフォルト以外のエンコーディン
グを使うことも可能である。

□3. 【A】~【E】の行にある#から始まる文字列のうち Python ではコメントとして解釈されないものはどれか。

あいさつ文を表示します。 …【A】

x = 'Hello’ # Hello を変数に代入します。 …【B】

World を変数に …【C】

            # 代入します。 …【D】

y = 'World !’
print ('{}!{}!! #あいさつ文はここまでです。’.format(x, y)) …【E】

a. 【A】
b. 【B】
c. 【C】
d. 【D】
e. 【E】

□4. 次のコードの実行結果として正しいものはどれか。

a = 10
b = a ** 2
c = b % 20 + 5
d=8
e=d/b
f = d // c
print ('{0}, {1}’.format(e, f))

a. 0.8, 0
b. 0.08, 1
c. 0.08, 0
d. 0, 1.6
e. 0, 0.8

□5. 次のコードの実行結果はどれか。なおコードの\はバックスラッシュに読み替えること。

a = “She said,\"He" + 3 * “y" + “!"
b = “How are you?\" “
print (a, b)

a. She said,"Heee! How are you???"
b. She said,"HeHeHe! How are you?"
c. She said,"HeyHeyHey! How are you?"
d. She said,"Hey!y!y! How are you?"
c. She said,"Heyyy! How are you?"

□6. 次のコードの実行結果として正しいものはどれか。

Zen = 'NowIsBetterThanNever’
print('{}{}{}{}’.format(Zen[5], Zen[10], Zen[-7], Zen[-3:-1]))

a. Brave
b. BeNow
c. woNTed
d. sNake
e. sNow

□7. 次の変数 Zen に関して指定した場合、実行時にエラーとなるものはどれか。

Zen = 'SimpleIsBetterThanComplex’

a. Zen[:]
b. Zen[1000:]
c. Zen[5:1000]
d. Zen[0] = 'J’
e. Zen[:1000] + 'J’

□8. 次のコードの実行結果として正しいものはどれか。

a, b = 0, 1
while b < 10:
print(b, end=’,’)
a, b = b, a+b

a. 1,1,2,3,5,8,
b. 1,2,3,5,8,13,
c. 0,0,1,2,3,5,
d. 0,1,2,3,4,5,
e. 0,1,2,2,3,5,

□9. 次のコードの実行結果として正しいものはどれか。

colors = ['red’, 'green’, 'blue’]
colors.append('yellow’)
colors.insert(0,’purple’)
for color in colors[2:]:
print(color, len(color), end = ', ')

a. red, green, blue, 3,
b. red 3, green 3, blue 3,
c. red 3, green 5, blue 4,
d. green 5, blue 4, yellow 6,
e. green 5, blue 4, purple 6,

□10. 次のような結果を得たい場合、コードの【A】の行に入る適切なものはどれか。なお【A】に入るものは、
★a の行と同じ数の空白でインデントされている。

[ 実行結果 ]
2 is a prime number
3 is a prime number
4 equals 2 * 2

[ コード ]
for n in range(2, 10):
for x in range(2 ,n): …★a
if n % x == 0:
print(n, 'equals’, x, '*’, n//x)
break
【A】
print(n,’is a prime number’)

a. then:
b. elseif:
c. else:
d. elif:
e. continue:

□11. 次のコードの実行結果として正しいものはどれか。

for i in range(-10, -30, -5):
print(i, end=", “)

a. -10, -5, 0, 5,
b. -5, 0, 5, 10,
c. -10, -15, -20, -25, -30,
d. -15, -20, -25, -30,
e. -10, -15, -20, -25,

□12. 次の結果を得たい場合、コードの 2 行目以降を代替するものとして正しいものはどれか。なお各選択
肢の次の行には「 print(i, v) 」が記述されるものとする。

[ 実行結果 ]
0 Now
1 is
2 better
3 than
4 never

[コード]
Zen = ['Now’,’is’,’better’,’than’,’never’]
for i in range(len(Zen)):
print(i, Zen[i])

a. for i ,v in count(Zen):
b. for i ,v in enumerate(Zen):
c. in i ,v for calculate(Zen):
d. in i ,v for number(Zen):
e. for i ,v in list(Zen):

□13. 次のコードの実行結果として正しいものはどれか。

i=5
i=6

def f(arg = i):
i=7
print(arg)

i=8
i=9

f()

a. 5
b. 6
c. 7
d. 8
e. 9

□14. 次のコードに関し、【A】の行の出力として正しいものはどれか。

[コード]
def culc(a, b=1, squares=[], cubes=[]):
squares.append(a ** 2)
cubes.append(b ** 3)
return squares, cubes

print(culc(1))
print(culc(2, 3))
print(culc(3, 4)) 【A】
print(culc(4, 5))

a. ([6], [12])
b. ([2, 4, 6], [2, 9, 12])
c. ([1, 1], [4, 9], [9, 16])
d. ([1, 4, 9], [1, 27, 64])
e. ([1, 4, 16], [1, 27, 125])

□15. 次の関数を呼び出す際に、引数の指定として正しいものはどれか。

def location(city, state, country=’Japan’):
print(“I live in",country,".")
print(“My company is located in",city,",",state,".")

a. location(state=’Tokyo’, city=’chiyoda’)
b. location(state=’California’, country=’USA’, 'San Francisco’)
c. location(city=’Haryono’, state=’Jakarta’, zipcode=’12830′)
d. location('Geelong’, city=’Melbourne’)
e. location()

□16. 次のコード 1 行目の【A】に入るものとして正しいものはどれか。

[コード]
def shop(name, 【A】):
print(“flowershop:", name)
for arg in arguments:
print(arg)
print(“Recommended“)
keys = sorted(keywords.keys())
for kw in keys:
print(kw, “:", keywords[kw])

shop(“Iris","Open: 9:30 am","Close: 10:30 pm","Monday and holidays are
closed.",bouquet="Sunflower",plants="Pachira",dried="Rose")

[実行結果]
flowershop: Iris
Open: 9:30 am
Close: 10:30 pm
Monday and holidays are closed.
Recommended
bouquet : Sunflower
dried : Rose
plants : Pachira

a. arguments, keywords
b. *keywords, **arguments
c. *arguments, **keywords
d. **arguments, *keywords
e. **keywords, *arguments

□17. 次の記述のうち、正しいものはどれか。

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

□18. 次の結果を得たい場合に、コードの 1 行目~3 行目を代替し同じ結果を出力するものとして正しいも
のはどれか。

[ 実行結果 ]
[0, 1, 8, 27, 64]

[ コード ]
cubes = []
for x in range(5):
cubes.append(x ** 3)

print(cubes)

a. cubes = [x ** 3 for range(5) in x]
b. cubes = [x ** 3 for x in range(5)]
c. cubes = [x in range(5) for x ** 3]
d. cubes = [x in x ** 3 for range(5)]
e. cubes = [x for x ** 3 in range(5)]

□19. 次の実行結果を得たい場合に、コードの【A】に入るものとして正しいものはどれか。

[実行結果]
[5, 25, 125]

[コード]
matrix = 【A】
power = [row[2] for row in matrix]

print(power)

a. [[2, 3, 5], [4, 9, 25], [8, 27, 125]]
b. [[2, 4, 8], [3, 9, 27], [5, 25, 125]]
c. [[2, 4, 8], [5, 25, 125], [3, 9, 27]]
d. [[5, 3, 2], [25, 9, 4], [125, 27, 8]]
e. [[0, 5], [1, 25], [2, 125]]

□20. 次の実行結果を得たい場合に、コードの【A】と【B】に入るものの組み合わせとして正しいものはどれか。

[ 実行結果 ]
deque(['cow’, 'dog’, 'elephant’, 'fox’])

[ コード ]
from 【A】 import deque
queue = deque([“bear", “cow", “dog", “elephant","fox"])
queue.append(“goat")
【B】
queue.pop()
print(queue)

a. 【A】collections 【B】queue.popleft()
b. 【A】collections 【B】queue.pop(1)
c. 【A】collection 【B】queue.removeleft(“bear")
d. 【A】collection 【B】queue.delete()
e. 【A】collectitems 【B】queue.pop(“bear")

□21. 次のコードの実行結果として正しいものはどれか。

list = [-10, 1, 15, 20, 30]
list.insert(2,5)
list.append(50)
list.sort(reverse = True)
list.pop(-1)
print(list)

a. [-10, 1, 5, 20, 30]
b. [30, 20, 5, 1, -10]
c. [50, 2, 30, 20, 15, 1]
d. [50, 30, 20, 15, 5, 1]
e. [50, 30, 20, 5, 1]

□22. 次のコードの実行結果として正しいものはどれか。

Zen = 'ExplicitIsBetterThanImplicit’
print(Zen[1:20:3])

a. Elistra
b. EpiiIB
c. EiItT
d. xitBtTn
e. xcsthm

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

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

□24. 次のうち対話モードで入力したときに「True」が返されるのはどれか。

a. (1, 2, 3, 4) > (1, 2, 5)
b. 'PHP’ < 'Perl’ < 'Python’ c. (1, 2) > (1, 2, -1)
d. (10, 20) != (10.0, 20.0)
e. (1, 2, ('bb’, 'a’)) > (1, 2, ('bcd’, 'b’))

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

a. モジュールとは、Python の定義や文が入ったファイルである。そのファイル名は、モジュール名に接尾辞「.py」
を付けたものである。
b. あるモジュールがインポートされるときにインタープリタが検索する順序は、まずビルトインモジュール、次に
sys.path 変数で得られるディレクトリ、最後にシンボリックリンクを置いてあるディレクトリである。
c. sys.path が初期化されている場所は、入力スクリプトのあるディレクトリ、PYTHONPATH、インストールご
とのデフォルトである。
d. モジュール読み込みの高速化のため、Python はコンパイル済みのモジュールを「pycache」ディレクト
リに、例えば「module.バージョン名.pyc」のような名前でキャッシュする。
e. Python には標準モジュールのライブラリが付属する。

□26. モジュールが定義している名前を対話モードで確認したい。次のスクリプトの2行目【A】に入るものとし
て正しいものはどれか。

import sys
【A】

a. mod(systems)
b. mod(sys)
c. mod()
d. dir(mod)
e. dir(sys)

□27. 次のコードの実行結果として正しいものはどれか。

import math
print('{1:.3f}, {0:.5f}’.format(math.pi, math.e))

a. 1:3.141f, 0:2.71828f
b. 0:2.71828f, 1:3.141f
c. 3.141, 2.71828
d. 2.718, 3.14159
e. 2.71828 3.141

□28. 次のコードを実行して「整数 a:」に「5」、「整数 b:」に「0」を入力した場合の正しい結果はどれか。なお
選択肢中の「, 」は改行に読み替えること。

try:
int_a = int(input('整数 a:’))
int_b = int(input('整数 b:’))
print(int_a ** 2)
print((int_a ** 2) / int_b)
except(ValueError) as v:
print(type(v))
print('C’)
except(ZeroDivisionError) :
print('D’)
except:
print('E’)
else:
print('F’)
finally:
print('G’)

a. 25, C, F, G
b. 25, 0, C, G
c. 25, D, G
d. 25, D, F, G
e. 25, 0, D, F, G

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

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

□30. 次のスクリプトを実行した場合には適切な方法であるクリーンアップがなされる。具体的にはどのような処
理がなされているか。

with open(“file.txt") as f:
for line in f:
print(line, end="")

a. f.clean()
b. f.close()
c. file.clean()
d. close(“file.txt")
e. file.close()

□31. 次の実行結果を得たい場合、コードの【A】【B】に入る組み合わせとして適切なものはどれか。

[ 実行結果 ]
Saya is a
intelligent
speedster.

[コード]
class OurException(Exception):
pass
def raise_her_exception(a):
print(a, 'is a’)
raise 【A】
print('easygoing person.’)
def func(key: int):
try:
if key == 0:
raise_her_exception('Saya’)
except OurException as e:
print('intelligent’)
raise 【B】

key = 0
try:
func(key)
except Exception as f:
print('speedster.’)

a. 【A】OurException 【B】Exception
b. 【A】Exception 【B】OurException
c. 【A】Exception 【B】raise_her_exception
d. 【A】何も入らない 【B】Exception
e. 【A】何も入らない 【B】何も入らない

□32. クラスに関する次の記述のうち、誤っているものはどれか。

a. 名前空間とは、名前とオブジェクトの対応付け(マッピング)のことである。名前空間で重要なのは、異な
る名前空間同志の名前には一切の関わりがないということである。
b. 関数のローカル名前空間は関数がコールされたときに作られ、関数から戻ったり関数内で処理されない例
外を送出したりしたとき削除される。
c. スコープとは、ある名前空間から直接アクセスできる、プログラムテキスト上の範囲のことである。
d. クラスにinit()メソッドが定義してあると、新規生成されたインスタンスに対して自動的にinit()
メソッドがコールされる。ただしinit()メソッドに引数を与えることはできない。
e. クラスオブジェクトは2種類の操作をサポートする。属性参照とインスタンス化である。クラスのインスタンス化
には関数の表記法が使われる。

□33. 次の実行結果を得たい場合、コードの【A】【B】の行に入る組み合わせとして適切なものはどれか。なお
【A】は★a の行と、【B】は★b の行と同じ数の空白でインデントされている。

[ 実行結果 ]
I’m Saya.
I’m Magatama.
I’m David.

[ コード ]
class kusanagi():

def s(self):
print(“I’m Saya.") …★a
【A】
def m(self): …★b
print(“I’m Magatama.")

class onimaru(kusanagi):
【B】
print(“I’m David.")

k = kusanagi()
o = onimaru()
k.s()
o.d()

a. 【A】self(m): 【B】self(d)
b. 【A】self(m): 【B】def d(self):
c. 【A】self(m) 【B】self.d()
d. 【A】self.m() 【B】def d(self):
e. 【A】self.m() 【B】self.d()

□34. コマンドライン上で「python3 script.py one two three four five」を実行したときに、以下の結果
を得たい。コード 2 行目の【A】に入るものとして正しいものはどれか。

[ 実行結果 ]
['one’, 'two’, 'three’]

[ コード ]
import sys
print(【A】)

a. sys.args[1:4]
b. sys.args[1:3]
c. sys.argv[1:4]
d. sys.argv[1:3]
e. sys.argv[0:2]

□35. 次の正規表現を用いたコードの【A】の部分に入れたときエラーとなるものはどれか。

import re
prog = re.compile('(K|S)us(a|u)n(a|o)(o|m)?g?i?(saya)?’, re.IGNORECASE)
【A】
print(ret[0])

a. ret = prog.search('KUSANAGI’)
b. ret = prog.search('kusunomi’)
c. ret = prog.search('SUSANOO’)
d. ret = prog.search('kusanomi’)
e. ret = prog.search('Kusaneiro’)

□36. statistics モジュールを使って、データの平均、中央値、分散を求めたい。次のコードの【A】【B】【C】に
入りうる組み合わせとして正しいものはどれか。

import statistics
data = [1,10,15,20,25,30,35]
rslt1 = statistics.【A】(data)
rslt2 = statistics.【B】(data)
rslt3 = statistics.【C】(data)
print(rslt1, rslt2, rslt3)

a. mean median variance
b. mean center scatter
c. average middle variance
d. balance median scatter
e. average median variance

□37. 今日の日付を得たい場合、次のコード 1 行目の【A】に入る適切なものはどれか。

【A】
now = date.today()
print(now)

a. import date
b. from datetime import date
c. import date from datetime
d. from date
e. import datetime from date

□38. logging モジュールのメッセージの優先度として正しいものはどれか。左から順に優先度が高いものとす
る。

a. ERROR、CRITICAL、WARNING、INFO、DEBUG
b. ERROR、CRITICAL、WARNING、DEBUG、INFO
c. CRITICAL、ERROR、WARNING、DEBUG、INFO
d. CRITICAL、ERROR、WARNING、INFO、DEBUG
e. CRITICAL、WARNING、ERROR、INFO、DEBUG

□39. 仮想環境とパッケージに関する次の記述のうち誤っているものはどれか。

a. Python の仮想環境とは、特定バージョンの Python のインストール実体を含む、独立に機能するディレクト
リツリーおよびパッケージなどから成り立つものである。
b. 仮想環境をアクティベートしたら、pip を使ってパッケージのインストール、アップグレード、リムーブができる。
pip はデフォルトでは Python Package Index からパッケージをインストールする。
c. pip install –upgrade とすることで当該パッケージを最新バージョンにアップグレードすることができる。
d. pip uninstall にパッケージ名を指定すると、その仮想環境からパッケージを削除できる。削除対象となる
パッケージの複数指定はできない。
e. pip list はその仮想環境にインストールされたすべてのパッケージを表示する。pip freeze も同様の働きを
するが、出力形式が異なる。

□40. 次の記述に関して誤っているものはどれか。

a. 変数とモジュールの補完はインタープリタの起動時に自動で有効になっている。
b. [Tab]キーを押すと補完機能が呼び出せる。この機能は Python の文(命令)の名前、現在のローカル
変数、使用できるモジュール名を検索するものである。
c. デフォルト設定ではユーザーディレクトリの「.pyhistory」ファイルにヒストリが保存される。ヒストリは対話型イ
ンタープリタセッションで利用できる。
d. 拡張された対話型インタープリタとして bpython がある。これはタブ補完、オブジェクト探索、高度なヒストリ
管理などの機能を持つ。
e. bpython に類似した拡張対話環境に IPython がある。IPython は「pip install ipython」でインスト
ールでき、IPython の対話モードは ipython コマンドで起動できる。