Python♪基本:まず、最初はint型、float型、str型と算術演算子ですね。

中1のゆうちゃん(偽名で~す)との勉強会の2回目です。いろいろ、データ型はあるけれど、最初に覚えなくちゃいけないのは、int()、float()、str()と算術演算子ですね。網羅的に覚えるのなら本を読めばよいわけで、ゆうちゃんには優先順位の高いものだけ覚えて、雰囲気をつかんでもらいます。

というわけで、親戚のゆうちゃんが、またまた、やってきました。前回、お茶をしたので、お菓子を持ってきてくれました。「お小遣いで買ってきたんだよ。」とうれしいことを言ってくれます。ゆうちゃん!今回は、データ型の勉強ですよ~。

0.ゆうちゃんとPythonシリーズ

この記事は「ゆうちゃんとPythonシリーズ」の記事です。一連の記事は、以下のリンク集を参照してください。

中学生のゆうちゃんとPythonシリーズ

なお、それぞれの記事は、シリーズの中でそれまでに習った文法を使ってサンプルコードを考えています。実際には、もっと、効率のよい書き方があるかもしれませんが、ご了承ください。

1.int型、float型、str型

私たちの会話の中で単語が「数字」なのか「文字列」なのかなんてことを、いちいち考えません。しかし、コンピューターはデータの種類(データ型)がなんなのかを、いつも考えながらコードを実行します。もし、1つでもデータ型がわからなければ、「わからないので、もうやめます」とエラーを出して止まってしまいます。

私:「どう?ここまでわかる?」
ゆうちゃん:「わからないので、もうやめます」「・・・」「うそうそ、わかるよ。」
(といった具合でゆるーりと勉強が進みます)

では、なぜ、データ型を区別しなければならないのでしょうか。それは、コンピューターはデータを処理するときに、データ型によって、それぞれ別の方法でデータ処理をしているからです。例えば、「少数と少数」の計算をする場合と、「整数と整数」の計算をする場合は、実はコンピューターの中では違う方法で計算を行っています。少数の計算のほうが整数よりも複雑ですから、最初から整数だとわかっていれば、小数よりも効率のよい計算をすることができるのです。
さて、次に文字列と数字を比べてみましょう。’hello, world!’という文字列と、3.14という数字があったとします。文字列では単語の最初を大文字にするとか、文章を追加するといった処理が主な処理になります。それに対して、数字は、掛け算や足し算といった計算が主な処理になります。
つまり、整数なのか、少数なのか、文字列なのかをはっきりさせた方が効率よくデータを処理することができるのです。
したがって、プログラムでは、データを使う前に、その種類(データ型)を必ず決めなければならないというルールがあります。どのようにしてデータ型を決めるのかについては、後回しにして、まずは、どのようなデータ型があるのかを覚えましょう。

他にも色々なデータ型がありますが、まずは、int型、float型、str型を覚えます。

(1) int型(イントがた)

整数です。
※インテジャーIntegerの略 ※インテジャーと読むのは少数派

(2) float型(フロートがた)

浮動小数点数(ふどうしょうすうてんすう)です。
「浮動小数点数」難しい言葉ですね。簡単にいうと「少数」です。3.14が少数(float型)なのはわかりやすいですが、整数の「5」でも「5.0」と書くと、コンピューターの中では少数(float型)として扱われることになるのが、ポイントです。

(3) str型(ストリングがた)

文字列です。
※ストリング,Stringの略。エスティーアールと読むのは少数派。ストラは微妙かな?まあ、使う人が増えればそれが正となるのが言葉の世界ですけど。ストロングとかストロングスは間違い。ゲームのしすぎです。ゲームキャラの強さのパラメーターではありません。
文字列は、’abc’, “abc”のように文字列にしたい言葉の 両側に半角の「’」や「”」をつけます。では、「3.14」と「’3.14’」を比較してみましょう。「3.14」は数字で、「’3.14’」は文字列です。気を付けないと間違えます。
なお、「”」よりも「’」を使っている人が多いようです。

(4) print()による出力例

「Hello, World!」の出力で使った命令文のprint()は、括弧の中身を出力する関数(命令文)です。そしてprint(‘Hello, World!’)では、括弧の中に入っているのは‘Hello, World!’という文字列を出力したのです。それに対して、数字の出力はprint(3.14)となります。print()は、文字列でも数字でも出力できる関数です。
関数によって、使えるデータ型が決まっているので、気を付けましょう。例えば絶対値を計算するabs()は数字しか使えませんから、abs(-5)はo.k.ですが、abs(‘-5’)はエラーになります。関数は「使えるデータ型が決まっている」ということだけ覚えて、あとは、使いながら覚えましょう。

以下、print()を使った例です。

#コード01
print('Hello, World!')
print(3.14)
print(abs(-5))
#出力01
Hello, World!
3.14
5

2.算術演算子

次に、整数や少数で計算するときの計算記号を算術演算子(さんじゅつえんざんし)といいます。なお、算術演算子はすべて半角です。

 (1)算術演算子一覧

「//」「%」は、どちらが商で、どちらがあまりか忘れてしまいがちです。
覚え方として、「//」と「商」は共通点があります。 「//」 は「/」が2本。「しょう」は「しょ」「う」の2文字です。一方、「%」と「あまり」は、「。」「/」「。」、「あ」「ま」「り」と3つです。かなり、強引ですが、私のホームページ「Python♪の神様」流の覚え方です。

算術演算子意味
+たす1 + 2  →  3
ひく5 – 3  →  2
*かける5 * 3  →  15
/割る3 / 2  →  1.5
**累乗(るいじょう)2 ** 3  →  2の3乗  →  2 × 2 × 2  →  8
//7 // 2  →  7 ÷ 2 = 3 あまり 1  →  3
%あまり7 % 2  →  7 ÷ 2 = 3 あまり 1  →  1

 (2) 算術演算子の使い方

では、実際に計算してみます。ここで大切なのは計算結果が整数になるのか少数になるのかがわかるようになることです。

(a) 整数と整数の計算 → 整数
※割り算のときだけは整数同士でも少数になる。
※割り算では、例え、割り切れても少数になる。
(b) 整数と少数の計算 → 少数
(c) 少数と少数の計算 → 少数

なお、下の結果で面白いのは「3.14 + 1 → 4.140000000000001」となっていることです。コンピューターって、計算が得意そうに見えて、きっちりした少数計算が苦手なんです。整数の計算は人間の計算と同じように計算できますが、少数の計算では時々微妙に答えがずれます。少数の計算は苦手ということを覚えておきましょう。

#コード02
print(5 + 3)      #intを出力
print(3.14 + 1)      #floatを出力
print(5 - 3)      #intを出力
print(5 - 3.0)      #floatを出力
print(5 * 3)      #intを出力
print(5.0 * 3)      #floatを出力
print(5 / 3)      #floatを出力
print(6 / 2)      #割り算の結果は、割り切れてもfloatになる。
print(3 ** 2)      #intを出力
print(3.0 ** 2)      #floatを出力
print(3 ** 2.0)      #floatを出力
print(5 // 3)      #intを出力
print(5 % 3)      #intを出力
print(5.3 // 3)      #floatを出力
print(5.3 % 3)      #floatを出力
#出力02
8
4.140000000000001
2
2.0
15
15.0
1.6666666666666667
3.0
9
9.0
9.0
1
2
1.0
2.3

少数の計算が苦手といっても、無視できそうなぐらい小さな誤差しかでません。でも、この誤差が積み重なったり、無視できない場合もあるので気をつけましょう。
まだ、勉強していない内容ですが、「if文」を使うと、条件によって実行する内容を変えることができます。例えば下のコードでは(3.14+1)と4.14が等しいなら、「等しい」を出力し、等しくないなら「等しくない」を出力するプログラムです。
しかし、中学生でもできる(おっと、ゆうちゃん、ごめん)問題なのに、コンピューターは間違えてしまいました。4.140000000000001と4.14は等しくないと判断したのです。少し見ただけでは見つけるのが難しいエラーにつながる可能性があります。
コンピューターはすごい奴ですが、どんなにすごい奴でも弱点があります。繰り返しますが、コンピューターは少数の計算が苦手なのです。

#コード03
if 3.14 + 1 == 4.14:
    print('等しい')  #3.14 + 1 と 4.14が等しい時に実行
else:
    print('等しくない')  #3.14 + 1 と 4.14が等しくない時に実行
#出力03
等しくない

 (3) 算術演算子の優先順位

最後に、算術演算子の優先順位です。「+」「-」よりも「*」や「/」の方が優先順位が高く、先に計算されます。さらに累乗「**」の方が優先順位が高いのです。ここまでは、算数と同じなので、わかりやすいと思います。
商「//」や、あまり「%」は、算数ではあまりなじみがないですが、「*」「/」と、優先順位が同じだと覚えておきましょう。

「/」と「//」は、見た目が似ているし、優先順位も同じ。という具合に覚えておけば、忘れないかもしれません。

(1) 一番最初に計算する:「**」
(2) 次に計算する:「*」「/」「//」「%」
(3) 一番最後に計算する:「+」「-」

ちょっと、難しかったかなと思ったけれど、「よくわかった、ありがとう!」と、笑顔で帰りました。よかった!

3.例題にチャレンジ

やっぱり、例題を自分で解かないと定着しないので、例題を作ってみました。計算式を書く練習です。あまり、センスのない問題ですけど・・。

(1) 例題

(a) 問題

長辺が5cm、短辺が3cmの長方形のせんべいが40枚 あるとき、このせんべいの面積の合計を出力するコードは以下の通りです。なお、単位(cm2)は出力はしていません。

#コード04
print(5 * 3 * 40)
#出力04
600

しかし、これでは簡単ですので、問題を難しくします 。

以下の(a)~(c)3種類のせんべいの入った袋が4袋あります。これを、せんべいが大好きな男子2人、女子3人で均等にわけるとき1人あたりのせんべいの面積はいくらになるでしょうか。
上のコード04と同様に、 単位(cm2)の出力は不要です。

(a) 半径5cmの円形のせんべいが20枚
(b) 1辺10cmの正方形のせんべいが30枚
(c) 長辺が5cm、短辺が3cmの長方形のせんべいが40枚

※円周率は3.14として計算しましょう。
※()が必要ないところは、できるだけ()を省略しましょう。
※正方形の面積のように同じ数を2回かけるときは10×10ではなく、10の2乗としましょう。
※男の子2人、女の子3人は暗算ですぐに5人とわかりますが、2 + 3としてください。

「枚数ではなく、1人あたりの面積を調べる設定に無理がありすぎる。」「こんなに大量のせんべいを5人で分けて、いったい、どうするんだ~。」と言いたくなってしまいますが、許してください。ゆうちゃん、なにか、いい例題ないかしら。

(b) 答え

まず、「答を見る前に、ここをクリック」をクリックしてください。正解した場合の出力がわかります。答が違っていたら、できるだけ、解答は開かずに考え直しましょう。なお、ブラウザがGoogle Chromeではない場合には、最初から答が開いてしまっているかもしれません。その場合は、できるだけ答を見ないように隠すか、Google Chromeで立ち上げ直してください。

答を見る前に、ここをクリック (Google Chrome推奨)

==============(解答表示start)==============

#出力05
4136.0

==============(解答表示end)===============

(c) コード

解答の表示・非表示の切り替え (Google Chrome推奨)

==============(解答表示start)==============

#コード05
print((5 ** 2 * 3.14 * 20 + 10 ** 2 * 30 + 5 * 3 * 40) * 4 / (2 + 3))
#出力04
4136.0

==============(解答表示end)===============

私が実際に購入した教材のご紹介

以下、私が実際に購入したPythonの教材をまとめてみました。 Pythonを学習する上で、少しでもお役に立つことができればうれしいです。

Python♪私が購入したPythonの書籍のレビュー

UdemyのPythonの動画講座を書籍を買う感覚で購入してみた