学習の吐き出しです。
今回主に学んだのは、文字列についてでした。
エスケープ
\のこと。文字列の改行***\n***でよく使われる。
こんな感じ。
>>> palindrome = 'A man, \nA plan,\nA canal:\nPanama'
>>> print(palindrome)
A man,
A plan,
A canal:
Panama
また、\tでテキストの位置調整ができる。
>>> print('\tabc')
abc
>>> print('a\tbc')
a bc
>>> print('ab\tc')
ab c
>>> print('abc\t')
abc
そしてクォートを文字として使いたい場合も、\が必要。
>>> testimonyb = "\"I did nothing!\" he said. \"Not that either! Or the other thing.\""
>>> print(testimonyb)
"I did nothing!" he said. "Not that either! Or the other thing."
本来、シングルクォートとダブルクォートは、文字列を文字列だと認識・表示させるための特殊な記号。
test = ""a"iueo"と変数に入力するとsyntax errorになる。
「これは、""として表示したいの? それともaを文字として表示したいの? 書き方が変だからわからないよ!」
とpythonくんに怒られているわけです。
特にダブルクォートを文字として使用したい場合は、上記のコードのように"で『文字だよ』と教えてあげましょう。
ダブルクォートの部分をまとめると、\は特殊文字の特殊性を打ち消す能力があるのです。
+で連結
文字列は***+***記号で文字列同士を連結できる。
基本的には下記。
>>> 'Release the kraken! ' + 'At once!'
'Release the kraken! At once!'
文字列だけなら、+を使わなくてもOK。
>>> "My word! " "A gentleman caller!"
'My word! A gentleman caller!'
ただし変数を使う場合は、+が必須。
>>> a = 'Duck.'
>>> b = a
>>> c = 'Grey Duck!'
>>> a + b + c
'Duck.Duck.Grey Duck!'
もちろん使わないとエラーが出る。
>>> a = 'Duck.'
>>> b = a
>>> c = 'Grey Duck!'
>>> abc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'abc' is not defined
これは変数をどうしたいかという指示がないため、エラーになる。
+は『変数の中の文字列を足して表示してくれ』と指示している。
下のprint(a,b,c)は、『変数の中の文字列を(a,b,c)の順に表示してくれ』と指示している。
ちなみに、これでも同じ結果を得られる。
>>> print(a,b,c)
Duck. Duck. Grey Duck!
*による繰り返し
*を使うと変数内の文字列を繰り返し表示できる。
>>> start = 'Na ' * 4 + '\n'
>>> middle = 'Hey ' * 3 + '\n'
>>> end = 'Goodbye.'
>>> print(start + start + middle + end)
Na Na Na Na
Na Na Na Na
Hey Hey Hey
Goodbye.
startの部分を解体すると、
1、『start』という変数
2、=で代入
3、文字列'Na'を格納
4、『*4』で4回繰り返しを指示
(文字列での表示指示ではないのでクォートは必要ない。むしろクォートで囲むと、文字列になっちゃうので計算ができません。)
5、'\n'で改行指示
(文字列として使用するためクォートで囲む)
というような感じです。
ちなみに、「+を使わなくても表示されるんじゃないの?」と思ったあなた!
こんな感じになります。
>>> print(start,start,middle,end)
Na Na Na Na
Na Na Na Na
Hey Hey Hey
Goodbye.
1文字分ずれます。
些細なんですけど私は気になるので、+をちゃんと使うことをお勧めします。
理由は……あとで調べておきます。
とりあえず、一旦ここまで。
抽出や簡単な関数まで勉強したので、一気にやるとかなり長い記事になってしまうので。
この後もアウトプット含め頑張ります。