【Python】インデント

原則、スペース4つ。

1レベルインデントするごとに、スペースを4つ使いましょう。

はじめに — pep8-ja 1.0 ドキュメント

 

ただし、スペース4つ以外、例えばスペース2つや、タブでも動きます。

参考
はじめに — pep8-ja 1.0 ドキュメント
【Python 速習】30分でPythonプログラミングの基本を学ぶ 〜初心者向けの入門動画〜 - YouTube
空白?タブ?Pythonにおけるインデント論争に終止符を打つ | 侍エンジニアブログ
【空白は何個が正解?】pythonのインデントについて解説 | 侍エンジニアブログ
pythonのインデントはタブ派?スペース派? - Qiita

 

【Python】関数とメソッドの違い

まとめ

関数
何らかの処理をするもの [1,2]
単体で呼び出す [1,3]

メソッド
クラス内で定義された関数 [1,3]
変数やインスタンス、何らかの値に付与して呼び出す [1,3]

補足

以下は、関数
math.sqrt(*) (mathモジュールのsqrt関数) [1]
os.getcwd() (osモジュールのgetcwd関数) [3]

 

参照

【完全理解】関数・メソッドの違いを超絶わかりやすく解説します。 - YouTube
2 「関数」と「メソッド」の違い
関数とメソッドの違いとは(Pythonでわかりやすく説明) - ガンマソフト株式会社

 

【Python】リストの操作

Pythonのリスト操作の個人的なメモです。

リストの操作

a = [1,2,3]
 aはリスト

a.append(4)
 リストaの最後に4を追加する
a.extend([6,7])
 リストaの最後にリスト[6,7]を追加する
a.insert(0, 10)
 インデックス0にオブジェクト10を追加する
a.remove(10)
 リストaから10が消える
 もし10が複数ある場合は、一番最初の10だけが消える
a.pop(0)
 一番最初(要素番号0)のデータを取り出して削除する
 a.pop()はa.pop(-1)と同じ
a.clear()
 引数なし
a.copy()
 引数なし
 b = a.copy()
a.index(1)
 引数「1」の要素番号を返す
 もし1が複数ある場合は、一番最初の1の要素番号(インデックス)を返す
a.count(1)
 リストa内の、「1」の数を返す
a.sort()
 リストaのデータを順に並び変える。
  a.sort()は、a.sort(reverse=False)と同じ
 逆順に並び変える場合は、a.sort(reverse=True)

メソッド 引数            リストの変化
------------------------------------------------------------------------
append 数値(または文字)      変わる
extend  リスト            変わる
insert  要素番号、数値(または文字) 変わる
remove 数値(または文字)      変わる
pop    要素番号           変わる
clear  なし              変わる
copy  なし              変わらない
index  数値(または文字)      変わらない
count  数値(または文字)      変わらない
sort   順(昇順)か逆順(降順)   変わる

※引数は、オブジェクトの場合、要素番号の場合等あり。
 操作によって、リストが変わる場合と変わらない場合あり。

参考
リストの取り扱い - Python3エンジニア認定基礎試験 #23 - YouTube

 

【Python】for ~ else

Pythonのfor ~ else文
イテラブルを使い切ってループが終了する場合、else節が実行されます。
(breakが実行された場合は、イテラブルを使い切ってループが終了する場合にならないため、else節は実行されません)

コード1
for ~ elseのコードと実行結果

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # loop fell through without finding a factor
...         print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

出典:4. その他の制御フローツール — Python 3.10.4 ドキュメント

 

上記コードでは、「for x in range(2, n):」と「else:」がセットになっています。
nが2の時は、「list(range(2,2))」が「[]」となり、(イテラブルを使い切ってループが終了し、)breakが実行されないため、else節が実行されます。
nが3の時は、「3 % 2」が「1」となり(「0」ではなく)、breakが実行されないため、(イテラブルを使い切ってループが終了することになり、)else節が実行されます。
nが4の時は、「4 % 2」が「0」となり、breakが実行されるため、else節は実行されません。
nが5の時は、「5 % 2」、「5 % 3」、「5 % 4」が全て「0」にならず、breakが実行されないため、else節が実行されます。

 

コード2
上記、コード1と同じ動作をするコード(breakあり。for ~ elseなし(if ~ elseあり))。
for n in range(2, 10):
    if n == 2:
        print(n, 'is a prime number')
        continue
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n//x)
            break
        else:
            #break未実施の場合(=イテラブルを使い切ってループが終了する場合)
            if x == n-1:
                print(n, 'is a prime number')

実行結果(コード1と同じ)
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

コード3
上記、コード1と同じ動作をするコード(breakなし。for ~ elseあり)。
for n in range(2, 10):
    flg = 0
    for x in range(2, n):
        if n % x == 0 and flg == 0:
            print(n, 'equals', x, '*', n//x)
            flg = 1
    else:
        # イテラブルを使い切ってループが終了する場合
        if flg == 0:
            print(n, 'is a prime number')

実行結果(コード1と同じ)
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

イテラブルを使い切ってループが終了する場合にelse節が実行されるため、breakがなくてもfor ~ else文は動作可能でした。

 

「PythonZen & PEP 8 検定試験」を受けてみた

感想
「PythonZen & PEP 8 検定試験」を受けてみました。
すぐに何度でも繰り返しオンラインで受験できるため、何回か受験すれば合格可能です。

説明
PythonZenは、Pythonの心得です。
PEP 8は、コーディング規約です。
参考:TOP - PythonZen & PEP 8 検定試験

リンク
TOP - PythonZen & PEP 8 検定試験

 

【Python】ファイルへの書き込み

open、close
with、open。(closeは不要)

プログラム(その1)
f = open('test.txt', 'w')
for i in range(0,100):
    f.write(str(i) + '\n')
f.close()

実行結果
(test.txtの中身)
0
1
(省略)
98
99

プログラム(その2)
with open('test_b.txt', 'w') as f:
    for i in range(0,100):
        f.write(str(i) + '\n')

実行結果
その1と同じ

参考資料
「Python ゼロからはじめるプログラミング」サポートページ (tsukuba.ac.jp)
ゼロから始めるPython(7) - Qiita
例外処理 クリーンアップ動作の定義- Python3エンジニア認定基礎試験 #36 - YouTube

 

【資格】【AI】「G検定」合格記録

2021年11月に「G検定」(JDLA Deep Learning for GENERAL 2021#3)に合格しましたので記録を残してみたいと思います。

 

公式サイト
G検定とは - 一般社団法人日本ディープラーニング協会【公式】

 

試験について
試験時間はぎりぎりに近かったです。
見直しの時間をなんとか少しとることができました。
しかし、不明な回答全てを見直すまでの時間は余りませんでした。

あくまで個人の感想ですが、法律関係が多く出題されたように感じました。

試験中、カンペは非常に役に立ちました。
曖昧な点を確認したり、自分の回答を検証することができました。

試験中、参考書でも確認しました。

試験中、ネットでも少し検索しました。
ほとんどはカンペの検索で済みましたが、カバーしきれなかった点があり、最後の手段としてネットで検索しました。

勉強期間は3ヶ月くらい。試験と直接関係がないAIの勉強も含めると半年くらいかけて少しずつ勉強していました。

 

勉強方法
当初は基礎知識として試験に直接関係ないことから勉強しました。
図書館でAI関連の本で易しそうな本を一通り借りて読みました。

G検定受験を決意してからは、試験用の勉強をしました。
ネットで「G検定」、「G検定 合格」、「G検定 勉強」等のキーワードで検索して情報を収集しました。

G検定の参考書を買って勉強しました。
ネット上の模擬試験でも勉強しました。

カンペを作成しました。
自分で勉強しながらまとめた自分のカンペと、他の人のカンペをまとめたカンペ集と2つ作成しました。
自分自身の勉強になりましたし、試験中両方のカンペを検索することもしました。

 

勉強で使用した主な教材、試験対策情報

・AIの基礎知識

「はじめてのAI」Grow with Google | gacco

AI For Everyone (すべての人のためのAIリテラシー講座) | Coursera

『人工知能は人間を超えるか ディープラーニングの先にあるもの』 松尾 豊|KADOKAWA

『超AI入門 ディープラーニングはどこまで進化するのか』 | NHK出版


・試験対策

参考書
『徹底攻略ディープラーニングG検定ジェネラリスト問題集 第2版』 - インプレスブックス

『深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版』(一般社団法人日本ディープラーニング協会)|翔泳社

『最短突破 ディープラーニングG検定(ジェネラリスト)問題集』|技術評論社

DIVE INTO EXAMの「G検定」無料模擬試験
DIVER | DIVE INTO CODE(DIC)

【予想問題】G検定問題演習
ITエンジニア ノイ - YouTube

G検定試験対策情報
G検定|カオカオ