平凡エンジニアからの出発

一に努力、二に理想、三に積小為大。

【Android講座】第6回 まとめ



Lesson 6で学ぶこと

今までのLessonをMainActivityで表示できるようにする。

Lesson 6 Step by Step実装

基本の流れ

  1. 画面作成(Activityやlayoutの追加)
  2. 画面調節(パーツの追加や位置調節)
  3. イベント処理(ボタン押下された等)
  4. 画面更新(表示する、消去する等)

code

github.com

【Android講座】第5回 Dialogの作成



Lesson 4で学ぶこと

DialogFragmentを実装してDialogの表示をする。

f:id:atuyan39:20210612194632p:plain:w300

Lesson 4 Step by Step実装

基本の流れ

  1. 画面作成(Activityやlayoutの追加)
  2. 画面調節(パーツの追加や位置調節)
  3. イベント処理(ボタン押下された等)
  4. 画面更新(表示する、消去する等)

code

Lesson 5 · atuyan39/AndroidLesson@fe5bf66 · GitHub

【E資格対策】Python Numpy入門

Numpy

import numpy as np

array = np.array([[1,2,3],[4,5,6]])
print(array)
# [[1 2 3]
#  [4 5 6]]
list  = array.tolist()
print(list)
# [[1, 2, 3], [4, 5, 6]]

# zeros
array0 = np.zeros((2,5))
print(array0)
# [[0. 0. 0. 0. 0.]
#  [0. 0. 0. 0. 0.]]

# ones
array1 = np.ones((2,5))
print(array1)
# [[1. 1. 1. 1. 1.]
#  [1. 1. 1. 1. 1.]]

# aragne
array = np.arange(50) # 50個(0~49)を格納する

# Arrayの要素の型をdtypeを指定する
array_int = np.array([1,2,3], dtype="int32")
print(array_int.dtype) # int32

# 型変換(0,1をFalse,Trueに変えたりできる)
array = np.array([0,0,1], dtype="int")
print(array) # [0 0 1]
array = array.astype("bool")
print(array) # [False False  True]

要素

array = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(array[0]) # [1 2 3]
print(array[0][0]) # 1
print(array[:,:]) # スライス参照
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

形状

array = np.array([[1,2,3],[4,5,6]])
print(array.shape) # (2, 3) 2行3列
print(array.ndim)  # 2次元
print(array.reshape((3,2))) # 3行2列
print(array.reshape((3, -1))) # -1を指定すると、自動でリシェイプしてくれる

演算

a = np.array([[1,2], [3,4]])
b = np.array([[1,3], [5,7]])
print(a + b) # 加算
# [[ 2  5]
#  [ 8 11]]
print(a + 1) # ブロードキャスト
# [[2 3]
#  [4 5]]

# ベクトルの内積
print(np.dot(a,b))
# [[11 17]
#  [23 37]]

Numpy100本ノック!!

github.com

【E資格対策】Python クラス講座

クラス講座

クラスとインスタンス

class Person:
    pass # 何もしない

# インスタンス作成
Alice = Person()

# インスタンス変数
Alice.name = "Alice"
Alice.age = 18

# インスタンスメソッド
class Person2:
    def introduce(self): # selfは、お決まりの形
        print(self.name)
        print(self.age)

Bob = person2()
Bob.name = "Bob"
Bob.age = 29
Bob.introduce()

# 特殊なメソッド
class Person3:
    def __init__(self):
        # インスタンス作成時に呼ばれる。初期化で使う。
    def __call__(self):
        # メソッド名の記載が不要で呼べるメソッド。
        # 例)
        #   Calor = Person3
        #   Calor() # __call__内の処理が呼ばれる 

他のpythonファイルのクラス読み込み

from sample import SampleClass # from ファイル名(sample.py) import クラス名

継承・オーバーライド

# 親クラス
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age 

# 子クラス
class Student(Person):
    def __init__(self, name, age, school):
        super().__init__(name, age) # オーバーライド
        self.school = school

    def introduce(self):
        print(f"{self.name}は、{self.age}歳で、{self.school}です")

インスタントメソッド

  • __init__メソッド:インスタンス変数の初期化
  • __str__メソッド :文字列のように振る舞う
  • __iter__メソッド:イテレータとのように振る舞う
  • __call__メソッド:関数のように振る舞う
  • __len__メソッド:シーケンスのように振る舞う
  • __getitem__メソッド:リストのように振る舞う
  • __setitem__メソッド:辞書のように振る舞う
  • __add__メソッドなど:数値のように振る舞う
  • __eq__メソッドなど:比較ができるように振る舞う

【E資格対策】Python 入門・中級まとめ

入門・中級

変数と型

  • 整数(int)  例: 0, 1, 100, -10
  • 少数(float)  例: 1.0, 1.34, -0.01, 1e5
  • 文字列(str)  例: "HI", "a", "31", ""
  • 真理値(bool)  例: True, False
x = ""
type(x) # 変数xの型を取得

演算

比較演算子==, !=, <, >, <=, >=, is, <>
代入演算子(=, +=, -=, *=, /=, %=, **=, //=, &=, |=, ^=, <<=, >>=)
ビット演算子(~, &, |, ^, <<, >>)
ブール演算子(and, or, not)

コメント

# コメント

if文

# if, elif, elseの後に、判定とコロンを。条件式は、インデントを下げる。
if i == 1:
    print(i)
elif i == 2:
    print(i)
else:
    print(i)

# 判定:==, !=, <, >, and, or
if a > b and a > c:
if a < b or a < b:

# リスト
list = ["A", "B", "C"]
search = "A"
if search in list:
    print(search, "はあるよ")
else:
    print(search, "はないよ")

# 文字列
tmp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
search = "A"
if search in tmp:
    # (ry

# 辞書
dict = {'A':'あ', 'B':'い', 'C':'う'} #おさらい{key:value}
search = "A"
if search in dict:
    # Valueが表示される

# ※if文の判定式にリスト、文字列、辞書の空を渡すと、Falseを返す。

for文

for i in range(5):
  # 繰り返す

for i in range(10, 20, 2):
  # iは、10から始まり、ループ事に2変化し、20に達すると終了する
  # 20は表示されない 
  print(i)

# リストはそのまま渡せる(range不要)、continueとbreak
list = ["A", "B", "C"]
for i in list:
    if i == "B":
        continue
    elif i == "C":
        break

リスト

# リスト作成
list = ["A", "B", "C"]
# リストへの追加
list.append("D")
# スライス(リスト名[開始 : 終了 : 変化])
list[0:2:1]  # 0番目、1番目のリストを取得
list[2:0:-1] # 2番目、1番目のリストを取得
# 多次元化
list = [["東京", "東京"], ["北海道", "札幌"]]
list[1][1] # "札幌"

# ★リスト内包表記
# 構文 : list1 = [式 for 変数 in イテラブルオブジェクト]
list1 = [i ** 2 for i in range(5)] # [0, 1, 4, 9, 16]
# 構文 : list2 = [式 for 変数 in イテラブルオブジェクト if 条件式]
list2 = [i ** 3 for i in range(5) if i % 2 == 0] # [0, 8, 64]

# enumerate:列挙する
list = ["ando","baba","caca"]
for index,value in enumerate(list): # indexは0から振られる。
    print(value + "さんの出席番号は"+ str(index+1) + "です。")

辞書

# ' ', " "(どちらでも可)、{}が辞書、[]はリスト。
dict = {'A':'あ', 'B':'い', 'C':'う'} # { key : value }
# 要素へのアクセス
dict["A"] # 「あ」を取得
# keyは検索できる。valueは検索できない。

# 辞書への追加方法
dict["key"] = "value"

fruits = {}
fruits["A"] = "apple"
fruits["B"] = "banana"
fruits["C"] = "c"

# ないkeyにアクセスするError
# KeyError Traceback (most recent call last)
# KeyError: '文学'

関数

def func():
    # 処理

組み込み関数

print() # 標準出力
input() # 入力

int(a)   # intへキャスト(小数点以下、切り捨て) 
float(b) # floatへキャスト
str(c)   # Stringへキャスト

round(num) # 四捨五入

len() # 文字列、リスト数、辞書数を返す
min() # 数値なら最小値、アルファベットならAを最小値として返す
max() # 最大値

CSVファイルの入出力

# import文
import csv

# 対象ファイルの選択。encodingは必須(windowsだと)
with open('XXXXX.csv', encoding="utf-8_sig") as f:
    # データの取得、読み込み
    load = csv.reader(f)

標準ライブラリ

# ランダム
import random
r1 = random.random()       # 0<=x<1の実数
r2 = random.randint(0,5)   # 0<=x<5の整数
r3 = random.uniform(10,15) # 10<=x<15の実数

# 時間
import time

now = time.time()

【E資格対策】Python 中級 1

( ..)φメモメモ

何のためにE資格取得がんばる?

AIを深く理解していくための基礎力として、E資格を学ぶ。
資格を取った先、仕事で活かした先、研究をした先に、
AIに出来ること、そして、限界が見えてくるはず。

python 中級

for文(2)~リスト(4)

for文

Factorial : 階乗
def factorial(x):
    sum = 1
    for i in range(x, 0, -1):
        if i <= 0:
            break
        else:
            sum = sum * i
    return sum

if文

うるう年
def leap_year(x):
    if x % 400 == 0:
        # i) 400で割り切れる場合は、うるう年
        leap = True
    elif x % 100 == 0:
        # ii) 400で割り切れない、かつ、100で割り切れる場合は、平年
        leap = False
    else:
        if x % 4 == 0:
        # i) ii) とも満たさない、かつ、4で割り切れる場合は、うるう年
            leap = True
        else:
            leap = False

    if leap:
        print(str(x) + "年はうるう年")
    else:
        print(str(x) + "年はうるう年ではない")
不思議なifの判定

if文に0が入ると、Falseの判定になる。
ちなみに、0.0だと、float型で、Falseの判定になる。

num = 0

if num:
    print("num = " + str(num) + ", type = " + str(type(num)) + " True")
else:
    print("num = " + str(num) + ", type = " + str(type(num)) + " False")

# 出力 ⇒ num = 0, type = <class 'int'> False

リスト

リスト内包表記

qiita.com

enumerate関数

簡単にリストを作成できるよ

構文 : [式 for 変数 in イテラブルオブジェクト]

# リスト内包表記
list = [i + 1 for i in range(5)]
# コードで書く
def create_list():
    list = []
    for i in range(5):
        list.append(i+1)

判定を含むの構文 : [式 for 変数 in イテラブルオブジェクト (if文)]

FizzBuzzの短縮(↑のQiitaより)

["fizzbuzz" if i%15==0 else "fizz" if i%3==0 else "buzz"
 if i%5==0 else i for i in range(1,16)]

※注意(Javaが染み込んでいる~

list.len()   # NG
len(list)    # OK

意外と型変換が必要な感じ。
動的型付けだから、わかりづらい印象を受ける。慣れか。

emumerate:列挙する

# 構文
for 変数名1(インデックス),変数名2(値) in enumerate(イテラブルオブジェクト):
    # 処理