通算25日目_2024/09/08
学習目標
10月末までに合格したい
手順
①Python基礎学習
②基礎試験学習
③基礎試験問題集
④模擬試験
⑤受験
参考↓
Python入門完全攻略
はじめに
Pythonとは?
Python:ライブラリが豊富なスクリプト言語
ライブラリ:便利な機能のこと
例)料理器具(フライパン、やかん)
Python(AI専用、WEB開発専用)
→目的に応じた様々なツールがある
スクリプト言語:比較的簡単に記述・実行できるプログラミング言語
→PHP、Rubyなどもそう
環境構築
環境構築:Pythonを使える状態にすること
例)iPhoneでLINEを使いたいならどうする?
A.インストールする。
→これと同じことをPythonでも行う
Google Colabを使おう!
・メリット:環境構築が楽
・デメリット:ネット環境必須、実務で使わない
↓
目的:Pythonに慣れること。
慣れてから本格的に環境構築すればOK
Google Colab
構築方法
①Googleドライブを開く
②新規フォルダ作成
③「新規」→「その他」→「Google Colaboratory」
▪️作成されたフォルダ = notebookと呼ぶ
▪️「コード」:コードを記載できるセルの追加
ショートカット:ctrl M → ctrl B
▪️「セルの削除」:ctrl M → ctrl D
▪️「コードの実行」:shift enter
▪️「テキスト」:メモ欄追加
ショートカット:ctrl M → ctrl M
コードのつもりでテキスト担ってしまった場合のショートカット:ctrl M → ctrl Y
数値と演算
5 + 2
→7
5 - 2
→3
5 * 2
→10
5 ** 2
→25(5の2乗)
5 / 2
→2.5
5 // 2
→2(小数点なし)
5 % 2
→1(余り)
変数と出力
変数
コメントアウト
出力
26日目_2024/09/09
演習1(数値と演算、変数と出力)
文字列
### シングルクォート、ダブルクォート
どっち使ってもOK。
現場に合わせる。
変数内の文字列の出力も可能
文字列とインデックス
▪️文字列と数値の大きな違い:「文字列はインデックスを持つ点」
▪️インデックス:番号のこと
→0から始まる(下記画像ならインデックス0がPになる)
インデックス番号に対応する文字を取得する方法
○[インデックス番号]
↓例
連続するインデックス番号の文字を取得
なぜ[0:2]ではなく、[0:3]なのか?
○[開始インデックス:終了インデックス+1]
だから。
覚え方
インデックス番号は「数字の少し前」と覚えると理解しやすい。
下記画像なら0と3の間にあるから「Pyt」になる。
▪️スライス = コロンを使って要素をまとめて取得する方法のこと。
インデックス番号の省略
○[0:3] = ○[:3]
逆に、
○[3:]
にした場合、3以降を取得するので「Pyt」以降の「h」から最後までを取得する。
文字列の最後を取得する方法
# 文字列の最後を取得する方法
変数[-1]
# 文字列の最後から2番目を取得する方法
変数[-2]
文字列の長さを取得する方法
# 文字列の長さを取得する方法
a = ○○
len(a)
文字列の演算
使うメリット
27日目_2024/09/10
文字列とメソッド
文字列'Python'のnが何番目か調べたい
# 文字列'Python'のnが何番目か調べたい
index()
指定した連結した文字列が何番目にあるか調べたい
文字列'a'が存在するか調べたい
# 文字列'a'が存在するか調べたい
find()
存在する場合:index()のように、何番目にあるか教えてくれる
存在しない場合:-1
27日目_2024/09/11
文字列とメソッド (続き)
文字列の置換
replace(置き換える対象, 置き換後の値)
文字列を削除したい場合
# 置き換え後を「空白にする」
replace(置き換える対象, '')
# 複数削除したい場合(「.」で繋げる)
replace(置き換える対象, '').replace(置き換える対象, '').
bool値と比較演算子
bool値 = 比較演算子を使った時に出てくるTrueやFalseのこと
→TrueかFalseしかない
指定した条件の文字列が存在するか判別する方法 = in
# 「文字列」のbool値の取得方法
「in」を使う
条件元 in 条件式
28日目_2024/09/12
bool値と比較演算子(続き)
指定した条件の文字列がしないことを判別する方法 = not in
# 「文字列」が存在しないことを判別する方法
「not in」を使う
条件元 not in 条件式
「==」と「in」の否定系について
演習2
データ型とキャスト
データ型
# データ型を調べる方法
type()
29日目_2024/09/13
キャスト(型変換)
str():文字列型にする
int():数値型にする
型変換ができない場合
int型 → float型
30日目_2024/09/14
演習3
### ポイント
「,」「円」はint型に変換できないためreplaceで削除(空白と置き換える)
# 変数内にあるaをbに置き換える
変数.replace('a', 'b')
「変数内にあるaをbに置き換える」
↓
# 削除で使うときは
# 変数内にあるaを削除する
変数.replace('a', '')
None
制御構文
if文などのことを制御構文という
条件分岐(if)
if文にはインデントが重要
### xもyも、0より大きいif文を作るには?(and)
# 条件を繋げるときはandを使う
# 下記の場合条件aと条件bが問題ない時のみ処理される
# 片方が条件に合致しない場合は処理が行われない
if 条件a and 条件b:
print()
# 片方のみで処理されるようにしたい場合は「or」を使う
if 条件a or 条件b:
print()
演習4
セイウチ演算子
Python3.8以降に登場した新しい文法
# 通常2行目の出力はprint(len(変数名))するが、見辛くなる。
# セイウチ演算子を使用するとコードがすっきりする。
# 演算子セイウチ公式
(n := len(変数名))
print(n)
ループ処理(for)
# for文の公式
for for専用変数名 in 変数or数値:
処理
連続した数値を取得する方法(range())
# range()関数
# 0からスタートして、()内に記載した数字-1までのインデックスを連続した数値を要素として所有する
range(数値)
# range()で0からではなく、1からスタートして、4まで保持したい場合
# インデックスでも基本、「後ろの数字指定は-1される」と覚えると良い
range(1, 5)
# range()で0からではなく、1からスタートして、4まで保持し、一つ飛ばししながら保持したい場合
# 3つ目の「2」はスキップする幅を選べる
range(1, 5, 2)
31日目_2024/09/15
for文で文字を1文字ずつ取り出す方法
# 復習:文字列の長さを取得する方法
a = ○○
len(a)
for文で文字列を1文字ずつ取り出すなら、次の簡単な方法が一般的
Pythonは、以下のように文字列の長さを指定しなくても、
変数をfor文にぶち込めば1文字ずつ取り出すことができる。(インデックスの数を指定しない)
# 優先順位
①変数をfor文にぶち込む(インデックスの数を指定しない)
②①が無理な場合、rangeなどで文字数を指定する(インデックスの数を指定する)
ループ処理(While)
While:同じ処理を繰り返したいときに使う。
例)1+1を100回など
↓ 例
whileの注意点(無限ループ)
条件を満たしている間は「無限」にループ処理が行われてしまう = 無限ループ
必ずループを抜ける「条件」を記載すること
以下で言うと、i < 100のこと
↓ 例
ループ処理を途中で中断する方法(break)
条件をTrueでもループを行える
注意点:条件Trueのみだと無限ループになるため、必ず抜け出すための条件を入れる。
↓ 例
ループ処理の途中をスキップさセル方法(contnue)
# 処理をスキップさせる
contnue
ループ処理¥で3の倍数の時スキップする方法
パターンマッチング
Python3.10以降でできる構文
if文と変わらない。
条件が多くなった時にif文だと「==」が多くなるためmatchの方がスマートなコードになる。
# matchの公式
変数
match 変数:
case 条件:
処理内容
case 条件:
処理内容
case _:
処理内容
データ構造
1つの変数で複数の値を使いたい
↓
そんな時にもっとも使われるのが「リスト」
リスト
# 使い方
変数 = []
リストを出力する方法
# リストを出力する方法
print(リスト名[インデックス番号])
リスト内を複数取り出す方法(スライス)
スライスを使う!
▪️スライス = コロンを使って要素をまとめて取得する方法のこと。
# インデックス番号1と2を取り出す方法
# こういった数字では後ろの数字はインデックス番号より1大きくする
リスト名[0:2]
リスト内を要素を1つずつ取り出す方法(forループ)
リスト内を要素を1つずつ取り出す & リストのインデックス番号も同時に出力する方法(forループ)
# 方法
変数名 = [リスト]
for インデックス番号を入れる変数, リストの値を入れる変数 in enumerate(リスト名):
print(インデックス番号を入れる変数, リストの値を入れる変数)
32日目_2024/09/16
リストに特定の値が入っているか確認する方法
「in」を使う
リストの値を置き換える方法
リスト名[インデックス番号] = 置き換える文字列や数値など
リストの演算
演習5
リストのメソッド
要素の追加(append)
リスト.append(追加したい要素)
appendはfpor文や空リストとよく使われる
リストの拡張(extend)
リスト1.extend(リスト2)
↓ 例
↓ 足し合わせているのではなく、num1を拡張している
↓ extendsを使ったことで、num1はずっと1~10の値を持つリストになる(上書き)
extendsで上書きせずに元のリストの値を残しておきたい場合(演算を使う)
リストから要素を削除する方法(remove)
# 使い方
リスト名 = []
リスト名.remove(該当要素)
リスト内包表記
内包表記のメリット
・コードが簡潔になる
・処理が高速化する(%%timeit)
%%timeitを先頭に追記することで処理速度がわかる
33日目_2024/09/17
演習6
リスト内包表記でif文を使う時の書き方
numbers = [リストの値]
list = [i for i in numbers if 条件文]
# リスト内包表記のfor文の後ろに記載する
参考サイト
34日目_2024/09/18
タプル(tuple)
タプルとリストの違い
要素の追加/変更/削除が...
▪️リスト:できる
▪️タプル:できない
↓ 変更しようと試みた場合、以下のようにエラーになる
タプルを使うタイミング
①中身の要素を変更したくない時
②変更する予定がない時
↓ 例えば、「ジャンケンのグー,チョキ,パー」を指定するときはタプルを使う
理由は変更しないから
○:hands = ('グー', 'チョキ', 'パー')
×:hands = ['グー', 'チョキ', 'パー']
タプルを使った方が良い理由
# メモリの消費量を可視化できる
__size__()
タプルを取り出す方法
インデックスを指定せずに取り出す方法(unpack)
人まとまりのリストやタプルを解凍するからアンパックという。
複数取り出す時はアンパックを使った方が、変数名でわかりやすくなる
↓ 例
辞書(dict)
タプル、リストと辞書の違い
リスト、タプル:インデックス番号で管理
辞書:キーで値を管理
辞書名 = {key:value}
辞書のvalueを取り出す方法
辞書名[key]
辞書のvalueを更新する方法
辞書名[key] = 更新する値
辞書に新しいvalueを追加する方法
辞書名[追加するkey] = 追加するvalue
辞書に新しいvalueを追加する方法(リストの場合)
リストの場合は、存在しないインデックス番号を追加するとエラーになる。
append()などで追加する。
辞書のメソッド
辞書の「すべてのkey」を取得する方法
辞書名.keys()
dict_keysと、keyのfor文
dict_keys = 辞書のkeyがすべて格納されたリストのようなもの
35日目_2024/09/19
「すべての」valueを取得する方法
辞書名.values()
valueのfor文
keyとvalueをそれぞれ取り出す方法のまとめ
x = {}
# keyを取り出す
x.keys()
# valueを取り出す
x.values()
keyとvalueを両方取り出す方法(items())
x = {}
for key, value in x.items():
print(key, value)
items()の解説
items()
上記の中身はkeyとvalueで1セットのタプルになっている。
keyとvalueが3つずつならば3個のタプルがあるということ。
タプルのアンパックを使うことで、for文の変数を2個使えるようになっている。
valueの取得(get)
x = {key: vakue...}
x.get()
変数名[key名]と、getメソッドの違い
変数名[key名]と、get()は、存在しないkeyを指定した時の処理内容が異なる
変数名[key名]:エラー
get():None
getメソッドのメリット
①辞書から要素を取得した後、何らかの処理を継続させたい時
→エラーではなく、Noneで処理して他の処理を引き続き行う
②あえて条件分岐する必要がなくなる
↓ 条件分岐しなくても、get()だけで処理を行える
辞書の更新(update())
x = {}
x2 = {}
x.update(x2)
辞書に要素を追加したい場合
辞書の要素を削除(pop())
x = {}
x.pop(key名)
popメソッドは本来keyを削除するのではなく、valueを取り出すメソッドである
タイトル通りで、この際に擬似的に削除されている
辞書の要素を削除(del)
x = {}
del x[key名]
popメソッド、delどちらでもOK
関数
関数とは? = 簡単に言えばテンプレート機能
例えば
5教科の平均点数を知りたい時、5回の同じ処理を書くのは面倒
そんな時に、平均を求められる関数を作っておけば楽
組み込み関数
組み込み関数 = Pythonがあらかじめ用意している関数
今まで習ったものの中では、
print()
type()
len() # 長さを測る
他によく使う関数は、
sum() # 合計
min() # 最初値
max() # 最大値
演習7
平均を求めるための関数は存在しない
# 平均の求め方
x = []
avg = sum(x) / len(x)
参考
ランタイムを再起動
↓ sum関数などでどうしてもエラーが治らない時は、ランタイムを再起動してみる
関数の定義
def 関数名():
処理内容
関数名()
引数
戻り値(return)
演習8
引数は複数でもOK
キーワード引数
def 関数名(a, b):
処理内容
# 順番が逆でも問題なし
関数名(b = bb, a = aa)
デフォルト引数
デフォルト引数 = 関数の引数で、あらかじめ初期値を設定できる機能
def 関数名(a, b = bb):
処理内容
関数名(a)
36日目_2024/09/20
無名関数(lambda式)
# 通常の関数
def 関数名(引数):
return 戻り値
↓ 書き方が変わっただけ
# lambda式
lambda 引数: 戻り値
関数をつけるまでもないけど簡単な平均計算などをまとめておきたい時などに使う。
無名関数(lambda式if文)
# 通常の関数
def 関数名(引数):
if文:
return 戻り値
↓ 書き方が変わっただけ
# lambda式
関数名 = lambda 引数: 引数 if文: 戻り値
プログラミング学習はさくさく進めることが大切
後になってわかることも多々ある。
例外処理
例外処理 = 想定しない処理が行われた時に、どのように対処するかあらかじめ決めておける機能
もっと簡単にいうと「想定外」に対応する術
↓
例:上記のエラーを例外処理で対応する
# エラーが発生しそうな場所に
try:
エラーが発生しそうなコード
except:
エラーが発生した場合の例外処理
もしtry:で想定通りの実装ができた場合はexcept:は実行されない
例外処理でエラー内容を確認する方法(as e)
# エラーが発生しそうな場所に
try:
エラーが発生しそうなコード
except as e:
print(e)
エラーが発生した場合の例外処理
もしtry:で想定通りの実装ができた場合はexcept:は実行されない
例外処理でエラーが発生しなかった場合は、elseに処理を書く方がスマート
# エラーが発生しそうな場所に
try:
エラーが発生しそうなコード
except as e:
print(e)
エラーが発生した場合の例外処理
もしtry:で想定通りの実装ができた場合はexcept:は実行されない
else:
エラー出なかった際の処理
例外処理でエラーの有無に関わらず処理を行いたいものがある場合(finally)
# エラーが発生しそうな場所に
try:
エラーが発生しそうなコード
except as e:
print(e)
エラーが発生した場合の例外処理
もしtry:で想定通りの実装ができた場合はexcept:は実行されない
else:
エラー出なかった際の処理
finally:
絶対に行いたい処理
クラス
type() = 変数の型を調べる
調べた時に、と出てくる、classが今回学習するクラスのこと
↓ 例
どんなクラス、メソッドを使っているか調べる方法(help())
help()
object = 数値や文字列・リストやタプルなどのデータ型を抽象化した概念
class = オブジェクトを作るための機能
クラスの定義
初めから定義されているクラス = int str list function
自分で作る方法は?
↓
# クラスの定義
class クラス名(引数):
def メソッド名(self):
処理内容
# インスタンス化
変数 = クラス名()
# インスタンスメソッドの呼び出し
変数.メソッド名()
リストもクラスも同じ使い方
クラスでの引数の使い方
class クラス名(引数):
def メソッド名(self, 引数名):
処理内容
# インスタンス化
変数 = クラス名()
# インスタンスメソッドの呼び出し
変数.メソッド名(引数)
37日目_2024/09/21
インスタンスの初期化
__init__
を使うと、インスタンスを生成した時に自動で実行される処理を定義できる
初期化の段階で引数を送る
__init__を使う時のポイント
①メソッド内で変数にselfをつけること
②インスタンス生成時に値を渡すこと
selfとは?
クラスで今現在覚えておくべきポイント
クラスの継承
class 親クラス(self):
# クラスの継承
class 子クラス(親クラス):
def __init__(self):
# メソッドの継承
super.__init__():
ライブラリ
ライブラリのインポート
ライブラリ = 数行のコードで便利な機能を使える
import ライブラリ名
38日目_2024/09/22
朝9:00〜23:55での勤務で学習できず。
休憩時間0だった。
頭の中で学習したことを復習はした。
39日目_2024/09/23
インポートの省略(as)
import ライブラリ名 as 省略名
40日目_2024/09/24
インポートの省略(慣習例)
ライブラリのインストール
Seabornは外部ライブラリ
本来は自分でインストールする必要がある。
Googleコラボは最初からよく使われているライブラリが入っているために使用ができた。
自分でライブラリをインストールするためには?
!pip install ライブラリ名