【第3話】AIdemyでPythonを学んでいく

アニメスターです。
今回もAidemyを取り組みましたので、これを報告したいと思います。

進捗結果と感想

進捗結果
3.1「組み込み関数とメソッド」
3.1.1 関数の基礎と組み込み関数
3.1.2 関数とメソッド
3.1.3 文字列型のメソッド(upper/count)
3.1.4 文字列型のメソッド(format)→print( )の中に.formatを入れる
3.1.5 リスト型のメソッド(index)
3.1.6 リスト型のメソッド(sort)→sortedとsortを混同
3.2「関数」
3.2.1 関数の作成
3.2.2 引数
3.2.3 複数の引数→printで処理できるのはstr型であると失念
3.2.4 引数の初期値→初期値を設定し忘れ。また、引数にintはおk。
3.2.5 return
3.2.6 関数のインポート
3.3「クラス」
3.3.1 オブジェクト
3.3.2 クラス(メンバとコンストラクタ)→「__init__(self,)」を失念。
3.3.3 クラス(メソッド)→「クラス変数名.クラス内関数名(引数)」を染み込ませる
3.4「Appendix」
3.4.1. 文字列のフォーマット指定
感想
難易度、正答率、所要時間
★★★、60%、2時間

今回は難しくなっていきましたね!前回に比べると、内容が一気に濃くなった感じです。
特に、クラスの部分を学んでいると、「あれ、引数ってなんだっけ」「クラスって型のことだよな?」など・・・
様々な点で疑問が生まれてきます。
このような疑問が生まれてしまうということは、100%理解できていないということですが、やはりステップを上げていくと、自分の伸びしろを知ることができます。

そのため、多少「こんなもんだろ!」で進んで、分からなくなれば戻ってくるというスタンスでやる姿勢が大切です!

Pythonの学習メモ

では、今回も書いていきますよー!

変数を拡張したら関数

関数とは、「処理を定義済みの変数」として捉える。
※変数については以前の参照

【第2話】AidemyでPythonを学んでいく

2018.03.18

なので、変数名を関数と同じにすると、その関数は上書きされてしまう。
例えば、print()は組み込み関数と呼ばれるが、ユーザーによって設定された処理をまとめた変数も関数と読ぶ。

また、関数は処理を定義されている変数なので、処理を実行する範囲に制限があることを抑えておく。特に組み込み関数には「処理が正確に実行するための型」が存在し、対応しない型で入力すると、処理が反映されない。


>script.py
a=”apple”
b=[1,2,3,4,5,6]

A=len(a)
print(A)
B=len(b)
print(B)

>コンソール
5
6

※len( )関数は、オブジェクトの長さ、要素の数を算出する組み込み関数。

注意
オブジェクト
変数における右辺にあるもの。
例でいうなら、len(a)は、aの右辺(apple)というオブジェクトの要素の数を算出している。

組み込み関数を拡張させたメソッド

組み込み関数は、処理を定義された変数だが、メソッドも同じ。違うのは、文法。
組み込み関数は「 ( ) 」の中で処理を行う(ライン)
が、メソッドは「 . 」の直後に処理を行う関数。

タイトル
>scrypt.py
A=[“3”,”1”,”2”,”5”,”4”] print(A)
A . append(“a”)
#appendのソートは「リスト型への要素の追加処理」
print(A)

#組み込み関数のsorted()
print(sorted(A))
print(A)
#ソートの.sort()
A. sort()
print(A)

>コンソール
3,1,2,5,4
3,1,2,5,4,a

1,2,3,4,5,a
3,1,2,5,4,a

1,2,3,4,5,a

注意
ソートのsortは、変数を更新していることに注目。
要素の整列を算出したいだけなら、組み込み関数のsortedを用いること。
補足
reverse( )は、sort関数とは逆の順番にする

様々なメソッド

・「 . upper ( ) 」
→変数を大文字に処理して返す。よってstr型に対応
・「 . count ( )
→数えたいオブジェクトを( )の中に入力し、変数の中にいくつ要素が含まれているかを処理して返す。
・「 . format ( ) 」
→ ( ) の中にある任意の値を、{ } の中に入れるメソッド。


>scrypt.py
print(“こんにちは、私の名前は{ } です。今日の天気は{ }ですね。”).format(“アニメスター”,”晴れ”)

>コンソール
私はアニメスターです。今日の天気は晴れですね。

他にも%を使っても似たようなことができる。

四則演算「%」のformat類似例
rain_percenrt=50.23432
print”今日の降水確率は%.2f” % rain_percent
→今日の降水確率は50.2%

%d : 整数で表示
%f : 小数で表示
%.2f : 小数第2位まで表示
%s : 文字列として表示

・「 index( ) 」
→目的のオブジェクトを( )の中に導入すると、対象の変数におけるインデックス番号を返す

タイトル
>scrypt.py
A = [ “a” ,”b” ,”c” ,”d” ,”e” ] print ( A.index(“a”))

>コンソール
0

関数を定義する「def 関数名 (引数):」

組み込み関数…【あらかじめ処理を定義され】、それに従って変数を処理するコマンド

作りこみ関数…【ユーザーが処理を決め】、それに従って変数を処理するコマンド
※作りこみ関数はアニメスターが言っているだけです。
作りこみ関数における処理は、インデント(Tabキー)を含んでいる処理の範囲で行う。

注意
同じ作りこみ関数において、引数打ち込むと、元の引数に対して、新たな引数が代入され、処理が行われる
※引数…関数に渡す値。変数における右辺を指すので、作りこみ関数では特に、代入する要素名を置くと分かりやすい。初期値も設定できるが、その初期値も上書きが可能で、柔軟性が高い。
メモ
作りこみ関数における処理が複雑になれば、見直すのが面倒になる。
そのため、関数処理を分かりやすくするためのコマンド「 return 」がある。

>scrypt.py
#引数が無い場合
def A():
print(A)
#上記のprintの前のインデントを忘れないこと
A()

#引数を設定する場合
def B (weather):
print(“今日の天気は”+ weather +”です”)
B(“晴れ”)
B(“曇り”)
B(“雨”)

#引数は複数設定できる
def C(weather , temperature ):
print(“今日の天気は”+weather+”で、気温は”+ str (temperature) + ”です”)
C(“晴れ”,”10度”)
C(“曇り”,”5度”)
C(“雨”,”0度”)

#引数のデフォルト設定と、上書き
def D ( weather = ”晴れ” , temperature = ”0” ):
print(“今日の天気は”+ weather + ”で、気温は”+ str ( temperature )+ ”度です”)
D( “雨” )
D( “曇り” , ”1” )

#関数処理における、処理範囲の定義
def E ( weather = ”晴れ” , temperature = ”0” ):
a = “今日の天気は”+ weather + ”で、気温は”+ str ( temperature )+ ”度です”
return a
print( E (“雷”) )

>コンソール
A

今日の天気は晴れです
今日の天気は曇りです
今日の天気は雨です

今日の天気は晴れで、気温は10度です
今日の天気は曇りで、気温は5度です
今日の天気は雨で、気温は0度です

今日の天気は雨で、気温は0度です
今日の天気は曇りで、気温は1度です

今日の天気は雷で、気温は0度です

呼び込み関数

今まで関数は「処理を定義された変数」として捉え、その種類は「組み込み」「作りこみ」の2種類であった。しかし大きな枠組みで見れば、「自分の中」で完結していた関数も、pythonでは「一般に公開されている関数」を呼び込み、それを使うことが出来る。
これをパッケージと呼び、パッケージの中の単位関数をモジュールと呼ぶ。

パッケージ…呼び込み関数の変数名
モジュール…パッケージに収納されている単位関数

呼び込み関数は「import モジュール名 」や、「from パッケージ名 import モジュール名」で呼び込み、これを扱うことが出来る

注意
呼び込み関数はPythonの呼び込み関数を管理するシステム「 PyPI 」があり、そこで公開されていれば、インストールが可能。
インストールするには、「 pip 」という管理ツールを経由する方法がメジャーであり、コマンドプロンプト上(Windowsでないなら、terminal上)で「pip install パッケージ名」でインストールが可能となる。以下の例では「pip」を使っていないが、これはAidemyの学習環境で、既にパッケージがインストールされているだけの話。

>scrypt.py
from time import time
now_time = time
print( now_time )

>コンソール
1522127584.6741524

オブジェクトという概念

今まで、関数の説明を「処理が定義された変数」として捉えてきたが、これはオブジェクト志向言語だからできる考え方。つまり、オブジェクト(scypt.pyに入る文字や数字の全て)は、値(メンバ)の、格納と処理(メソッド)を担うことができる。

しかし、オブジェクト毎の組み合わせがあることは、既に学んだ。

【第一話】PythonをAidemyで学んでいく

2018.03.15

既存のオブジェクト毎の組み合わせを「型」というが、オブジェクト毎に新たな構造を決める「設計図(クラス)」を作成することができ、型も広義で見れば、クラスである。
つまり、listオブジェクトは、listクラスによる設計による処理を行っている、ということ。

従って、設計図(クラス)を定義して、それぞれのクラスに対する処理(コンストラクタ。広義でのメソッド)を行っていく。要は、変数に対する複雑な処理定義をクラスというクラスの中では、メンバを「 self. 変数名」として扱う。

補足
コンストラクタ…クラスに対するメソッドのこと。
「 _ init _ 」で、クラスにおける処理を決めることができる。
以下の例では、関数化させた「MyProduct」の複数の引数に対する処理を定義している。

>script.py
class A:
def __init__(self,weather,temperature,rainy_percent):
self.weather=weather
self.temperature=temperature
self.rainy_percent=rainy_percent
today=A(“晴れ”,50,25)
print(today.weather)

ちなみに、C言語などは志向がことなっているため、値の格納は変数、値の処理は関数と明確に分けている。
また、「 __init__ 」の引数には(self)を入れること

次回の課題

少しクラスの部分の理解が甘いと実感しました。
どうやら、引数に対する理解が未熟のように感じましたので、引数からやり直して理解を深めたいと思います。

【第2話】AidemyでPythonを学んでいく

2018.03.18

【第一話】PythonをAidemyで学んでいく

2018.03.15

コメントを残す

ABOUTこの記事をかいた人

内定辞退した2018卒の大学生投資家。 「お金だけのための就職」が嫌でした。 「好きで生きるため」情報発信。 ***月間読書量3~8冊を頼りに経済自由を*** ***米株、節約術、統計学やアニメ好き***