こんにちは。
この記事では、Python初心者の方向けに「Pythonの数値と文字列の扱い方」について解説します。
本記事の到達目標
- 数値を扱った四則演算に慣れる
- 文字列を扱った表示の仕方に慣れる
- 数値と文字列の相互変換に慣れる
Pythonを始めたばかりの方にとっては、数値と文字列の扱い方だけでも大変だと思いますが、大丈夫です。
頑張って学習していきましょう。
数値・四則演算
数値演算
各自皆さんで以下の様に数値演算を打ち込んで下さい。
実際に計算できるか確認してみましょう。
足し算
(例) 3 + 2 =
1 2 | >>> 3 + 2 5 |
引き算
(例) 6 - 4 =
1 2 | >>> 6 - 4 2 |
掛け算
(例) 3 × 2 =
1 2 | >>> 3 * 2 6 |
べき乗計算
(例) 34 =
1 2 | >>> 3 ** 4 81 |
割り算
(例)
9 ÷ 3 =
54 ÷ 9 =
1 2 3 4 5 | >>> 9 / 3 3.0 >>> 54 / 9 6.0 |
※ この様にPythonの計算では整数と整数の割り算で割り切れる様な計算式であったとしても、演算結果には少数点が付いて「実数になる」ことを確認しておきましょう。
小数点以下切り捨ての割り算(1の位で打ち切り)
(例) 34 ÷ 3 = 11…1 or 11.11111111…
1 2 3 4 5 | >>> 34 // 3 11 >>> 34 % 3 1 |
この様に //
は「1の位で打ち切った少数点以下の切り捨ての割り算」になります。
また、 「 %
を使用する事で、余りを算出する」ことが出来ます。
注意点
(例) 3 × 5.9 =
1 2 | >>> 3 * 5.9 17.700000000000003 |
※ PCには「2進法に直してから計算する」という特徴があります。
あまり深くは考えず、コンピュータで計算したものの一部は正確な値ではなく近似値になってしまう事もあると割り切りましょう。
そのため、正確な実数値を扱う場合の演算式では正確性に欠けるため、注意が必要です。
整数(integer number)と2進法、8進法、16進法
2進法
2進法を10進法に変換する際には、0b
を2進法の頭に使用します。
逆に10進法から2進法に変換する際には、bin()
を使用します。
1 2 3 4 5 | >>> 0b110101 53 >>> bin(3564) '0b110111101100' |
8進法
8進法を10進法に変換する際には、0o
を8進法の頭に付けて使用します。
逆に10進法から8進法に変換する際には、oct()
を使用します。
1 2 3 4 5 | >>> 0o563 371 >>> oct(637386) '0o2334712' |
16進法
16 進法を10進法に変換する際には、0x
を16 進法の頭に付けて使用します。
逆に10進法から 16進法に変換する際には、hex()
を使用します。
16進法の場合には10,11,12,13,14,15は各々、a,b,c,d,e,f,と表現されます。
1 2 3 4 5 | >>> 0xbdf452af 3186905775 >>> hex(627298272) '0x2563cfe0' |
実数(float number),少数点以下のある実数(浮動少数点)
基本的にプログラミングでは浮動小数点数が使用されます。
浮動小数点数(ふどうしょうすうてんすう、英: floating point number)は、浮動小数点方式による数のことで、もっぱらコンピュータの数値表現において、それぞれ固定長の仮数部と指数部を持つ、数値の表現法により表現された数である。
指数表現によって可能な十分に広い絶対値の範囲内において、仮数部の桁数に依って常に一定の範囲内の相対誤差で任意の実数を近似できるという特性がある。そのため、極端な数を扱う分野(科8学計算など)で多く用いられている。また、プログラミング言語のほとんどが対応しているということもあり、小数の表現方法としては最も普及している。>> Wikipedia "浮動少数点数"より引用
次に桁数の大きい、または小さい数の計算について確認していきます。
桁数の大きい(小さい)数字
10の8乗、または10の-19乗など桁数の大きな(または小さな)、小数点を扱いたい場合には 指数表記( a × er)を扱います。
ここで使用する e
は 10
と同じ意味です。e+5
は10の5乗を意味します。
(例)
8.6578 × 108 =
9.7624 × 10-12 =
1 2 3 4 5 | >>> 8.6578e+8 865780000.0 >>> 9.7624e-12 9.7624e-12 |
注意ポイント
8.6578とeや8の間には半角スペースを入れるとerrorが出てしまうので注意が必要です。
Pythonでの複素数の表現方法
高校数学の内容ですが、複素数の定義の確認です。
数学における複素数(ふくそすう、英: complex number)は、実数の対 a, b と 1 と線型独立な(実数ではない)要素 i の線型結合 a + bi の形に表される数で、 i はその平方が −1 になるという特別な性質を持ち虚数単位と呼ばれる。
1 2 | >>> 34 + 9j (34+9j) |
※ 複素数は i と勉強しましたが、プログラミングでは j と扱うのですね。
整数、実数、複素数の相互変換
実数 → 整数への変換関数 ( int )
(例) 786.398 → 786 となります。int
を使用します。
1 2 | >>> int(789.398) 789 |
整数 → 実数への変換関数 ( float )
(例) 945 → 945.0 となります、 float
を使用します。
1 2 | >>> float(945) 945.0 |
実数 → 複素数への変換関数( complex )
(例) 324 → 324 + 0i
1 2 | >>> complex(324) (324+0j) |
文字列(string)を扱う
ダブルクォーテーションとシングルクォーテーション
ダブルクォーテーションを文字列として表示する際には、シングルクォーテーションで囲んで表示させましょう。
同様にシングルクォーテーションを文字列で表示したいときは、ダブルクォーテーションで囲んで表示させましょう。
以下、"Tommy blog"を文字列として表示したいので、全体文をシングルクォーテーションで囲んでprintで表示しました。
1 2 | >>> print('こんにちわ "Tommy blog"を見ていただいている皆さん!') こんにちわ "Tommy blog"を見ていただいている皆さん! |
エスケープシーケンス、バックスラッシュを使用する( \ )
そもそもエスケープシーケンスとは何でしょうか。
エスケープシーケンスとは、画面上に文字を出力する際に、文字そのものを出力するのではなく、文字色の変更やカーソルの移動、文字の消去など、文字出力の制御を行う特殊な文字列のことである。
【出典】>> IT用語辞典
その他にもこの様な説明があります。
文字の中には1文字では表せない文字も存在します。例えば改行です。このような特殊な文字を記述するために使われるのがエスケープシーケンスです。
【出典】>> Let's プログラミング
少し分かりにくいですね。実際に具体例で見てみましょう。
ダブルクォーテーションを文字列で表示する手段としては、\
(バックスラッシュ, 「option + ¥ 」) をクォーテーションの前に持ってくることで、\
を付けた後のクォーテーションを文字列として表現することができます。
(※ ダブルクォーテーションを文字列として表示する際に、必ずしもシングルクォーテーションで囲む必要はありません。)
以下が例となります。
1 2 | >>> print("こんにちわ, \"Tommy blogを見ている\" 皆さん!") こんにちわ, "Tommy blogを見ている" 皆さん! |
改行の表示の仕方
\n を使用する。
\n
を文字の前に挿入することで改行を行う事ができる。
例えば以下の様に改行する事が出来ます。
1 2 3 4 | >>> print("こんにちわ,\n Tommy blogを\nご覧になっている方へ") こんにちわ, Tommy blogを ご覧になっている方へ |
クォーテーションを使用する。
クォーテーションマーク「"""
」を3つ連続で使用する事で、改行する事ができます。
1 2 3 4 5 6 7 8 9 | >>> print(""" ... こんにちわ, ... Tommy blogをご覧になっている ... みなさまへ ... """) こんにちわ, Tommy blogをご覧になっている みなさまへ |
ヒアドキュメントとは
このようなクォーテーマションマークの使い方を ヒアドキュメント といいます。
この様に使用したときは ...
が表示されますが、特に意味はないので気にしなくてみ大丈夫です。
python では、区切り文字として引用符を3つ続ける(
'''
あるいは"""
)形での文字列リテラルをサポートしている。これらの文字列リテラルは途中に改行を入れることができるなど、ヒアドキュメントとしての特徴を持っている。
文字列を連結する際の注意点
*
の掛け算で使用する演算子を以下の様に使用すると、この様な文字列の繰り返しになります。
1 2 3 | >>> "やったー!"*3 'やったー!やったー!やったー!' |
"やったー" が3乗されるわけですね。
この様な文字列の演算もできるので覚えておきましょう。
数値と文字列について【相互変換の方法】
数値の桁数を知る方法
数値の桁数を知りたいときにはどの様にすれば良いのでしょうか。
例えば、7892673938727 という数字があるとします。
これをそのまま、ターミナルに載せると'数字'として認識されます。
そこで、文字列として認識させるために、"7892673938727" と記載する必要があります。
その文字列の数を調べれば、桁数が分かるわけです。
文字列の数を調べたい場合には len()
を使用すれば確認出来ます。
1 2 3 | >>> len("7892673938727") 13 |
この様にlen()
を使用すると、13桁である事が分かるわけです。
数値列 → 文字列に変換【str( )】
数値列を文字列に変換したい場合には str()
を使用します。
例えば先程の様に、「7892673938727
という数値の桁数を知りたい場合」には、まず文字列にする必要があるため
1 2 3 | >>> len(str(7892673938727)) 13 |
この様にしても桁数を知る事ができます。
文字列 → 数値列に変換【int( )】
ここで、"676876" と、"78966686" は2つとも文字列です。
そのため、"676876" + "78966686"
をターミナルに記入しても数値同士の計算はできません。
一旦は、数値列に戻す必要があります。そこで使用するのが、 int( )
です。
1 2 3 | >>> int("676876") + int( "78966686") 79643562 |
この様に数値列で表す事で計算を行う事ができます。
まとめ
今回はPythonの計算の中核となる数値と文字列について解説しました。
Windowsの方もMacの方も可能であればGoogle Colaboratpry か、(Anaconda経由でも良いので)Jupyter Notebookを使用されることをオススメします。
少しずつ難易度も上げていきますので、頑張って定着させていきましょう。