本文へスキップ
スキルアップカレッジ

変数とデータ型——数値・文字列・bool と型変換

レッスン2:変数とデータ型——数値・文字列・bool と型変換

このレッスンで学ぶこと

  • 変数の発想(値に名前を付けて持つ)を理解する
  • 4 つの基本データ型(整数 int・浮動小数点 float・文字列 str・真偽値 bool)を扱える
  • 文字列の操作(f 文字列・スライス・連結・代表的なメソッド)を身につける
  • 数値の演算(四則・剰余・累乗)と組み込み関数を使える
  • 型変換(int/str/float)を理解する
  • None(何もない)の意味と使いどころを把握する
  • コメントインデントの基本ルールを理解する

前回のレッスンでは、Python の発想・歴史・業界での使われ方と、はじめての Hello World を体験しました。本レッスンから、いよいよ Python の言語そのものに踏み込みます。最初のテーマは「変数とデータ型」です。プログラミングは、値(数や文字)を扱う作業の連続です。値を保管し、加工し、判定し、表示する——その土台になるのが、変数とデータ型です。

変数の発想

プログラミングにおける「変数」は、「値に名前を付けて持つ箱」のような発想です。Excel のセルに名前を付けて参照する発想に似ています。

変数の使い方

Python では、変数を =代入します。

name = "山田"
age = 30
height = 170.5
  • name という変数に文字列 "山田" を代入
  • age という変数に整数 30 を代入
  • height という変数に小数 170.5 を代入

代入後は、変数名を書くだけで中身を参照できます。

print(name)    # 山田
print(age)     # 30
print(height)  # 170.5

再代入

変数の中身は、後から書き換えられます。

age = 30
print(age)  # 30
age = 31
print(age)  # 31

「変える数」と書いて「変数」と呼ぶ理由は、この再代入の性質に由来します。

変数名のルール

Python で変数名に使える文字には、ルールがあります。

ルール
英字(小文字・大文字)・数字・アンダースコア _ が使える nameagefirst_nameuser1
1 文字目に数字は使えない 1user、✅ user1
予約語(if・for・class などの Python が使う言葉)は使えない ifforclass
大文字小文字は区別される Namename は別の変数

慣習として、業務で使う変数名は「英小文字+アンダースコア」が一般的です(user_namefirst_login_date など)。これは Python の公式スタイルガイド PEP 8(最終レッスンで扱う)に沿った書き方です。

💡 ポイント 変数は「値に名前を付けて持つ箱」です。= で代入し、変数名を書くだけで中身を参照できます。変数名は英小文字+アンダースコアで書くのが Python の慣習です。

4 つの基本データ型

Python の値には「型」があります。本コースで最初に扱うのは、4 つの基本型です。

名前
整数 int 01-51001_000_000
浮動小数点(小数) float 0.03.14-1.5170.5
文字列 str "Hello"'Python'"山田"
真偽値 bool TrueFalse

型を調べたいときは、組み込み関数 type() を使います。

print(type(0))         # <class 'int'>
print(type(3.14))      # <class 'float'>
print(type("Hello"))   # <class 'str'>
print(type(True))      # <class 'bool'>

整数(int)

整数は、小数点を含まない数です。マイナスもゼロも整数として扱えます。

count = 100
loss = -3
zero = 0
print(count + loss)  # 97

大きな数を書くときは、桁区切りにアンダースコアが使えます(読みやすくする工夫)。

budget = 1_000_000  # 100 万
print(budget)        # 1000000

浮動小数点(float)

浮動小数点は、小数点を含む数です。「平均値」「金利」「身長」「気温」など、業務でよく出てきます。

average = 78.5
rate = 0.05
print(average * rate)  # 3.925

float の計算では、ごくわずかな誤差が出ることがあります(例:0.1 + 0.20.30000000000000004 になる)。本コースの基礎範囲では問題になりませんが、金額計算など精度が必要な場面では Decimal という別の型を使う知識が必要になります(守備範囲外)。

文字列(str)

文字列は、文字の集まりです。" または ' で囲んで書きます。

name = "Python"
greeting = 'Hello'
message = "Pythonの世界へようこそ"

"' のどちらでも書けますが、コース全体では " を中心に使います。なお、文字列の中に " を含めたいときは ' で囲む、' を含めたいときは " で囲む、というのが手っ取り早い方法です。

真偽値(bool)

真偽値は、True(真)または False(偽)のいずれかです。条件判定の結果として、よく登場します。

is_member = True
is_paid = False
print(is_member)  # True
print(is_paid)    # False

TrueFalse は最初の文字が大文字です。小文字の truefalse はエラーになるので注意します。

💡 ポイント Python の基本データ型は 4 つ:int(整数)、float(小数)、str(文字列)、bool(真偽値)。type() 関数で型を確認できます。

文字列の操作

文字列は業務でよく扱うので、基本的な操作を整理します。

文字列の連結

+ 演算子で文字列を連結できます。

first = "山田"
last = "太郎"
full = first + last
print(full)  # 山田太郎

数字を含めたいときは、文字列に変換する必要があります(後述の型変換)。

f 文字列(f-string)

複数の値を組み合わせた文字列を作るとき、もっとも便利なのが「f 文字列」(formatted string literal、エフ文字列)です。文字列の前に f を付け、{ } の中に変数や式を書けます。

name = "山田"
age = 30
message = f"{name}さんは{age}歳です"
print(message)  # 山田さんは30歳です

f 文字列は Python 3.6 以降で使え、本コースでも頻繁に登場します。型変換を意識しなくても、変数の値がそのまま埋め込まれます。

スライス——文字列の一部を取り出す

文字列の一部を切り出すときは「スライス」を使います。[開始:終了] の形で書きます。

text = "Python入門"
print(text[0])      # P(1 文字目)
print(text[0:6])    # Python(0 番目から 6 番目の手前まで)
print(text[6:])     # 入門(6 番目から末尾まで)
print(text[-2:])    # 入門(後ろから 2 文字)

注意点:Python の文字位置は「0 から数える」(0-indexed)です。1 文字目が [0]、2 文字目が [1]、という数え方になります。

代表的な文字列メソッド

文字列に対する代表的な処理(メソッド)を、表で整理します。

メソッド 内容
.upper() 大文字に変換 "hello".upper()"HELLO"
.lower() 小文字に変換 "HELLO".lower()"hello"
.strip() 前後の空白・改行を取る " hi ".strip()"hi"
.replace(old, new) 文字列を置換 "abc".replace("a", "z")"zbc"
.split(sep) 区切り文字で分割 "a,b,c".split(",")["a", "b", "c"]
len(text) 文字数を数える(組み込み関数) len("hello")5

これらは業務での文字列処理(CSV の整形、メール文面のテンプレート、入力データの掃除など)で頻繁に使います。

💡 ポイント 文字列の操作は f 文字列・スライス・代表的なメソッド(.upper().lower().strip().replace().split()len())を押さえると、業務での文字列処理の 8 割をカバーできます。

数値の演算

数値の演算は、Excel の数式と似た感覚で書けます。

四則演算と剰余・累乗

演算 記号 結果
足し算 + 3 + 4 7
引き算 - 10 - 3 7
掛け算 * 3 * 4 12
割り算(小数) / 10 / 4 2.5
割り算(整数の商) // 10 // 4 2
剰余(余り) % 10 % 4 2
累乗 ** 2 ** 8 256

割り算が /// で別記号になっている点に注意します。/ は常に小数(float)を返し、// は整数の商を返します(業務での割り算は / で問題ありません)。

よく使う組み込み関数

数値処理でよく使う組み込み関数を、表で整理します。

関数 内容
abs(x) 絶対値
round(x) 四捨五入(Python の round は「銀行家の丸め」で 0.5 は偶数に丸める点に注意)
round(x, n) 小数点 n 位で丸める
max(a, b, ...) 最大値
min(a, b, ...) 最小値
sum(values) 合計(リストなどの集まりに使う)
print(abs(-7))             # 7
print(round(3.7))          # 4
print(round(3.14159, 2))   # 3.14
print(max(1, 5, 3))        # 5
print(sum([10, 20, 30]))   # 60

💡 ポイント 数値の演算は四則演算と剰余・累乗が基本。/ は小数を返し、// は整数の商を返す違いを押さえます。absroundmaxminsum などの組み込み関数で、よく使う処理をカバーできます。

型変換

型の違う値を組み合わせるとき、型を揃える必要があります。これを「型変換」(キャスト)と呼びます。

主な型変換関数

関数 内容
int(x) 整数に変換
float(x) 浮動小数点に変換
str(x) 文字列に変換
bool(x) 真偽値に変換
# 文字列から整数
age_text = "30"
age = int(age_text)
print(age + 1)  # 31

# 整数から文字列
count = 5
message = "件数:" + str(count)
print(message)  # 件数:5

# 文字列から浮動小数点
price_text = "3.14"
price = float(price_text)
print(price * 2)  # 6.28

型変換のよくある間違い

# エラーになる例
int("abc")     # ValueError:数値でない文字列を int にはできない
int("3.14")    # ValueError:小数点を含む文字列は int に直接はできない(float を経由する)

# 正しい書き方
float("3.14")          # 3.14
int(float("3.14"))     # 3(小数点以下が切り捨てられる)

文字列を数値にするときは、中身が本当に数字かを意識する必要があります。業務では、CSV から読み込んだデータがエラーで読めないことがあり、原因の多くは「数字のつもりが数字じゃない文字(カンマ、円マーク、空白など)が混ざっている」ケースです。

bool への変換のクセ

bool() は少し独特なルールを持ちます。

print(bool(0))      # False
print(bool(1))      # True
print(bool(-1))     # True
print(bool(""))     # False(空の文字列)
print(bool("a"))    # True
print(bool([]))     # False(空のリスト、次回扱う)
print(bool([1]))    # True

「空っぽのもの」「0」が False に、それ以外が True になる、というのが Python の一貫したルールです。

💡 ポイント 型変換は int()float()str()bool() の 4 つが基本です。文字列を数値にするときは、中身に数字以外が混ざっていないかを意識します。bool への変換では「空っぽ」と「0」が False、それ以外が True になります。

None——「何もない」を表す道具

Python には、「何もない」を表す特別な値があります。それが None(ノン)です。

result = None
print(result)        # None
print(type(result))  # <class 'NoneType'>

None の使いどころ

  • 「まだ値が決まっていない」変数の初期値
  • 関数が何も返さないときの戻り値(次のレッスン 5 で扱う)
  • データベースの NULL に相当する状態
selected_name = None

# 後から値が決まる
selected_name = "山田"
print(selected_name)  # 山田

None と False の違い

NoneFalse は別物です。両方とも bool() で変換すると False になりますが、意味が違います。

  • False:「明示的に偽」「明示的に NO」
  • None:「値が存在しない」「未定」
print(bool(None))   # False
print(None == False)  # False(イコールでは別物)

業務での意味の違いを意識すると、ハマりにくくなります。

💡 ポイント None は「何もない」「まだ値がない」を表す特別な値です。False とは別物で、「明示的に偽」と「値が存在しない」の違いを意識します。

コメントとインデント

Python のコードを書くうえで、最後に押さえておきたいルールが 2 つあります。

コメント

# から行末までがコメント(実行されないメモ)になります。

# 単位は円
price = 1000

total = price * 1.1  # 税込み価格

業務のコードでは、「なぜこう書いたか」をコメントで残すと、半年後の自分や、引き継いだ同僚を助けます。一方、コードを読めばわかることをコメントに書くのは避けます。

インデント

Python は「インデント」(字下げ)でコードのまとまりを表現します。多くの言語が { } でブロックを区切るのに対し、Python はインデントを構文の一部として扱います。

# 良い書き方(インデントが揃っている)
if 80 <= score:
    print("合格")
    print("おめでとう")

# エラーになる書き方(インデントが揃っていない)
if 80 <= score:
    print("合格")
print("おめでとう")  # この行は if のブロック外と判定される

インデントは「半角スペース 4 個」が PEP 8 の推奨です。タブ文字とスペースの混在はエラーや混乱の原因になるので、エディタの設定で「タブをスペースに変換」しておくのが安全です。

💡 ポイント Python はコメントを # で書き、インデント(字下げ)でコードのまとまりを表現します。インデントは「半角スペース 4 個」が PEP 8 の推奨で、タブとスペースの混在は避けます。

講師の現場メモ:「f 文字列がなかった時代を知っているからこそ、ありがたい」

私(平野)が、IT コンサルティングファームに転じた 2018 年のことです。当時、多くのお客さま現場にはまだ Python 2 系のスクリプトが残っていました。Python 2 は 2020 年 1 月にサポート終了が決まっていたため、3 系への移行支援が大きな仕事の 1 つでした。

ある中堅製造業の社内システムで、報告書を自動生成する Python 2 のスクリプトを引き継いだことがあります。そのコードを見て、私は最初困惑しました。

# Python 2 時代のコード
name = u"山田"
age = 30
message = u"%sさんは%d歳です" % (name, age)
print message

文字列の前の u%s%d の使い分け、print に括弧がない(Python 2 の構文)——一見してわかりにくく、新しいメンバーに引き継ぐのに苦労していた、と現場の主担当の方は語っていました。

私はこのコードを Python 3 系に書き直しました。

# Python 3 + f 文字列で書き直し
name = "山田"
age = 30
message = f"{name}さんは{age}歳です"
print(message)

行数は変わりませんが、ぱっと見たときの意味の取りやすさが圧倒的に違いました。「これなら自分にも書けそうです」と、現場の主担当の方が言ってくれた瞬間が、印象に残っています。

f 文字列(f-string)は、Python 3.6 で 2016 年に導入された機能です。本コースで f 文字列をたっぷり使うのは、私が Python 2 時代の % 演算子や format() メソッドで苦労した記憶があるからこそ、皆さんには最初から読みやすい書き方を身につけてほしいと思っているからです。

業務で Python を書くときは、「動けばよい」ではなく「半年後の自分が読み直せるか」を意識します。f 文字列、わかりやすい変数名、必要なコメント——些細な工夫が、コードの寿命を伸ばします。本コースで「読める手を育てる」と繰り返すのは、Python は「書く時間」より「読む時間」のほうがはるかに長くなる言語だからです。皆さんも、最初から「読みやすさ」を意識して書く習慣を身につけてください。

まとめ

このレッスンでは、以下のことを学びました。

  • 変数は「値に名前を付けて持つ箱」。= で代入し、変数名で参照する
  • Python の基本データ型は 4 つ:intfloatstrbooltype() で型を確認できる
  • 文字列は f 文字列・スライス・代表メソッド(.upper().lower().strip().replace().split()len())で扱える
  • 数値の演算は四則・剰余・累乗。/ は小数、// は整数の商を返す
  • 組み込み関数:absroundmaxminsum がよく使う
  • 型変換:int()float()str()bool()bool() は「空っぽ」「0」が False
  • None は「何もない」を表す特別な値。False とは別物
  • コメントは #、インデントは半角スペース 4 個が PEP 8 の推奨

次のレッスンでは、Python の制御構造を扱います。条件分岐(if/elif/else)と繰り返し(for/while)、比較演算子と論理演算子break と continue——コードに「条件と繰り返し」の発想を組み込みます。


確認クイズ

このレッスンの理解度をチェックしましょう。