【独学】Pythonのデータ型をサヴォア邸の情報で解説!

Pythonのデータ型って何?という人に向けて書かれた記事です。

今回からPyCharmを使ってPythonプログラミングを始めます。始めに理解しておきたいのが【データ型】についてです。

プログラミングの勉強をしたことがある人は知っているかもしれませんが、どんなデータであるかを区別してあげることでコンピュータが処理できるようになります。

panna

どんな種類のデータがあるのか説明しています。

読者像に建築業界の方をイメージしているので、建物のはなしが出てきます。

とっつきにくいプログラミングを建築を通して学ぶことで、イメージしやすく理解が進みます!

この記事はノンプログラマーのための「建築で理解するPython入門」の基礎編5回目です。

この記事を書いた人

panna(パンナ)| 建築デジタルの専門家

大学院で建築学を専攻し、修了後は設計事務所へ入所。現在はBIMの仕事をしています。
建築デジタル歴は10年以上。Rhino+GrasshopperとPythonを学生時代から使い始め、2017年からAutodesk RevitでBIM推進開始。

この記事のコンテンツ

建築情報でざっくり分かるデータ型のはなし!その1

プログラミングを始める方にとってはデータ型なんて言われてもピンとこないと思います。

建築業界で見かける身近な情報(データ)をデータ型に当てはめて説明します。

panna

今回からようやくPython学習が始まりますよ!

ざっくり解説、データ型ってなんだろう

まずは建築業界におけるデータって何だろうと考えてみましょう。

「部材の名称」や「部屋の面積」、「家具の個数」など、様々なデータがあることに気が付きます。

panna

みんな無意識のうちに建物をデータ化しています。

仮に名前が付けられなかったり、数字が使えなかったりしたら建物の生産活動ってとっても大変ですよね。(想像するだけで怖い…

プログラミングの世界では、コンピュータがそのデータたちを操作しやすいように【型】に当てはめて扱います。

データ型には例えば次のような種類があります。

スクロールできます
型の名前型の説明例えばこんなもの
int型整数1, 100, 365
float型浮動小数点型:
今は難しく考えすぎず
小数ってことでOK
0.05, 3.25
str型文字列“東京タワー”, “エッフェル塔”
ダブルクォーテーション ” もしくは、
クォーテーション ‘ で囲む
bool型真偽:
正しいか正しくないか
みたいな感じ
true, false
list型リスト:
色んな型のデータに
順番を付けて
箱にしまったもの
(あとで補足説明)
[0, 1, 2], [“東京タワー”, “エッフェル塔”]
角かっこ[ ]で囲む!
dict型辞書型:
キーとバリューのセット
(あとで補足説明)
{“名前”:”たろう”, “年齢”:20}
キー:バリューのセットを波かっこ{ }で囲む

データ型はまだまだたくさんありますが、基本的なところを理解しましょう。

建築の情報をデータ型に当てはめてPythonで書いてみる

表だけ見てもあまり分からないかもしれないので、実際にPythonでコードを書いてイメージしましょう。

皆さんご存知のサヴォア邸のデータに焦点を当てて考えてみます。

サヴォア邸のデータについて
  • 設計者 – ル・コルビュジェ、ピエール・ジャンヌレ
  • 住所 – 82 , rue de Villiers, 78300 , Poissy
  • ヴィラ面積 440m2
  • 用途 – 専用住宅
panna

このサヴォア邸のデータを使って、データ型を理解しましょう!

まず、PyCharmを起動して前回作成したPyCharmプロジェクト「PyArchi」を開きましょう。

次の画像のようにPyArchiフォルダを右クリックして、Pythonファイルを作成します。

Pythonファイルの名前は「DataType」として新しく作成してみましょう。

PyArchiフォルダに「DataType.py」が作成されました。ウィンドウ下側にある「Terminal」をクリックして下さい。

すると、PyCharmからコマンドプロンプトを立ち上げられます。立ち上げたコマンドプロンプトはウィンドウの下側に出てくると思います。

今、DataType.pyは中身がない状態です。Pythonスクリプトを書いて、コマンドプロンプトから実行してみましょう。

建築で理解するstr型!

str型は文字列を表すものだと先ほどの表に書きました。Pythonでは、ダブルクォーテーション「”」もしくは、シングルクォーテーション「’」で囲むことで文字列を表現します。サヴォア邸の設計者をstr型(文字列)であらわしてみましょう。

# 半角シャープの後ろにはコメントを書くことができます
# 設計者名は文字列で表記されるのでstr型
print("サヴォア邸の設計者はル・コルビュジェとピエール・ジャンヌレである。")

このコードを「DataType.py」にコピーペーストして上書き保存してください。そして、コマンドプロンプトに次のコードを打ち込んでEnterキーを押して実行しましょう。

実行すると、次のようにコマンドプロンプトに表示されます。

おめでとうございます!
Pythonを使ってstr型のデータを表示できました。

住所の数字はstr型にならないの?

サヴォア邸のデータの中には住所があります。住所には数字がありますね。

住所は文字列なのでstr型として扱います。

数字は数字でも文字列としての数字が使われています。そのため、住所に使われている数字は、一般的にはstr型として扱われます。

ちょっとここで休憩をかねて寄り道をします。

皆さんはstr型のデータを表示する方法を理解したのですが、別の建物の名前と設計者を表示させたい時に便利な方法があります。

panna

変数の使い方を覚えましょう!

変数を使ってstr型を表示してみよう

Pythonだけでなくプログラミングには変数というデータ領域があります。このままだとちょっと意味不明なのでざっくり説明します。

変数はデータに名前を付けて扱いやすくするものとイメージしましょう。

panna

変数の使い方を説明します。

先ほど理解したstr型のデータを見てみます。

サヴォア邸の設計者はル・コルビュジェとピエール・ジャンヌレである。

固有名詞が3つ出てきます。次の3つですね。

  • サヴォア邸
  • ル・コルビュジェ
  • ピエール・ジャンヌレ

この3つの固有名詞に名前を付けて説明するとしたらどんな名前を付けますか?

例えばこんな名前が付けられます。

  • サヴォア邸 → 建物名
  • ル・コルビュジェ → 設計者名01
  • ピエール・ジャンヌレ → 設計者名02

このカテゴライズで先ほどの文章を見てみると、次のようになります。

サヴォア邸の設計者はル・コルビュジェピエール・ジャンヌレである。
【建物名】の設計者は【設計者名01】【設計者名02】である。

建物名、設計者名01、設計者名02に別の文字列を入れても意味が成り立ちますよね。

ここで、Pythonに戻って「コードを使いまわせそうな感じ】に書き換えてみようと思います。

変更前のコード

# 半角シャープの後ろにはコメントを書くことができます
# 設計者名は文字列で表記されるのでstr型
print("サヴォア邸の設計者はル・コルビュジェとピエール・ジャンヌレである。")

# 表示される内容「サヴォア邸の設計者はル・コルビュジェとピエール・ジャンヌレである。」

データに名前を付けて書き換えてみると次のような感じです。

変更後のコード

# 半角シャープの後ろにはコメントを書くことができます
# 設計者名は文字列で表記されるのでstr型
architecture_name = "サヴォア邸"
architect01 = "ル・コルビュジェ"
architect02 = "ピエール・ジャンヌレ"

# str型のデータは「+」でくっつけることができます。例:"1"+"1"→"11" (数字でもstr型だと2にはならない!)
print(architecture_name + "の設計者は" + architect01 + "と" + architect02 + "である。")

# 表示される内容「サヴォア邸の設計者はル・コルビュジェとピエール・ジャンヌレである。」

建物が変わった時に使いまわせるようにデータを整理しようとすると、データを格納したりデータの在りかを示す【変数】を使用するのが便利です。

ここでは、「サヴォア邸」というstr型のデータを「architecture_name」という変数に代入して、print関数で表示させています。

変数はただデータを代入しているだけなので入れ替えられます。

データの在りかを示す変数を使うだけで、データはとっても扱いやすくなります。

変数はとっても便利!

「print()」とは、括弧の中に書いたデータを表示してくれる関数*でした。括弧の中には、変数やデータをそのまま入れることができます。

*関数はある処理をまとめたもの。print関数はデータを表示する処理を行う。また別の記事で詳しく解説します。

次の例では、どちらのprint関数も「ル・コルビュジェ」と表示します。

# サヴォア邸の設計者名はstr型
architect = "ル・コルビュジェ"

# print関数を使ってデータを表示する
print("ル・コルビュジェ")
print(architect)

この場合であればどちらを使ってもいいですが、設計者名がめちゃめちゃ長い場合はどうでしょうか。

世界一長い名前はファーストネームとミドルネームだけで次のようになるようです…フルネームは700文字以上あるらしい…

「Adolph Blaine Charles David Earl Frederick Gerald Hubert Irvim John Kenneth Loyd Martin Nero Oliver Paul Quincy Randolph Sherman Thomas Uncas Victor Willian Xerxes Yancy Zeus」

世界一 長い名前|note:外部サイト

例えば、この長い名前を何回も表示させたいとき、毎回打つのって大変だし間違えてしまいますよね…?

そういう時には変数に代入して扱うと便利です!

この段階で説明できる内容だけでも使う意義を分かってもらえると思います。

そして、変数は中身を入れ替えることもできるので汎用性の高いコードになります。

# サヴォア邸の設計者名はstr型
architect = "ル・コルビュジェ"

# print関数を使ってデータを表示する
print(architect) # 「ル・コルビュジェ」と表示される

# 変数の中身を入れ替える
architect = "アルヴァ・アアルト"

# print関数を使ってデータを表示する
print(architect) # 「アルヴァ・アアルト」と表示される

サヴォア邸のstr型以外のデータのデータ型をみてみよう

長い寄り道をしました。str型以外のデータについても見ていきましょう。

  • 面積 440m2

面積を表すデータには、整数が使われていますが、整数を表すデータ型はint型と呼ばれています。

「DataType.py」の中身を消して次のように書き換えてみましょう。

# 面積を表すデータは整数なのでint型
area = 440

このコードは、「変数areaには440というデータ(int型)が代入されている」という意味を持ちます。

panna

Pythonは自動で型を認識してくれるので、明示的に型を宣言しなくてもよいです。

# 面積を表すデータは整数なのでint型
# 明示的に型を宣言したい場合は次のように書く
area: int = 440

定義した変数はint型のデータを持つので、四則演算に使えます。

例えば、面積440㎡の建物が2棟ある場合の面積の合計値を求める場合、次のようになります。

# 面積440㎡の建物が2棟ある場合の面積の合計値を求める
area1 = 440
area2 = 440
print(area1 + area2)

# コマンドプロンプトには880が表示されます

次の型の説明に移ります。

サヴォア邸の用途に関するデータは次の通りです。

  • 用途 – 専用住宅

突然質問ですが、「サヴォア邸の用途は【専用住宅】ですか?」と聞かれたら答えは「正しい」ですよね。

では、「サヴォア邸の用途は【工場】ですか?」と聞かれたら「間違っている」となります。

この「正しい」「間違っている」を、Pythonでは「true」「false」というデータとして扱います。

真偽を示す「true」「false」というデータの型をbool型と呼びます。

panna

真偽の判定のやり方は基礎編9回目に登場します。

データ型についてはあとは「list型」と「dict型」について知っておくべきですが、一度に全て覚えるのは大変なのでここで一区切り。

「list型」と「dict型」は次の基礎編6回目と7回目でそれぞれ解説します。

サヴォア邸の情報とデータ型の関係その1のまとめ

その1では、次のサヴォア邸の情報をもとに次のデータ型について説明しました。

今回解説したデータ型

str型:文字列型。住所とかなら数字があっても文字列型になる。
int型:整数型。計算に使える。
bool型:正しいか間違っているかを示すtrueとfasleの2パターン。

データ型の説明の中で変数についても話しました。

変数って何?
  • 変数:データを格納したり代入したりするデータ領域
  • 感覚的に言えばデータに名前を付けて扱えるようにするかんじ
  • 変数名は自由に決められる(あんまり長いのは好まれない)
  • 変数は代入しているだけなので値を入れ替えられる
  • 関数の中にいれて扱う事ができる:print(変数)で変数を表示するなど

次回は引き続きサヴォア邸をテーマにして、list型の説明を行います。

「【独学】建築設計でかんたんPython入門!」シリーズのほかの記事はこちらからどうぞ。

ためになったらシェアお願いします!

コメント

コメントする

この記事のコンテンツ