Python3エンジニア認定基礎試験 対策(其の4)

python-code python
この記事は約10分で読めます。

Python3エンジニア認定基礎試験を受けるべく勉強をしていますが、実際に模試が無料でありましたので復習しながらまとめていきますの第4回めです。

1回め、2回め、3回めはこちらです!

問題ベースの復習

以下のプログラムを実行した際の出力結果は?

list = [5, 3, 1, 2, 3, 4, 5, 2]
list.remove(2)
print(list)

答え

[5, 3, 1, 3, 4, 5, 2]

  1. 8つの要素がリスト型で変数listに代入されている
  2. そこから remove() で、()で指定した値と同じ値を取得し、最初の要素のみを削除
  3. 変数listを出力

remove( )・・・指定した値と同じ値を取得し、最初の要素のみを削除

以下のプログラムを実行した際の出力結果は?

i = 10

def num(arg=i):
    print(arg)

i = 7

num()

答え

10

  1. 変数 i に10を代入
  2. 関数 numを定義
    1. 引数 arg に i を定義
    2. この時点で、i は10が入っている
    3. 関数 num を定義したときには、num()オブジェクトが arg=10 を保持している。
  3. i = 7 を定義
  4. num() で関数を実行
    1. num() iには10が入っている

デフォルト引数・・・関数定義時に代入された変数オブジェクトへのリンク
デフォルト値を設定することで、呼び出しの際に値を呼び出さなくても良くなる。-> num()で良くなる。

引数のデフォルト値の評価は、関数を定義した時点で定義を書いたスコープで行なわれる

i = 5

def f(arg=1):
    print(arg)

i = 6
f()

# 出力は、5
# 引数のデフォルト値の氷菓は、一度しか起きない。
Python♪引数のディフォルト値が変化する場合と変化しない場合の違い
 引数のディフォルト値を設定し、関数内でその変数を変更すると、次に関数を呼び出すとき、ディフォルト値が変化する場合と変化しない場合があります。しかし、これは、理由を理解するとシンプルです。どんな場合にディフォルト値が変わってしまうのかがわか

以下のプログラムをインタープリタにて実行した際の出力結果は?

(1, 3, 5) < (1, 2, 3, 4)

答え

FALSE

  1. 要素どおしを比較し、真偽を求めていく
    1. 1の次が 3 と 2 で、 3 < 2 となる
    2. これは偽 なので FALSEが返る

printを実行した場合の、出力結果は?

print("出力結果: ")
print('円周率は%5.3fである。'%math.pi)

答え

出力結果: 円周率は3.142である。

  1. math.piは、円周率を返すので、3.141592653589793 が返る
  2. %5.3f
    1. %fはfloat型(実数)を出力
    2. 表示桁数は、 <全体の幅>.<小数点以下の幅> という指定なので 全体で5文字の小数点以下3つの出力。
DOSプロンプト

% 演算子を使っての文字列書式設定・・・% 演算子の左側の print() のフォーマット文字列に、% 演算子の右側の値を適用し、結果の文字列を返す。

7. 入力と出力 — Python 3.8.5 ドキュメント

Pythonインタープリタにて以下のように入力した際の出力結果は?

>>> import random
>>> random.sample(range(1000), 5)

答え

[756, 121, 482, 264, 841]

  • ランダムに要素を1つ選択・・・random.choice(リスト)
  • ランダムに複数の要素を選択(重複なし)・・・random.sample(リスト, 取得したい要素の個数)
  • ランダムに複数の要素を選択(重複あり)・・・random.choices(リスト, 取得したい要素の個数)

リストは、range(1000)なので、0~999で、そこから5つを取り出す。(ランダムで)

Pythonでリストからランダムに要素を選択するchoice, sample, choices | note.nkmk.me
Python標準ライブラリのrandomモジュールの関数choice(), sample(), choices()を使うと、リストやタプル、文字列などのシーケンスオブジェクトからランダムに要素を選択して取得(ランダムサンプリング)できる。choice()は要素を一つ取得、sample(), choices()は複数の要...

バイナリデータレコードの処理を行うモジュールは?

答え

struct

  • structは、Pythonでバイナリデータを処理するモジュール。
  • バイナリデータはPythonではbytes型に表現され、structモジュールを使うと細かくフォーマットを指定してバイナリデータを作成したり数値に変換したりができる。
  • センサーや制御機器系の I/Oで使われるようで、ラズパイでよく使われるらしい。
Pythonのstructモジュールの使い方【初心者向け】
初心者向けにPythonのstructモジュールの使い方について解説しています。structはPythonでバイナリデータを扱う際に使用されます。基本構文と指定できる値、実例について見ていきましょう。

Pythonがサポートする複素数の虚部を表す接尾辞は?

答え

「j」または「J」

  • 複素数を表現する際には、 j もしくは J を添え字として付けることにより、表現できる。
  • 複素数の四則演算にはモジュールインポートは不要。
Python, complex型で複素数を扱う(絶対値、偏角、極座標変換など) | note.nkmk.me
Pythonには複素数を扱うための型、complex型が標準で用意されている。単純な計算だけならモジュールをインポートすることなく使える。ここでは以下の内容についてサンプルコードとともに説明する。複素数の変数を生成 実部と虚部を取得: real, imag属性 共役な複素数を取得: conjugate()メソッド 絶対...

複素数と虚数

虚数(imaginary number)・・・2乗したときに0未満の実数になる数

数学的には虚数単位「i」は、 i × i = -1

i, 3i, -7i みたいな表現になる。

複素数(complex number)・・・実数と虚数を組み合わせたもの

2 – 4i, 8 + 3i みたいな表現になる。

実際には存在しない複素数と虚数が必要な理由・・・仮説の計算に便利だったから。1つの数で座標を表すことに便利だったから。 i を掛けると、原点を中心に反時計回りに90度回転させるという意味になる。

虚数とは何か?複素数とは何か?が一気に分かりやすくなる記事|アタリマエ!
  勉強しだすと誰もが一度は「わけわからん!!」となる単元。虚数・複素数。   実在しない数をなんで

構文的に文が必要なのに、プログラム的には何もする必要がないときに使う構文は?

答え

pass

Pythonのpass文は何もしない文であり、文法上何かを書く必要があるがなにも実行することがないときに使う。

https://note.nkmk.me/python-pass-usage/

使いところは、新しくコードを書いているときに関数や条件の本体にプレースホルダとして置いておき、もっと抽象的なレベルについて考え続けることを助ける。

以下のプログラムを実行した際の出力結果は?

def fugafuga(title, content = 'default_content', number = 4):
    content = 'content'
    print(title, end=' ')
    print(content, end=' ')
    print(number)

fuugafuga(title = 'title_default', content = 'None', number = 5)

答え

title_default content 5

  1. キーワード引数と位置引数の混合型
  2. 関数fugafugaを定義(title, content = ‘default_content’, number = 4)は仮引数と実引数
  3. 関数の中のprintがある。
  4. 関数fugafugaを使用
    1. title(仮引数)=’title_default'(実引数), content(仮引数)=’None'(実引数), number(仮引数)=5(実引数)
    2. titleには、’title_default’が、contentには、関数定義でcontent = ‘content’なので contentが、numberには、5が入って出力される。

キーワード引数・・・引数を指定して関数を呼び出す際、値だけを指定するのではなく関数側で定義されている仮引数の名前を使って 仮引数の名前=値 の形で指定することができる。

位置引数

引数を指定して関数を呼び出す場合、呼び出し側で指定した引数の値が順番に関数側で引数のところに定義した変数に順番に代入されるもの。

def 関数名(仮引数1, 仮引数2):
    .....
    return

関数名(実引数1, 実引数2)

引数を記載した順番に従って引数の値が渡される。

実引数1 -> 仮引数1へ
実引数2 -> 仮引数2へ

キーワード引数

関数を呼び出す側でどの引数にどの値を渡すのかを 仮引数の名前=値 の形式で指定する。

def 関数名(仮引数1, 仮引数2):
    .....
    return

関数名(仮引数1=実引数1, 仮引数2=実引数2)
# 引数の記述順は任意となる。
# 関数名(仮引数2=実引数2, 仮引数1=実引数1) でもOK

位置引数とキーワード引数の混在パターン

混在パターンは、最初に位置引数を指定し、その後キーワード引数を記述する

def 関数名(仮引数1, 仮引数2, 仮引数3)
    .....
    return

関数名(実引数1, 仮引数2=実引数2, 仮引数3=実引数3)

# キーワード引数の後に仮引数名が指定されていない引数を利用した場合は、SyntaxError:positional argument follows keywords argumentになる。

def people(old, name, address):
    print('年齢は、' + str(old) + 'です。', end=' ')
    print('名前は、' + name + 'です。', end=' ')
    print('住所は、' + address + 'です。')
    
people(21, 'Takuro', 'Nagasaki')
people(address='Saga', old=32, name='Jack')
people(55, address='Tokyo', name='Maeda')

出力は、バッチリこの様になります。

年齢は、21です。 名前は、Takuroです。 住所は、Nagasakiです。
年齢は、32です。 名前は、Jackです。 住所は、Sagaです。
年齢は、55です。 名前は、Maedaです。 住所は、Tokyoです。

アクティベート状態から抜けるコマンドは?

答え

deactivate

venvなどの仮想環境の開始はactivate, 終了はdeactivate

以下の実行結果を得たい場合の、(A)および(B)に記述すべきコードは?

2017-09-11
from (A) import (B)
now = date.today()
print(now)

答え

(A)datetime (B)date

datetimeモジュール

日付や時刻を操作するためのクラスを提供している。

  • datetime.date・・・日付を取得
  • datetime.time・・・時刻を取得
  • datetime.datetime・・・日付と時刻を取得

datetimeオブジェクト

  • datetime.now()・・・現在の日時

dateオブジェクト

  • date.today()・・・今日の日付

以下のプログラムを実行した際の出力結果は?

d = 'dive\ninto\ncode\t'

print(len(d))

答え

15

  • len()関数 ・・・文字列(str)の長さ(文字数)を取得するときに使う。
    • 全角文字も半角文字も1文字(長さ1)として扱われる
    • エスケープシーケンスの場合は、1文字(\nで1文字、\tで1文字)として扱われる
Pythonで文字列の長さ(文字数)を取得 | note.nkmk.me
Pythonで文字列(str型オブジェクト)の長さ(文字数)を取得するには、リストなどの要素数を取得するのと同様に組み込み関数len()を使う。2. 組み込み関数 len() — Python 3.6.5 ドキュメント 以下の内容について説明する。len関数で文字列の長さ(文字数)を取得 全角・半角の扱い エスケープシ...

次のfor文を実行した場合の出力結果は?

titles={'title1': 'hoge1', 'title2': 'hoge2', 'title3': 'hoge3'}

print("出力結果: ")
for k,v in titles.items():
    print(v)

答え

出力結果: hoge1 hoge2 hoge3

  1. 辞書型で要素が titles に格納
  2. 出力結果: が出力
  3. ループ(for)
    1. titlesに対して、items()メソッドで、titlesの中のキーと対応する値を同時に取得
    2. それを k (key), v (value) に代入
    3. vの方を出力する。

ループのテクニック items()メソッド

ディクショナリにループをかけるとき、 items() メソッドを使うことで、キーとそれに対応した値を同時に得られる

参考資料

タイトルとURLをコピーしました