きっかけなんて些細なモンですよ。

NEW GAME!を観ました。プログラミング始めます。(26)

最近何~~~もやる気が起きません。
f:id:kirintt:20171222185803p:plain



前回
nagoyanofes.hatenadiary.jp





※基本的に、愛知大学の有澤先生がプログラミングの講義で使用しているテキスト「Pythonによるプログラミング入門」に沿って進めています。
Python 2.7.13を使用しています。

前回から第Ⅱ部 Python 文法に入りましたが、ここは実践というよりも文法に関する知識の説明パートになっています。
もうⅠ部をやったから知ってるよ!と思う部分も結構あるので、ここで初めて知った部分、うろ覚えだと感じた部分だけをメモ的に残しておくようにしようと思います。

1.2 数

実数

。非常に絶対値の大きな実数は 10 ** 308 まで、逆に非常に 0 に近い実数は 10 ** −323 までが許される。
(引用元:Pythonによるプログラミング入門, p. 66)

複素数

虚数単位は j である。単なる j は変数名と区別がつかない。そこで j の前には必ず
数字を付ける必要がある。例えば (1+j) とは書かず (1+1j) と書く。
z を複素数とすると

z.real
z.imag

が z の実数部と虚数部であり、

z.conjugate()

複素共役が得られる。


z = (1+2J)
print z.real
print z.imag
print z.conjugate()

結果

1.0
2.0
(1-2j)


結果は実数として表示されるようです。

1.3 文字列 (string)

プログラムの行を跨がない文字列定数は二重引用符 (") あるいは単一引用符 (') で囲って表現する。例えば "alice" または 'alice' のように表現する。
(引用元:Pythonによるプログラミング入門, p. 67)


どっちでも良いんですねー。

改行の処理

文字列の中に改行が含まれる場合にはどのように表すのか? この場合には次の様に 3 個の引用符 (単一引用符、または二重引用符) を並べて表現する。

'''All in the golden afternoon
Full leisurely we glide;
For both our oars, with little skill,
By little arms are plied,
While little hands make vain pretence
Our wanderings to guide.'''

(引用元:Pythonによるプログラミング入門, p. 67)

プログラム

print '''All in the golden afternoon
Full leisurely we glide;
For both our oars, with little skill,
By little arms are plied,
While little hands make vain pretence
Our wanderings to guide.'''


結果

All in the golden afternoon
Full leisurely we glide;
For both our oars, with little skill,
By little arms are plied,
While little hands make vain pretence
Our wanderings to guide.


確かに改行されました。
では、改行したくない場合にはどうするのでしょうか。

次の様に行末にバックスラッシュ記号 (\) を入れる
と行末記号を取り消してくれる。

'''All in the golden afternoon\
Full leisurely we glide;\
For both our oars, with little skill,\
By little arms are plied,\
While little hands make vain pretence\
Our wanderings to guide.'''

(引用元:Pythonによるプログラミング入門, p. 67)


プログラム

print '''All in the golden afternoon\
Full leisurely we glide;\
For both our oars, with little skill,\
By little arms are plied,\
While little hands make vain pretence\
Our wanderings to guide.'''


結果

All in the golden afternoonFull leisurely we glide;For both our oars, with little skill,By little arms are plied,While little hands make vain pretenceOur wanderings to guide.


長い長い文章を改行なしに表示できました。ただ、ここではコード上で改行されていた部分の単語が繋がってしまっていますね。といっても解決法は簡単で、バックスラッシュ記号(\)の前に半角スペースを入れておくだけです。

特殊文字の表現

 行末にない \ 記号は特殊な文字を文字列の中に埋め込む時に使用される。
 Python では 2 種類の引用符が使えるので
  I don’t know.
を print 文で表示するのに、

print "I don't know."

と書いても

print 'I don\'t know.'

と書いても構わない。
(引用元:Pythonによるプログラミング入門, p. 67)


テキストでは特殊文字の表現が表にまとめられています。

f:id:kirintt:20171222182255p:plain
(引用元:Pythonによるプログラミング入門, p. 68)

1.3.2 文字列に対する基本演算

文字列の長さ

文字列 s の長さとは文字列に含まれる文字の個数である。文字列 s の長さは関数 len(s) で与えられる。
(引用元:Pythonによるプログラミング入門, p. 68)


s = "kikkake"
print len(s)


結果

7
部分文字列

文字列 s の n 番目の文字は s[n] で表す。n をインデックスと言う。n は 0 から始まる。… s[n:] は s[n] 以降の s の文字列を意味する。… s[:m] は s[0] からの m 個の並びである。… s[n:m] は s[n:] と s[:m] の共通部分を意味する。… 文字列から部分文字列を切り出す演算をスライス (slice) と言う。
 [ ] の中の整数は負の数も許されている。その場合には文字位置が後ろから指定されたと解釈される。-1 が末尾の文字位置である。
(引用元:Pythonによるプログラミング入門, p. 68)


s = "kikkake"
print s[0], s[2]
print s[3:], s[:4]
print s[2:4]
print s[-1]
print s[-4:], s[:-2]
print s[-5:-3]


結果

k k
kake kikk
kk
e
kake kikka
kk


個人的にはマイナスを使うときの s[:m] の扱いに混乱しそうなので気を付けたいです。

文字列の演算

文字列には + の演算と * の演算と % の演算が許される。例で示す。
'alice' + 'bob' は 'alicebob' を、
'alice'*3 は 'alice' + 'alice' + 'alice' 即ち 'alicealicealice' を、
'alice=%d'%x は x の値に応じて、例えば 18 の時には 'alice=18' を
を生成する。… 。最後の例、
'alice=%d'%x
では文字列 'alice=%d' に対して x が演算子 % によって作用しているのである。演算子 % の左の文字列 (この場合 'alice=%d' ) を書式指定文字列と言う。書式指定文字列の中に現われる文字 % が埋め込みの場所を表している。
(引用元:Pythonによるプログラミング入門, p. 68)


最後の 'alice=%d'%x がちょっとややこしく感じるかもですが、文字列の中に好きな数値(x)を入れることができますよ、って認識ですかね。alice という文字列を変数として扱えるわけではないようです。


x = 10
print 'alice=%d'%x
print 'alice' * 2


結果

alice=10
alicealice


長くなったので今回はここでいったん終了~。


次:まだ