ディープロPython3エンジニア認定基礎試験
間違えた問題の見直し
1.Pythonの変数に関する記述として正しいものを選択肢から選びなさい。
【正答】
関数内で変数に代入を行うと、その値がローカル変数のシンボル表に記録される
解説
関数を 実行 (execution) するとき、関数のローカル変数のために使われる新たなシンボルテーブル (symbol table) が用意されます。もっと正確にいうと、関数内で変数への代入を行うと、その値はすべてこのローカルなシンボルテーブルに記憶されます。
一方、変数の参照を行うと、まずローカルなシンボルテーブルが検索され、次にさらに外側の関数のローカルなシンボルテーブルを検索し、その後グローバルなシンボルテーブルを調べ、最後に組み込みの名前テーブルを調べます。 従って、関数の中では (グローバル変数が global 文で指定されていたり、外側の関数の変数が nonlocal 文で指定されていない限り) グローバル変数や外側の関数の変数に直接値を代入できませんが、参照することはできます。
2.以下のプログラムを実行した際の出力結果を選びなさい。
d = 'dive\ninto\ncode\t'
print(len(d))
【正答】
15
解説
len()関数について
「\n」や「\t」などのエスケープシーケンスはひとつで1文字
3.条件についての説明で誤っているものを選択肢から選びなさい。
【正答】
比較はブール演算のand及びorによって組み合わせることができ、また比較の結論はnotにより否定ができる。これらの優先順位は比較演算子よりも高い。
解説
論理演算子の優先順位は、not > and > or
「<」,「>」などの比較演算子はnotよりもさらに優先順位が高い
4.次のprint文のうち、「こんにちは!山田さん」と出力される記述はどれかを選びなさい。
【正答】
print(‘こんにちは!{}さん’.format(‘山田’))
解説
formatメソッドを使った文字列の書式設定
置換フィールドを含む文字列.format(値1, 値2, ...)
5.問題文のprint文を実行した場合の、出力結果を選びなさい。
print("出力結果:")
print('円周率は%5.3fである。'%math.pi)
【正答】
出力結果:円周率は3.142である。
解説
5.3f の 5 はフォーマット後の文字列が 5 桁に満たなければ左にスペースを挿入して 5 桁にするという意味です。5 桁以上の場合は何もしません。
3 は小数点以下の数字を 4 桁目で四捨五入して 3 桁にするという意味です。
f は小数であることを示します。
6.以下のプログラムを実行した際の出力結果を選びなさい。
for i in range(20):
if i%3 == 0:
print("{}は3で割り切れます".format(i), end=' ')
elif i>8 and i%2 == 0:
break
else:
continue
【正答】
0は3で割り切れます 3は3で割り切れます 6は3で割り切れます 9は3で割り切れます
7.Pythonインタプリタにて以下のように入力した場合の出力結果として正しいものを選びなさい。
>>>import reprlib
>>>reprlib.repr(set('diveintocode'))
【正答】
"{'c', 'd', 'e', 'i', 'n', 'o', ...}"
解説
reprlib
出力文字列の長さを制御するモジュール
reprlib.Repr
各オブジェクトの表示方法を指定することが出来るclass。
ここからサブクラスとかを作って、カスタマイズさせたい場合は、これを使用する
reprlib.aRepr
reprlib.repr関数を提供するinstance。
reprlib.repr
これを使って、出力の長さを制限する
@reprlib.recursive_repr(fillvalue="...")
再帰的な出力が合った場合に出力数を制限するデコレーター
問題では、
set('diveintocode')
で重複を削除した集合にし、
{'v', 'n', 'o', 'i', 'c', 'e', 't', 'd'}
recursive_repr(set('diveintocode'))
で出力文字列を制御している。
{'c', 'd', 'e', 'i', 'n', 'o', ...}
正解したが見直す問題
1.以下のプログラムを実行した際の出力結果として正しいものを選択しなさい。
dive_into_code = [(1, 'Noro'), (2, 'Nakao'), (3, 'Miyaoka'), (4, 'Kimura')]
dic = dive_into_code
dic.sort(key=lambda dic: dic[1])
print(dic)
【正答】
[(4, 'Kimura'), (3, 'Miyaoka'), (2, 'Nakao'), (1, 'Noro')]
解説
sort の key として lambda dic[1] を使っています。dic[1] はリストの名前の部分ですので、名前の昇順で並び替えられているものが正解になります。
PRIME STUDY 第1回 Python 3 基礎 模擬試験
スコアは 95 点/ 100点満点です。
https://study.prime-strategy.co.jp/study/py3ba1/