2017年の振り返り

2017年は、2017が素数というだけあって、良い年になるだろうと期待していた。しかし、僕にとっては、まあまあ普通の年であった。2017年は、数学を趣味にしようということで、数学の啓蒙書や数学者の自伝、高校~大学1、2年向けの本を読んだりしていた。神保町の書泉グランデに行って、ジョン・コーツ先生の講演を聞いたり、カルチャーセンターの代数幾何学の講義を受けたりした(仕事で疲れていて最初の1回しか行けなかった)。今までは、仕事に役立てようと、休日もプログラミングの勉強をしていた。それが、プログラミングの方の興味は少し減って、数学への興味が増したという感じだ。プログラミングはC言語C++言語の知識が少し増えたけど、まだまだだ。何か、自分なりのプログラムを書きたいな、と思っている。まあ、無理せずやっていこうと思う。

日記20171217

今日は、朝起きたら、パリパリの日だった。
パッキパキで、目の奥が痛くなるような青い空が、小さな窓を一色にしていた。
鉛の液体が脳、首、肩に詰まっていた。
急激な気圧の上昇による症状だと直感した。
いや、それは言い訳かもしれない。
週末の仕事の悩みが、次の日が月曜だという日曜の朝、鬱となって吹き出したのだろう。

数学の本を読み、ノートに計算を書いても、落ち着かなかった。
整域を同値類に分けて、体にすることができる。素イデアルによる剰余環は、整域であり、体ではない。
体にするには、極大イデアルが必要だ。しかし、整域という条件さえあれば、体は作れるのだな、
と考え、字を書いても、焦燥感が増すばかり。

確かなこと、価値ある事実がつかめていない気がする。
こんなときは、外に出て散歩をするに限る。
スーパーの地下にある1000円カットへ、散髪に行った。
「髪はすきますか?」
「はい。」
ハゲが丸見えになったので、失敗したなと思った。

コンビニでスパゲッティを買い、テレビ「ザ・ノンフィクション」を見ながら食べた。
そんな冬の一日だった。

Python3.6.3チュートリアル写経20171122

最近、寒いですね。

Pythonをかじっていて、お仕事で少し役立ったのは、リスト内包表記です。

テストケースを入力の組み合わせに応じて、作成するときに使えました。

for文でやっても同じですが、ネストが深くなります。

また、リスト内包表記の方が速い?

今日は、9.8. イテレータ~10.5. 文字列のパターンマッチング をやりました。

うーん、この辺は、やはり、何か具体的なプログラムを作りながら身につけるべきだと思います。

ちょっと、だれてきましたが、メモ。

  • イテレータを簡単に自作できるようにしたものがジェネレータ
  • ジェネレータのキーワードはyield
  • ジェネレータってschemeなどの「継続」と関係がある?
  • ジェネレータ式というのはリスト内包表記のメモリに優しい版で、丸括弧を使うところだけ違う

Python3.6.3チュートリアル写経20171119

9.3.1. クラス定義の構文~9.7. 残りのはしばし までやった。

  • classのコンストラクタは、__init__(self, arg1, arg2, ...)と書く
  • コンストラクタやメソッドの第一引数はselfと書く慣習
  • x.f() という呼び出しは、 MyClass.f(x) と厳密に等価
  • Pythonではクラスのメンバはすべてpublic
  • MyClass(MyBaseClass): のように括弧内に基底クラスを書くことによって継承を行う
  • クラス変数に、ミュータブルなオブジェクト(リスト、辞書など)を使用してはならない
  • メンバ変数とメンバメソッドは同じ名前のものを書くことができない。上書きされてしまう。
  • クラスを調べる組み込み関数 isinstance(obj, type) と継承関係を調べる組み込み関数 issubclass(MyClass, MyBaseClass) がある

Python3.6.3チュートリアル写経20171118

8.1. 構文エラー~9.2. Pythonのスコープと名前空間 をやった。

  • 例外のcatchはtry, exceptでやる。else節に例外が発生しなかったときの処理が書け、finally節にクリーンアップ処理を書く。
  • except ValueError: などのように、例外のクラスを指定できる。
  • except Exception as err: のようにすると、err.argsがExceptionのコンストラクタに指定した引数であり、その引数にアクセスできる
  • ユーザ定義例外を作るには、Exceptionクラスを継承したクラスを書けばよい
  • 関数内で関数が定義できる
  • 変数宣言に変数のスコープを表すキーワード nonlocal, globalが書ける
  • nonlocal指定の変数は最内スコープの1つ外側の変数を表す
  • global指定の変数はモジュールのスコープの変数を表す

Python3.6.3チュートリアル写経20171116

6.1.2. モジュール検索パス~7.2.2. jsonによる構造化されたデータの保存 をやった。

  • パッケージはディレクトリ、モジュールは.pyファイル
  • パッケージのディレクトリには、__init__.pyを置く(空でもよい)
  • ファイル入出力のモードには以下がある

"r", "rb", "r+", "rb+", "w", "wb", "w+", "wb+", "a", "ab","a+", "ab+"

f = open('test.txt', 'r')
for line in f:
    print(line, end=' ')
f.close()