前回の続き
AWSSummitに行ってみたりしていたら記事を書く時間がなく・・・
言い訳にせず続けていくことが重要なので頑張ります。
継続は力なり
文字列リテラル
シングルクォートかダブルクォートを1つか3つで囲う。
str1 = 'hoge'
str2 = "hoge"
str3 = '''hoge'''
str4 = """hoge"""
複数行のコメントもシングルクォートかダブルクォート3つで書けましたね。
生徒「2つじゃダメなんですか?4つは、5つは?」
足し蟹!!
ということで試してみました。
str = ''hoge''
str = ''''hoge''''
str = '''''hoge'''''
5つ以外エラーになりました。
5つは思ってたのと違う結果になりました。
なぜでしょうか。
まず2つの場合は、最初「''」で文字リテラルと認識してしまっているんですね。なので以降の「hoge''」はゴミとして認識されてエラーになりました。
続いて4つの場合「SyntaxError: EOL while scanning string literal」とエラーになります。文字列リテラルと認識しようとしてるのが分かりますが、普通にダメみたいです。
2つの場合から考えると「'' + '' + hoge + '' + ''」となり、hogeのタイミングで怒られる気がします。
もしくは「''' + 'hoge' + '''」になるが、シングルクォートで囲う中にシングルクォートは書けません。書くなら「''' + " hoge " + '''」ですが、結果は「"hoge"」で期待している「hoge」にならないので要注意です。
以上を考えると1つより3つの書き方の方を優先した実行結果になっているようですね。
最後に5つの場合を3つの書き方を優先するルールに従うと「''' + ''hoge + ''' + ''」になります。そして表示結果は「''hoge」でエラーにはなりません。(正確には「''hoge」の後に空文字がいます)
法則性が見えたのでこれ以上はやりませんでしたが、勉強会らしいことができました。
if文(条件分岐)
もし~なら①の処理、以外は②の処理的なやつです。
書き方は下記の通りです。
i = 1
if i < 0:
print('hoge')
else:
print('fuga')
print('apple')
JSなどで使う{}に慣れている人からすると違和感しかないですが、スコープ定義はインデントによって使い分けられます。
else ifは「elif ~:」で書けます。
個人的にif ~の後の「:」をよく忘れるので注意しないとと思いました。Switch文のcaseぐらいにしか使ったことないイメージです。
それ以外は特に気になることがなかったのでif文に関しては以上です(笑)
まとめ
今回は文字列リテラルについて色々試していたら時間が来てしましました。「フーンなるほど」ではなく「え、それなんで?」という子供のような「なんで?」を追求できるのは勉強会のいいところだと思います。
いよいよ制御文になってきたのでコーディングっぽくなってきた気がします。
次回はfor文からです。