LoginSignup
1
3

Python3エンジニア認定基礎試験(1章~4章)

Last updated at Posted at 2023-05-17

現在Python3エンジニア認定基礎試験の勉強中です。
学習したことを以下に整理していきます。
(個人のメモ用でもあるので、説明を少し省いている箇所もあります。)

1章 食欲をそそってみようか

出題数 1/ 40問(2.5%)

1.1 Pythonの特徴

  • インタープリタ言語

    • コンパイル・リンクが不要
    • 対話モード
  • Pythonは高水準言語

    • 高水準言語:人間が理解しやすい言語
    • 低水準言語:機械語など
  • グルーピングにインデントを使用

    • インデント:字下げのこと
  • 動的型付け

    • 変数や引数の宣言が不要
    • C言語やJavaなどは静的型付け
  • モジュールとして再利用が可能

    • モジュール:Pythonのファイル(.py)のこと
  • 拡張可能

    • ビルトインの関数やモジュールなど
  • 主要OSで利用

    • Windows, Mac OS X, UNIXなど

2章 Pythonインタープリタの使い方

出題数 1/ 40問(2.5%)

2.1 インタープリタの起動・終了

起動

python

python -c コマンド
    例:python -c "print('hello')"

python -m モジュール名
    例:python -m test
     (python test.pyと同じ操作)

python -i スクリプトファイル名
    例:python -i script.py
※スクリプト実行後に対話モードへ

終了

Unixの場合:Ctrl+d
Windowsの場合:Ctrl+z
共通:quit()

2.2 引数を渡す

  • スクリプト起動時の引数

    • sysモジュールのargvに割り当てられる(sys.argv
    • import sysを実行して参照
  • コマンドライン引数

    • コマンド入力画面(コマンドライン)からプログラムを起動する際に指定する文字列のこと

2.3 対話モード

プライマリプロンプト:コマンド入力を促す(>>>
セカンダリプロンプト:継続行の入力を促す(...

2.4 エンコーディング

デフォルトはUTF-8
それ以外を使う場合は# coding: (エンコーディング方式)を1行目に記載
※shebangを書く場合は2行目

#!/usr/bin/env python3.9
# coding: shift_jis

3章 気楽な入門編

出題数 6/ 40問(15%)

3.1 コメントアウト

  • ハッシュ記号 # でコメントアウト

  • 文字列リテラル (引用符で囲まれた文字列) 内部はコメントアウトできない

3.2 数値計算

  • 四則演算
    >>> 1 + 3 * 4 / 2 -> 7.0

  • 剰余
    >>> 5 % 2 -> 1

  • 小数点以下切り捨て
    >>> 7 // 3 -> 2

  • 累乗
    >>> 2 ** 3 -> 8

  • 変数
    >>> a = 1
    >>> b = 2
    >>> a + b
    -> 3

  • 四捨五入
    >>> round(5.4) -> 5
    >>> round(5.5) -> 6
    >>> round(5.43, 1) -> 5.4

  • その他
    complex(複素数)、decimal(10進数)、fraction(分数)などもサポート

3.3 文字列

  • シングルクォーテーション、ダブルクォーテーション
    >>> 'hello' -> 'hello'
    >>> "hello" -> 'hello'
    >>> 'dosen\'t' -> "dosen't"
    >>> "dosen't" -> "dosen't"

  • エスケープシーケンス
    \n:改行
    \t:タブ

  • print()関数とraw文字列
    print()関数:全体を囲む引用符を除去、特殊文字として解釈
    raw文字列:特殊文字として解釈しない

>>> 'a\nb' -> 'a\nb'
>>> print(r'a\nb') -> a\nb
>>> print('a\nb') -> a
                                           b

  • トリプルクォーテーション
>>> '''
... a
... b
... c
... '''
'\na\nb\nc\n'
  • 長い文字列
>>> ('あいうえお'
... 'かきくけこさしすせそ')
'あいうえおかきくけこさしすせそ'
  • 長さ
    >>> word = 'abc'
    >>> len(word)
    -> 3

  • 連結、繰り返し
    >>> 'a' 'b' -> 'ab'
    >>> 'a' + 'b' -> 'ab'
    >>> 'a' * 3 -> 'aaa'

  • インデックス指定・スライス
    >>> word = 'hello'
    >>> word[1]
    -> 'e'
    >>> word[-1]
    -> 'o'
    ※インデックス指定は範囲外を指定するとエラー

>>> word[0:2]
-> 'he'
※スライスは範囲外をしてもエラーにならない

3.4 リスト

  • []で宣言
    >>> a = [1,2,3]
    >>> a
    -> [1, 2, 3]
    ※数字、文字列、辞書型のデータなどを並べられる

  • 文字列と同様に長さの取得が可能

  • ・文字列と同様に連結、繰り返しが可能

  • 文字列と同様にインデックス指定・スライスが可能

  • 改変可能(ミュータブル
    ※文字列は改変不可(イミュータブル

  • 要素の追加
    >>> a = [1,2,3]
    >>> a.append(4)
    >>> a
    -> [1, 2, 3, 4]

3.5 多重代入

  • 1行で記述可能
  • 複数の変数に値を代入する場合、代入によって変数の値が更新される影響を受けない

>>> a = 10
>>> a, b = 3, a + 1
>>> print(a, b)
-> 3 11

3.6 条件分岐

  • bool型(True、False)で判定
    数値:0 → False、1 → True
    シーケンス(リストや文字列):長さが0 → False、長さが0以外 → True
    比較演算子:><>=<===!=

3.7 print()関数

  • 引用符なしで表示
  • アイテムとアイテムの間はスペース
  • キーワード引数endで出力末尾の調整が可能
>>> print("abc", "def")
abc def

>>> for i in range(5):
...     print(i, end=",")
...
0,1,2,3,4,

4章 制御構造ツール

出題数 9/ 40問(22.5%)

4.1 if文

  • 記載方法
    if 条件:
    elif 条件:
    else:
>>> a = 1
>>> if a < 0:
...     print("負の数")
... elif a == 0:
...     print("0")
... else:
...     print("正の数")
...
正の数

4.2 for文

  • 記載方法
    for 変数 in 要素の集まり:
    ※入れ子構造により多重ループも可能
>>> wordlist = ["abc", "defg"]
>>> for word in wordlist:
...     print(word, len(word))
...
abc 3
defg 4

4.3 while文

  • 記載方法
    while 条件:
    ※条件が真(True)であれば実行
    ※入れ子構造により多重ループも可能
>>> i = 0
>>> while i < 5:
...     print(i)
...     i = i + 1
...
0
1
2
3
4

4.4 各種関数(range、list、enumerate)

  • range()関数
    range (終了値):
    range (開始値, 終了値):
    range (開始値, 終了値, ステップ数):

>>> range(3) -> range(0, 3)
>>> range(0, 3) -> range(0, 3)
>>> range(0, 20, 5) -> range(0, 20, 5)

  • list()関数
    要素の集まりをリスト形式に変換
    >>> list('abc') -> ['a', 'b', 'c']
    >>> list(range(3)) -> [0, 1, 2]
    >>> list(range(0, 20, 5)) -> [0, 5, 10, 15]

  • enumerate()関数
    for (変数),(変数) in enumerate(要素の集まり):

>>> wordlist = ["abcde", "fjh"]
>>> for i, item in enumerate(wordlist):
...     print(i, item)
...
0 abcde
1 fjh

以下のようにrangelenを組み合わせた場合も同様の結果になる

>>> wordlist = ["abcde", "fjh"]
>>> for i in range(len(wordlist)):
...     print(i, wordlist[i])
...
0 abcde
1 fjh

4.5 繰り返し処理

  • continue、break、else

continue:繰り返し処理をスキップ
break:繰り返し処理を中断
else:繰り返し処理終了後に実行

>>> for i in range(5):
...     if i == 3:
...         continue
...     print(i)
... else:
...     print("終了")
...
0
1
2
4
終了
>>> for i in range(5):
...     if i == 3:
...         break
...     print(i)
... else:
...     print("終了")
...
0
1
2
  • イテラブル、イテレータ
    イテラブル:繰り返し可能なオブジェクト
    イテレータ:イテレーションした状態を記憶するオブジェクト
    iter()でイテレータ化したものをnext()で取り出せる

4.6 pass文

  • 後で実装する場合などの仮置き場として使用
    ※実行しても何も起きない

  • while True:内で実行すると無限ループになる

>>> def abc():
...     pass
...

4.7 関数・引数

  • 関数はdefを使用

  • スコープ(変数の有効範囲)
    シンボル表を読み取る順はローカル → グローバル → ビルトイン
    ※他のスコープに代入する場合はglobal文やlocal文を使用

  • オブジェクトへの参照渡し ※追記:Pythonでは参照渡しは存在せず、値渡しのみ
    (以下は部分的には正しいが、参照渡しを勘違いして理解していることによる誤りとのこと)
    引数がミュータブルの場合
      関数内で値が変更されると呼び出し元の変数も影響を受ける
    引数がイミュータブルの場合
      関数内で値が変更されても呼び出し元の変数は影響を受けない

  • return文
    関数の外で値を使用できる(return文がないとNoneになる)
    関数の実行を終了させたいときにも使用可能

  • 引数のデフォルト値
    デフォルト値は、関数が定義された時点で関数を定義している側のスコープで評価
      例:関数が定義されている時点で定義されている変数の値を使用
    デフォルト値は1回のみ評価

  • 位置引数、キーワード引数
    位置引数:値の指定なし
    キーワード引数:=で値を指定
    ※位置引数、キーワード引数の順番
    ※キーワード引数の順序は問われない

  • 可変長引数
    *args:タプルで受け取る
    **kwargs:辞書で受け取る
    *args**kwargsの順番

  • 特殊引数
    位置専用引数:/より前
      ※使用例:APIの引数名変更により呼び出せなくなるのを防ぐ
           位置引数と任意個数を表すキーワード引数の衝突を防ぐ
    キーワード専用引数:*より後ろ

  • アンパック
    複数の要素を各変数に代入
    *:リストやタプルをアンパック
    **:辞書をアンパック

  • lambda(ラムダ)式
    名前を付ける程でもない小規模な関数に使用
    他の関数と組み合わせて使用する事が前提とされた定義式
       (sort、max、 map、 filterなど)

  • docstring(ドキュメンテーション文字列)
    定義の先頭にその関数の使い方を記述
    """で囲んで記載
    help()で呼び出し可能

  • 関数アノテーション
    引数アノテーションと返り値アノテーション
        def abc(x:str, y:int) -> str:
    挙動に変化はない
    .__annotations__で型の確認が可能

4.8 コーディング規約

  • PEP8:Pythonのスタイルガイド
    • インデントはスペース4つ
    • 79文字以下で折り返す
    • 他の行にコメントを書く
    • カンマの後ろはスペース
    • クラス名は頭文字を大文字に
    • 関数やメソッドは小文字の単語を_で繋ぐ
    • エンコーディングはUTF-8(Pythonのデフォルト)かASCIIを使用

※5章以降は別途記載予定・・・

エンジニアファーストの会社 株式会社CRE-COエンジニアリングサービス

1
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3