【入門者向け】Pythonの基礎文法① 四則演算・文字列|Python入門 #2

f:id:lib-arts:20190804170008p:plain

#1ではPythonを用いたFizzBuzzのコーディングについてまとめました。

入門者の方に読んでみていただいたところ、少し難しかったようなので、#2以降では#1で触れた基本文法をそれぞれもう少し丁寧に解説を行なっていければと思います。基本的には下記のPythonのドキュメントのチュートリアルなどを元にして解説していきます。

Python チュートリアル — Python 3.7.4 ドキュメント
#2ではPythonにおける四則演算・文字列について取り扱います。
以下目次になります。
1. Pythonにおける四則演算+α
2. Pythonにおける文字列(string)
3. まとめ


1. Pythonにおける四則演算+α
1節ではPythonにおける変数と配列についてまとめていきます。

3. 形式ばらない Python の紹介 — Python 3.7.4 ドキュメント

上記の内容からピックアップしていきます。まず3.1.1の数ですが、式を入力すると、その結果が表示されます。

f:id:lib-arts:20190804171310p:plain

上記のように値を出力することができます。Jupyterで出力すると下記のようになります。

f:id:lib-arts:20190804171457p:plain
上記によって加減乗除の四則演算が表現されています。

print(2 + 2)
print(50 - 5*6)
print*1

結果は下記のようになります。

f:id:lib-arts:20190804180428p:plain
lenは文字列の数を数えてくれる便利な機能で、ざっくりとした把握がしたい際やfor文のような固定長で値を与える必要がある場合などに役に立ちます。

文字列に関して概ね取り扱えたので、2節はここまでとします。


3. まとめ
#2では四則演算などの基本的な演算に加え、文字列の取り扱いについて取り扱いました。
#3では変数や配列について取り扱っていければと思います。

*1:50 - 5*6) / 4)
print(8 / 5) # division always returns a floating point number

上記だとまとめて実行できるので、以下は上記のような形式でプログラムを記述していきます。
次は下記を見ていきましょう。

print(17 / 3) # classic division returns a float
print(17 // 3) # floor division discards the fractional part
print(17 % 3) # the % operator returns the remainder of the division
print(5 * 3 + 2) # result * divisor + remainder

これを実行すると下記のようになります。

f:id:lib-arts:20190804172135p:plain

結果の見方としては、/を用いた割り算については小数の型であるfloat型になっているのに対し、//を用いた割り算については小数点以下が切り捨てられています。また、%は17を3で割った余りを計算し、2であることを導出しています。また、"5*3+2"は元の数字である17を掛け算の形式で算出しています。

最後に累乗の計算について紹介します。

print(5 ** 2) # 5 squared
print(2 ** 7) # 2 to the power of 7

上記を実行すると下記のようになります。

f:id:lib-arts:20190804173749p:plain

それぞれ5^2=252^7=128であることから、**を用いることで、累乗を計算できているということがわかります。

ここまででPythonを用いた基本的な演算について取り扱えたので1節はここまでとします。


2. Pythonにおける文字列(string)
2節ではPythonにおける文字列について取り扱います。

print('spam eggs') # single quotes
print('doesn\'t') # use \' to escape the single quote...
print("doesn't") # ...or use double quotes instead
print('"Yes," they said.')
print("\"Yes,\" they said.")
print('"Isn\'t," they said.')

まずは上記を動かしてみましょう。動作結果としては下記のようになります。

f:id:lib-arts:20190804174445p:plain

上記を確認することでなんとなくのイメージをつかむことができます。まず"(ダブルクオテーション)か'(シングルクオテーション)はそれぞれ区別されます。ダブルクオテーションの中にシングルクオテーションを入れるなどを行なっています。ここで注意なのがシングルクオテーションの中にシングルクオテーションを入れる際は\'のようにエスケープを行う必要性があるということです。
また、文字列は + 演算子で連結させることができ、* 演算子で反復させることができます。

# 3 times 'un', followed by 'ium'
print(3 * 'un' + 'ium')
print("a"*3+"b"*5)

上記の実行結果は下記になります。

f:id:lib-arts:20190804175209p:plain

このように文字列の連結を行うことができます。
次に文字列の部分的な切り出しを行います。

word = 'Python'
print(word)
print(word[3])
print(word[5])
print(word[2:6])

上記の実行結果は下記のようになります。

f:id:lib-arts:20190804175734p:plain

まず注意としてはインデックスは0から数えるため、word[3]は前から4つ目のhになります。また、ここで注意なのが複数の文字を取り出すにあたって用いるスライスという考え方です。

f:id:lib-arts:20190804175955p:plain

スライスのインデックスについては、上記のように文字そのものというよりも文字と文字の間を表していると考えると良いです。

最後に文字列関連の機能として便利なlen関数についてご紹介します。

s = 'supercalifragilisticexpialidocious'
print(len(s