【Python】いちから始めるプログラミング

いまや義務教育でも学ぶプログラミングを1から始めよう!!

こんにちは!今日もプログラミング講座をしていきたいと思います!今日は前回の告知どうり数値について説明していきます。

 

2.数値

まずは一番単純である組み込みデータ型からやっていきます。

 

・ブール値

 この値はTrueかFalseの2種類のみです。そのものが真か偽かをみることができます。

 

・整数

 小数点以下がない数値のことを指します。

 

浮動小数点数

 小数点以下が存在するものや、10e5のような指数表現を指します。(10e5=10の5乗)

 

(1)ブール値

ブール値についてもう少し説明していきます。これは任意の1つの値を受け付けます。値が0の場合の数値はFalse、それ以外はTrueとなります。

試しに次のプログラムはどうなるでしょうか。

 

bool(5)

bool(True)

bool(-13)

 

この上の3つはすべてTrueと表示されます。

f:id:Reate:20211213152429p:plain

次の3つはFalseと表示されます。

 

bool(0)

bool(0.0)

bool(False)

 

f:id:Reate:20211213152654p:plain

bool値がどのように活用できるかはまた後で説明していきます。

 

(2)リテラル

みなさんリテラル値がなにか覚えていますか?

リテラル値というのは文字列や数字などそれ自体で表されるもののことです。

5や0などがリテラル値です。

 

1.数字(1~9)の前に0を置いてはいけません。

2.しかし整数の先頭に0b,0x,0oを置くことは大丈夫です。

 

数字だけのもの(434 , 76など)は正の整数を示します。数字の前に「+」をおいても値に変化は起きません。

f:id:Reate:20211213154136p:plain

負の整数を表すときは数字の前に「-」をつける。

また、1000を表すときに1,000と書くことが多いが「,」は使うことが出来ないので注意が必要です。もし使った場合次のようになってしまいます。

f:id:Reate:20211213160104p:plain

カンマ「,」の代わりにアンダースコア「_」を使うことは可能です。プログラムを行った場合は無視されます。

f:id:Reate:20211213160313p:plain

(3)演算

演算は次のように行います。

f:id:Reate:20211213161348p:plain

1つずつ見ていきましょう。

「+」と「-」は予想どおりだと思います。

 

8+9

9-8

f:id:Reate:20211213161609p:plain

数値と演算子は好きなだけ使用可能です。

 

8+6+98+3+5-4+8-4

 

f:id:Reate:20211213161800p:plain

乗算はかけ算のことです。

 

6 * 4

5 * 6 * 2 * 9 * 5

 

f:id:Reate:20211213162031p:plain

除算にすいては二種類あるので注意です。

 

1つ目はよくやる割り算です。

 

14 / 5

 

この場合は浮動小数点数まで計算を行います。

f:id:Reate:20211213162352p:plain

2つ目は整数の結果のみを表示します。

14 // 5

 

f:id:Reate:20211213162543p:plain

 

要するに2あまり4という答えの2を表示しているということです。

そして2あまり4のあまりの4を表示するのが次のやり方です。

 

14 % 5

f:id:Reate:20211213162924p:plain

ではまとめて2と4を得ることは出来ないのでしょうか?

そういうときは「divmod()」を使うことで求めることが出来ます。

 

divmod(14 , 5)

 

f:id:Reate:20211213164957p:plain

 

(4)整数と変数

今までのものはすべてリテラル値を使用していますが変数を用いても行うことが出来ます。

 

x = 67

x - 16

 

これはx - 16、つまり67 - 16の答えを表示してくれます。

f:id:Reate:20211213163456p:plain

このときxの値は変わっていません。ではxの値を変えるにはどうしたらよいでしょうか。次のように書きます。

 

x = 67

x = x - 16

x

 

f:id:Reate:20211213163810p:plain

xの値を51にすることが出来ました。

また、演算を特殊な書き方にすることも出来ます。次のものはどういった意味を持つでしょうか。それぞれx,y,zの値を予想してみましょう。

 

x = 95

x -= 3

y = 63

y += 5

z = 20

z *= 2

print(x)

print(y)

print(z)

f:id:Reate:20211213164429p:plain

正解はこのようになります。x,y,zはそれぞれ

x = 95 - 3

y = 63 + 5

z = 20 * 2と同意義ということです。

 

(5)優先順位

それではつぎのプログラム

 

2 + 5 * 4

 

はどのような答えが出るでしょうか?自分たちだったら乗算が先なので5*4=20にしてから+2をして22と答えを出しますよね。機械はどうなるでしょうか?

f:id:Reate:20211213165612p:plain

機械も同じように乗算、除算を先に計算してくれます!!

「+」や「ー」は後回しにされます。

では、次のプログラムはどうなるでしょうか。

 

-4 ** 2

 

「**」は指数の演算子となります。よってこれは-4の2乗ですね。よって答えは16。簡単ですね。しかし、、、

f:id:Reate:20211213170011p:plain

pythonの答えは-16になってしまいます。

先ほども言ったようにpythonでは「+」や「-」を後回しにしてしまいます。要するにpythonでは-4**2を-(4**2)ととらえてしまっているのです!!ではどのようにすれば本当の値を出せるのでしょうか?

 

(-4) **2

こうすることで「-」を引き算として見ずに「-4」という項としてみてくれます。

f:id:Reate:20211213170526p:plain

しっかりとした答えの表示に成功しました!!

 

(6)基数

みなさん基数とは何か分かりますか?

基数とは簡単にまとめると何進法なのかです。大体使うのは10進法ですよね。

pythonでも特に指定がなければ数字は10進法と捉えられます。

 

2進法は数字の前に0b

8進法は数字の前に0o

16進法は数字の前に0x    をつけます。

 

0b10は2進法の10,0o10は8進法の10,0x10は16進法の10となります。

 

10をたとえに2,8,16進法を10進法に変換していきましょう。

 

0b10

0o10

0x10

 

これは次のような結果が出ます。

f:id:Reate:20211213230512p:plain

これはいくつかの進数で表された数字を10進法に変換するというものです。

では10進法を2,8,16に変換する方法はないのでしょうか。

それが次のやり方です。2,8,16進数と順番にbin(),oct(),hex()で求めることが出来ます。

お気づきでしょうが、先ほどの0の後の英字は上のものを略称した形です。

それでは50を例にそれぞれ試していきましょう。

 

x = 50

bin(x)

oct(x)

hex(x)

 

これをそれぞれ行うと次のようになります。

f:id:Reate:20211213232058p:plain

 

ちなみに16進数の場合は数16個必要になります。2進数の時は0と1の2個を使いますよね。では16の時は0~15を使うのでしょうか。残念ながら1桁の数字しか使うことは出来ないので10~はA,B,C~となっていきます。

 

(7)chr , ord

この2つの関数は整数を文字コードに、文字コードを整数に変換するものです。

たとえば65という数字に対応する文字コードはAになります。それを見るには

 

chr(65)

 

というプログラムを使います。逆にAを数字で表すには

 

ord('A')

 

というプログラムを使います。

f:id:Reate:20211213233142p:plain

(7)型の変換

python整数以外のデータ型を整数に変換するにはint()関数を用います。int()関数を用いると小数点以下が切り捨てられ、整数で帰ってきます。

単純なもので行くとブール値です。ブール値は先ほど説明したとおりtrueとfalseのみですよね。そしてtrueが1、falseが0となります。よって、

 

int(True)

int(False)

 

は次のようになります。

f:id:Reate:20211213233729p:plain

逆に整数をtrue,falseにするには先ほどやったbool()関数を用います。

 

bool(1)

bool(0)

 

f:id:Reate:20211213233948p:plain

次に浮動小数点数を整数に変換してみましょう。

 

int(3.14)

int(1.0e5)

 

f:id:Reate:20211213234427p:plain

 

このint()関数と先ほどの基数を組み合わせてみましょう。

()内の文字列が10進数以外の場合は進数を下のように指定できます。先ほどと同様に10を用いて試してみましょう。

 

int("10" , 2)

int("10" , 8)

int("10" , 16)

 

カンマの後の数字が進数を表します。上から2,8,16進数ということですね。

f:id:Reate:20211213234902p:plain

ちなみに明らかに数値でないものを変換しようとするとエラーが起きます。(整数を整数に変換しようとするとエラーにはなりませんが何も起きません。)

 

(8)浮動小数点数

浮動小数点数は小数点を持つ数字のことです。pythonではfloatト呼ばれることが多いです。float()関数により整数などを浮動小数点数に変換することが出来ます。

 

float(True)

float(83)

float(1.0e5)

 

これは次のようになります。

f:id:Reate:20211213235625p:plain

整数と浮動小数点数を混ぜて演算を行うときは浮動小数点数に合わせられます。

 

12 + 8.0

 

f:id:Reate:20211213235821p:plain

 

今日の講義はここまでとします。見ていただきありがとうございました!!次はついに2行以上を使うプログラムif()関数を用います!是非見てください!!

 

(9)練習問題

・次の数字はtrueかfalseかを答えよ。

(1)-30 (2)0.0 (3) 1

・18÷5の(1)割り切れた答え、(2)切り捨てたときの答えと余りを表示せよ。(2)は同時に表示してみよう。

・x = 4のときxを23+xの答えに変換しよう。

・次のものはどのような意味を持つだろうか。(x=22とする)

(1) x +=3  (2)x *=4 (3)x -=4

・-6**2を行うとき計算が間違ってします理由は何か。また、正しくするにはどうすればよいか。

・18(10進数)を2,8,16進数に変換せよ。

 

 

前回の答えを載せておきます!!

f:id:Reate:20211214001335p:plain