murnana's diary

なんとなくつづっていく

「ゼロから作るDeep Leaning」を読んでいく - Python基本編

murnana.hatenablog.comの続き。 ページ的には 1.3.1 算術計算 ~ 1.4.2 クラスまで


算術計算

四則演算は他の言語とほとんど変わらない。
べき乗があることにはびっくり。

>>> 3 ** 2
9

ゼロで割ってみる

>>> 1/0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

ZeroDivisionErrorってかっこいい…!

剰余演算は?

>>> 10%3
1

ありますね。

Python入門 - 演算子によると、切り捨て除算というのもあるらしい。

>>> 10 // 3
3
>>> 10 / 3
3.3333333333333335

小数点要らないというときに便利そう(速度は知らぬ)


データ型と変数

データ型はtype()で調べられる。詳しくはPython入門 - 数値・文字列・型を見たほうが良さそう。(他もググった) 注意すべきは以下の通り。

  • 0oで8進数、0xで16進数、0bで2進数
  • int型の最大値はシステムによって違う(らしい)
  • バージョン3以降、long型がなくなった
  • 文字列には8ビットのやつ(ASCII?)とUnicodeのやつがある(詳しくは良くわからない…使ってみないと…)
  • 動的型言語なので、変数型の宣言は要らない(varとかも要らないだと…!?)

intの大きさが気になる人はこれで調べるべし…(varsion3以降に限る)

>>> print(sys.maxsize)
9223372036854775807

多いな…


配列(リスト)

>>> a = [1,2,3,4,5]
>>> print(a)
[1, 2, 3, 4, 5]
>>> len(a)
5
>>> a[0]
1
>>> a[4]
5

どれ、範囲外をさしてみよか

>>> a[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

代入は?

>>> a[4] = 99
>>> print(a)
[1, 2, 3, 4, 99]
>>> a[5] = 55
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range

エラー文、結構丁寧。 本によると、スライシングという記法があるらしく、これを使うと、どこからどこまでの配列が欲しいとかができるそうで

>>> a = [1,2,3,4,5]

とすると、1番目から2番目を抜きたいときは

>>> a[0:2]
[1, 2]

2番目から最後まで抜きたいときは

>>> a[1:]
[2, 3, 4, 5]

数字を何も入れないと、最初または最後までという意味になる。
とりあえずコロンだけにしてみる

>>> a[:]
[1, 2, 3, 4, 5]

全部抜けた

じゃあ、参照外のところを指したらどうなるか。

>>> a[:5]
[1, 2, 3, 4, 5]

マイナス表記にすると、最後から何番目という扱いになる

>>> a[-1:]
[5]
>>> a[:-1]
[1, 2, 3, 4]

って、こんな書き方したことないよ…!
慣れるまで大変そう。でも短く書けるのはすごくよさそう。


ディクショナリ

パット見、JSONにしか見えない…

>>> me = { 'HP':100, 'MP':100 }
>>> me['HP']
100
>>> me[HP]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'HP' is not defined

文字列抜けるかなと思ったら、ダメでした…

>>> me = { HP: 100, MP: 100 }
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'HP' is not defined

コンテナ(って、Pythonでも通じるのかしら?)はほかにも、タプルとかセットとかあるらしい…
奥が深いので今は無視


if文、for文、関数

Pythonでは中かっこ{}ではなく、インデントを使って表現する。
タブでもスペース4つでもいいが、これがないと関数宣言ができない

if 条件式 :
    なんとかかんとか
else:
    なんとかかんとか

for i in 配列:
    なんとかかんとか

関数は、

>>> def hello():
...    print("Hello World")

引数ももちろん作れる

>>> def hello( obj ):
...    print("Hello World" + obj)

ファイルの保存は割合…
スクリプトってそんなものだし…

クラス

コンストラクタに当たるのが init()
なら、デストラクタがあるのではと調べたら、あった

class Sample:
    def __init__()
    {
        # しょきか
    }
    def __del__()
    {
        # なんかけす
    }

ただし、必ずデストラクタが呼ばれるとは限らない
なん…だと…


今日はここまで。 次は、エディタが欲しいのでVSCodeでの環境つくります