今回はPythonの「基礎のキ」第2回、数値です。整数や小数の表記、算術演算子や比較演算子を使った簡単な式、その他特殊な数値の表記についてお話します。
整数
まずは通常の整数を出力してみます。実行結果は右にコメントとして記します。
print(123) #123
print(-50) #-50
はい。簡単ですね。
数値は文字列とは違い、クオートで囲んだりしなくてもOKです。と言うか、してはいけません。そのまま記述しましょう。
負数(マイナスの値)も直感的に入力できます。
算術演算子
数値に付いて回るものといえば計算。算術演算子なんて、いきなり難しい名前が出てきたと思われるかもしれませんが、何のことは無いただの計算記号です。
四則演算の他にいくつかありますので、ここで表にしておきます。色々と試してみましょう。
演算子 | 意味 | 例 | 結果 |
---|---|---|---|
+ | 加算 | 1 + 1 | 2 |
– | 減算 | 5 – 2 | 3 |
* | 乗算 | 3 * 7 | 21 |
/ | 除算 (割り算) | 8 / 2 | 4 |
// | 除算(余りは切り捨て) | 8 / 3 | 2 |
** | べき乗(累乗) | 3 ** 5 | 243 |
% | 剰余(割り算の余り) | 12 % 5 | 2 |
算術演算子の優先順位
プログラミングの算術演算子にも「何から先に計算が行われるか」の優先順位が存在します。
print(3+3*3) #12 (3+9の結果)
print((3+3)*3) #18 (6×3の結果)
print(3*3**3) #81 (3×3の3乗(3×27)の結果)
print((3*3)**3) #729 (9の3乗の結果)
丸括弧内→べき乗→掛け算、割り算→足し算、引き算の順に計算されます。
一般的な計算に則った順序なので、当たり前ですが先に計算しておきたい部分は丸括弧で囲んでおきましょう。
比較演算子
数値といえばこれも忘れてはいけません。比較です。「大なり」「小なり」のアレ。比較のために使用する記号を比較演算子と呼びます。
算術演算子との大きな違いは、答えが「○(True)」か「×(False)」のどちらかしかないこと。
つまり比較演算子を使うということは、ユーザーがPythonに「こうだよね?」と確認している状態になります。
演算子 | 意味 | 例 | 結果 |
---|---|---|---|
> | 左辺が大きい(大なり) | 20 > 15 | True |
< | 左辺が小さい(小なり) | 20 < 15 | False |
>= | 左辺が右辺以上である | 50 >= 50 | True |
<= | 左辺が右辺以下である | 50 <= 50 | True |
== | 値が同じである | 10 ==100 | False |
!= | 値が同じでない | 10 != 100 | True |
普段の生活ではそこまで頻繁に使うものでもないかと思いますが、プログラミングではかなり使用頻度の高い演算子です。
「同じである」を表現するのに使用するのは「=」ではなく「==」と、イコール2つであることに注意しましょう。
小数(浮動小数点数)
小数点はドット「.」を使って表現します。試しに少数同士の割り算をしてみます。
print(1.2/5.3) #0.22641509433962265
特に難しくはありません。整数と少数が混在する計算もしてみましょう。
print(15/30) #0.5
print(15/5.0) #3.0
計算式の答えが少数であったり、式の片方が少数である場合、答えは少数で返ってきます。
ではもう一丁。
print(0.1+0.1+0.1) #0.30000000000000004
(゚д゚)!
これは厳密には間違い。テストであれば点数をもらえません。正解は0.3のはずです。なぜこんな間違いが起こるのか?
多くのプログラミング言語では少数を「浮動小数点数」として扱っているからですが、今の時点では深く掘り下げません。
多少難しくてもいいという方は、Pythonの公式ドキュメントを参照してみてください。
ここで頭に留めておきたいのはむしろ、整数と小数は、Pythonの内部では違うものとして扱われているということと、小数を扱う場合、厳密に言えば多少の誤差が生じる可能性があるということです。整数の「1+1+1」ではこの問題は起こり得ません。
特殊な数値
ここまでで整数と少数の計算、比較についてお話しました。
以下は少し特殊な数値として、2進数,8進数,16進数と指数表記、複素数をご紹介しますが、初学者の方はあまり使う機会も無いかと思うので、読み飛ばしていただいてかまいません。
n進数
Pythonでは通常の10進数の他に、2進数、8進数、16進数の数値を表現することも可能です。
それぞれ頭に数字の「0」と進数を表すアルファベットを付けると、そのあとに続く数値は指定された進数の数値であると解釈されます。
進数 | プレフィックス(接頭辞) | 例 | 10進数に変換すると |
---|---|---|---|
2 | 0b | 0b1010 | 10 |
8 | 0o(アルファベットのO) | 0o503 | 323 |
16 | 0x | 0x38fc | 14588 |
これをprint()の中に入れると、結果として10進数の数値が返ってきます。
print(0b11010) #26
print(0o72) #58
print(0x1f) #31
指数表記
指数表記も可能です。こちらは数値の後に「e」や「e-」と入力し、その後に数値を加えることで「10の何乗か」を指定します。
print(1.268e8) #126800000.0
print(314e-2) #3.14
上の例は1.268×108で1億2千680万、下は314×10-2で3.14になります。
複素数
最後に複素数です。一般的な計算では使いませんが、Pythonで公式サポートされているので一応触れておきます。虚数を使ったことが無い方は気にしないでOK。
実部の後に虚部を「j」を付けて表します。
print(3+4j) #(3+4j)