< 前の記事 | Web講座TOP | 次の記事 >

初心者向け Pythonパイソン講座 - 第2回「いろいろな数の書き方」

投稿者:3G 大毛


どんなプログラムも、まずは数の書き方を知らなければ作ることができないでしょう。今回はPythonパイソンで使える数について勉強していきます。この講座ではまだ数学を勉強していない小中学生にも分かるように解説を心がけています。最初は地味なことや当たり前のことが続くかもしれませんが辛抱しんぼうしてください。後でかならず役に立つ時が来ます!



整数せいすうの書き方


1, 2, 3, 4, 5,・・・という数をせい整数せいすうといいます。Pythonではいくらでも大きな整数を書いてOKです!ただし実際には、あるところでコンピュータの記憶容量きおくようりょう(メモリ)の限界を超えてしまいエラーとなるでしょう・・・(私は試したことはありません)。



正の整数の前に「-」マイナスをつけた、-1, -2, -3, -4, -5,・・・という数をの整数といいます。負の数は大小が逆になります。なので大きい数にマイナスをつけるほど小さくなるわけですが・・・Pythonではどんなに小さな整数を書いてもOKです!



これ以外に0という整数があります。もちろん0もPythonで書けます。



Pythonではこれら整数のことをint型イントがたという名前で呼びます。intとは、整数を意味するintegerインティジャーの略です。Colabでノートブックを開き、新しいセルに「type(1)」と入力して実行してみましょう。すぐ下に出力として「int」と出てきたはずです。1はint型であることが分かります。



これからこの講座ではいろいろな数やデータの書き方を勉強していきますが、それらにはデータの種類を表す「かた」(typeタイプ)というものが決まっています。例えば「abc」というデータの型を調べたいときは「type(abc)」と入力すれば表示されます。その都度つど試してみると勉強になるでしょう。


いろいろな数が書けて便利なPythonですが、やってはいけない整数の書き方があります。それは0以外の整数のはじめに0を書いてはいけないということです。例えば3のつもりで「03」とか「0003」と書くとエラーとなってしまうので注意しましょう。



それからPythonのルールとしては問題ないけれども、バグ(プログラムの不具合ふぐあいのこと)を生む原因になったり、読みづらかったりするので書いてはいけない書き方があります。例えば、次のように書いたとします。これらはいったい何を表しているでしょうか?

++1

+(+1)

-(+-1)

-(--(-1))

((((1))))

-+-++((+---(---+(+-+(+-1)))))


実はこれらはすべて1になります。一行ずつ入力して実行してみるとPythonはいかにもすずしげな顔で「これは1です」と言うかもしれませんが、決して整数の1を表すためにこのように書いてはいけません!(これらの式がなぜ1になるかは今わからなくても問題ありません。)



演算子えんざんしとは


足し算の+記号は「5+3」のように、2つの数「5」と「3」を引き受けて計算し、1つの数「8」を返します。負の整数につける-記号は「-4」のように、1つの数「4」を引き受けて計算し(計算と言っても正と負を入れ替えるだけ!)、1つの数「-4」を返します。このように、いくつかの数を引き受けて、いくつかの数を返す記号のことを演算子えんざんしといいます。


(-4の計算では、-記号がちゃんと計算しているのか分かるように4にカッコをつけました。)

演算子が引き受けるものは入力にゅうりょくといいます。返すものは出力しゅつりょくと言います。入力や出力は数でなくてもよく、いろいろな種類のデータの場合もあります。


入力の個数が2個なら2項演算子にこうえんざんしといいます。足し算の+、引き算の-、掛け算の*は2項演算子です。負の数につける-記号のように、入力の個数が1個の場合は単項演算子たんこうえんざんしと言います。Pythonにはこの他に3項演算子というものもあります。


四則しそく演算(足し算・引き算・け算・割り算)の書き方


さて、3+2-1-2+3-1はいくつになるでしょうか?


答えは4ですね。どこから計算しましたか?


左端から順に計算した人はPythonと同じです!Pythonはこの式を((((3+2)-1)-2)+3)-1と解釈して計算します。



左から計算する演算子を左結合ひだりけつごうの演算子といいます。足し算や引き算などPythonの多くの演算子は左結合です。右から計算する演算子は右結合みぎけつごうの演算子といいます。



それでは、3+2*1*2+3*1はいくつになるでしょうか?(*は掛け算です)


答えは10ですね。今度はどこから計算しましたか?


掛け算から計算した人はPythonと同じです!掛け算も左結合の2項演算子ですが、足し算・引き算よりも優先度が高く設定されています。なのでPythonはこの式を(3+((2*1)*2))+(3*1)と解釈して計算します。



ちなみに足し算と引き算は同じ優先度なので、混ざっても区別なく左から順に計算されます。


Pythonには割り算もあります。14を3で割ったときのしょうは14//3と書き、あまりは14%3と書きます。どちらも出力は小数ではなく整数になります。優先度は掛け算と同じです。



0で割るとどうなるでしょうか?0で割ると「ゼロ除算じょさん」というエラーになります!つまり、14//0や14%0と書いてはいけませんので注意しましょう。



◆ 高校生以上の皆さんへ ◆

「負の数の商と余り」


Pythonは負の数の商や余りも計算してくれます。例えば-5を3で割った商は-2、余りは1になります(-5=3*(-2)+1だからです)。余りは-2が正しいのではないかと思う人がいるかもしれません。実は「1余る」のは「2不足する」のと同じことなので「-2余る」と言っても正しいのです。一般に、nで割った余りというのはnを足したり引いたりしても同じ情報を表しています(このことを「nをほうとして合同ごうどう」あるいは「modモッド nで合同」と言います)。とはいえ「3で割った余り4」とか「3で割った余り-5」というのは不親切なので普通言いません。Pythonでは(nが正なら)nで割った余りは常に0からn-1までの整数で表すことになっています。つまり、3で割った余りは常に0か1か2で表すということです。C言語など、Python以外の言語ではそうでないことがあります。


単項演算子たんこうえんざんしの+、-


Pythonでは1のことを+1と書いてもよいことになっています。+1や-1と書いた時の+と-のことを、足し算の+や引き算の-と区別するために「単項演算子の+」「単項演算子の-」と呼びましょう。単項演算子の-は正と負を逆にする効果があります。単項演算子の+は何もしません!特別な理由がない限り単項演算子の+は自分では使わないようにしましょう。



小数しょうすうの書き方


Pythonでは12.317や0.0546のような小数しょうすうfloat型フロートがたという名前であつかいます。floatとは、浮動小数点数ふどうしょうすうてんすうを意味するfloatingフローティング pointポイント numberナンバーの略です。浮動小数点数については後で説明します。コードセルに「type(12.317)」と入力して実行すると「float」と出力されるのを確認しましょう。


整数もfloat型で扱いたいときがあります。ちょうど1に等しい小数はどのように書いたらよいでしょうか?


簡単ですね。1.0や1.000と書けばちょうど1に等しいfloat型になります。type(1.0)と入力して型を確認してみましょう。



実はPythonでは小数点以下の0を省略して1.と書くこともできます。よく見かけるので覚えておきましょう。



同じように、ちょうど0.01に等しいfloat型は、最初の0を省略して.01と書くことができます。このような書き方を見かけて混乱しないようにしましょう。



float型の足し算・引き算・掛け算はint型の時と同じように書きます。例えば、0.3+1.2、0.3-1.2、0.3*1.2の計算結果は1.5、 -0.9、0.36となります。



おや?0.3-1.2は-0.9ではなく-0.8999999999999999となりました。ほとんど合っていますが少し違うような気がします。実はコンピュータの小数の計算ではこのような誤差が出ることがよくあります。(コンピュータは2進法しんほうで動いており、10進法の小数は正確には理解できないからです。)


0.3+0.7や0.5*2のようにどちらか少なくとも一方がfloat型の時はfloat型で計算します。ですから0.3+0.7や0.5*2の結果は整数の1ではなく小数の1.0です。



答えが小数になる割り算はまだ出てきていませんでした。例えば13÷3は「13/3」と書きます。結果は「4.333333333333333」という小数になります。



「12/3」と入力すると、結果は整数の4ではなく小数の4.0になります。12と3はint型として書きましたが「/」スラッシュがあることで自動的にfloat型に変換されるからです。



整数の4を求めたいときは12//3と書くのでしたね。



小数の割り算は整数の割り算同様、0で割るとゼロ除算エラーになります。



◆ 高校生以上の皆さんへ ◆

実数じっすうとは」


小数とていて混乱こんらんしそうな言葉に実数じっすうがあります。実数とは小数で書ける数のことです。ただし整数も小数点以下がすべて0の特殊とくしゅな小数として含めますし、円周率えんしゅうりつ πパイ=3.1415926535897・・・のような無限に続く小数も含めます。ですから小数は実数の表記法の1つと考えるのが正確です。なお実数という言葉は、虚数きょすうと対立する言葉として作り出されました。虚数とは実数でない複素数ふくそすうのことです。


べきじょう累乗るいじょう)の書き方


23や3-2のようなべき乗(累乗)の数はPythonでは2**3や3**(-2)と書きます。23は2を3回かける計算なので8になります。3-2は1を3で2回割る計算なので0.1111111111111111となります。右肩の数が0以上なら出力は整数、0未満なら小数になります。なお0乗はいつも1になります。例えば、100は1です。



■ 小中学生の皆さんへ ■

累乗るいじょう、べきじょう


2を3回かけた数を23と書きます。これは累乗(るいじょう)といって「にのさんじょう」と読みます。少し訓練くんれんしましょう。5に10を3回かけると5000になります。ですから5000は5×103と書けます。


ところで、わり算はかけ算の逆の計算のようなものです。2で1回わるのは、2を-1回かけるのと同じです。5を10で2回わると0.05になりますね。つまり5に10を-2回かけると0.05になります。ですから0.05は5×10-2と書けます。10-2は「じゅうのまいなすにじょう」と読みます。


23のような累乗るいじょうや、右肩みぎかた整数せいすうが乗った3-2のような数を合わせて「べき乗(べきじょう)」と言います。


● コラム ●


べき乗の記号**はPythonで唯一ゆいいつの右結合の演算子です。例えば2**3**4は2**(3**4)のように右から計算します。Pythonではべき乗の演算子以外はすべて左結合と覚えましょう。


小数の指数しすう表記


56420や0.00123はべき乗を使って、5.642×104や1.23×10-3とも書けます。これを小数の指数しすう表記といいます。Pythonでは5.642×104や1.23×10-3を5.642e4や1.23e-3と書くことができます。ただし、整数を指数表記するとint型からfloat型に変わってしまうので注意しましょう。



5.642e4は5.642e+4と書いても同じです。



指数表記は1通りではありません。5.642e4は0.5642e5とも56.42e3とも書けます。



指数しすうとはべき乗の右肩みぎかたの数のことです。5.642e4の表記でいうとeの後にある数(4のこと)です。eの前にある数(5.642のこと)は仮数かすうと言います。小数をコンピュータのデータとして実現するときに、指数と仮数、それから符号ふごう(+か-か)という3つの情報に分けて表現される数を浮動小数点数ふどうしょうすうてんすうと言います。


float型はfloating浮動 point小数点 numberの名の通り浮動小数点数です。ですから実はPythonでは小数は、指数表記で書いても書かなくても、データとしては指数表記のように指数、仮数、符号の3つに分けられて保存されています。


浮動小数点数は小数点の位置がれ動くという意味でそう呼ばれています。小数をそのまま保存する場合は固定小数点数こていしょうすうてんすうと言います。


● コラム ●

「Pythonが扱えるfloat型の最大値・最小値」


小数は整数とは違いいくらでも大きな数字を書いてもよいというわけではありません。

最大値は1.7976931348623157e308、正の最小値は2.2250738585072014e-308です。

負の最小値は最大値に-をつけた数です。


import sys
sys.float_info


と入力すると確認することができます。



複素数ふくそすう


◆ 複素数ふくそすうのことを知っている皆さんへ ◆

「複素数型」


Pythonには全部で3つの数値型すうちがたかずを表す型)があります。整数型(int型)、浮動小数点数型(float型)、複素数型(complex型)です。虚数単位きょすうたんい(2乗すると-1になる数)は普通iアイと書くことが多いですが、Pythonではjジェイと書きます。例えば複素数-1+2.5iは-1.+2.5jと書きます。実部じつぶ虚部きょぶ(ここでは-1と2.5のこと)は整数・小数どちらで書いてもfloat型に変換されます。複素数型は行列ぎょうれつ固有値こゆうちの計算などで見かけることがあるかもしれません。




< 前の記事 | Web講座TOP | 次の記事 >

TOP