急に始めた、特別企画。
「やむを得ず覚えるpython」、略してやむpyです。
まずは文法というか、読む上での知識を付けようとしている。
LINT系のツールもあるようなので、自分で書くようになったら考えよう。
Python の Lint (文法チェッカ) まとめ - flake8 + hacking を使う - - Qiita
知らない言語を自分で覚えたときって「これで大丈夫かなあ」という判断ができないのがきついのだ。
やむpy(2)の最後で書いたソースをhackingというLINTツールにかけると警告が出てきた。
出なくなるまで直すと、こうなった。
1: #!/usr/bin/python2:3:4: class Yebisu(object):
5: y = 26:7: def __init__(self, x):
8: self.x = x9:10:11: nihon = Yebisu(1)12: print(nihon.x)
13: Yebisu.y = 314: print(nihon.y)
空行の数なんかも指摘されるのねぇ。
過去記事
hiro99ma blog: [勉][py]やむを得ず覚えるpython (1)
hiro99ma blog: [勉][py]やむを得ず覚えるpython (2)
変数
03.py
#!/usr/bin/pythonpostit = 5postit = "3M"
print(postit)
$ ./03.py
3M
足し算はできなかったが、中身が差し替わることについてはエラーにならない。
配列っぽいのは、[~]で囲む。
「リスト」と呼ぶそうだ。
#!/usr/bin/pythonpostit = [ 5, 9 ]print(postit[0])
print(postit[1])
$ ./03.py
5
9
範囲外への代入はエラーになる。
1: #!/usr/bin/python2: postit = [ 5, 9 ]3: postit[0] = 24: postit[2] = 45: print(postit[0])
6: print(postit[1])
$ ./03.py
Traceback (most recent call last):
File "./03.py", line 4, in <module>
postit[2] = 4
IndexError: list assignment index out of range
イテレータも使える。
1: #!/usr/bin/python2: postit = [ 5, 9 ]3: for val in postit:4: print(val)
まぜこぜもいける。
1: #!/usr/bin/python2: postit = [ "pos", 9 ]
3: for val in postit:4: print(val)
$ ./03.py
pos
9
こういうまぜこぜもある。
1: #!/usr/bin/python2: postit1 = [ "pos", 9 ]
3: postit2 = [ "tit", 2 ]
4: postits = [ postit1, postit2 ]5: for val in postits:6: print(val)
$ ./03.py
['pos', 9]
['tit', 2]
足せるの?
1: #!/usr/bin/python2: postit1 = [ "pos", 9 ]
3: postit2 = [ "tit", 2 ]
4: postits = postit1 + postit25: for val in postits:6: print(val)
$ ./03.py
pos
9
tit
2
足せるね。
添字は負の数も使えるらしい。
1: #!/usr/bin/python2: postit = [ 1, 9 ]3: for i in range(-2, 2):4: print("i=%d -> %d" % (i, postit[i]))
$ ./03.py
i=-2 -> 1
i=-1 -> 9
i=0 -> 1
i=1 -> 9
これはちょっとイメージしにくい。
2次元にしてみよう。
1: #!/usr/bin/python2: postit = [[ "(0,0)", "(0,1)" ], [ "(1,0)", "(1,1)" ]]3: for y in range(-2, 2):4: for x in range(-2, 2):5: print("i=(%d,%d) -> %s" % (x, y, postit[x][y]))
$ ./03.py
i=(-2,-2) -> (0,0)
i=(-1,-2) -> (1,0)
i=(0,-2) -> (0,0)
i=(1,-2) -> (1,0)
i=(-2,-1) -> (0,1)
i=(-1,-1) -> (1,1)
i=(0,-1) -> (0,1)
i=(1,-1) -> (1,1)
i=(-2,0) -> (0,0)
i=(-1,0) -> (1,0)
i=(0,0) -> (0,0)
i=(1,0) -> (1,0)
i=(-2,1) -> (0,1)
i=(-1,1) -> (1,1)
i=(0,1) -> (0,1)
i=(1,1) -> (1,1)
原点を中心に回転しているのではなく、単に平行移動しているだけだ。
いや、計算として使いやすいように、とかいう意味かと思ったけど、少なくとも座標を扱うという感じではないみたいだ。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。