2. 変数とデータ型の考え方を身に付けよう
目次
- 2.1 変数とは?数や文字を入れる「箱」のイメージ
- 2.2 整数・小数・文字列など、データ型を区別しよう
- 2.3 変数名の名付け方のポイント
- 2.4 文字列を操作する(文字の連結・分割など)
- 2.5 数字と文字の型変換をしてみよう
- 2.6 真偽値(True/False)と比較演算子で判断する
- 2.7 いろいろなデータ型を組み合わせる
- Ex.1 名前と年齢を入力し、「あなたは ◯ 歳です」と表示するプログラム
- Ex.2 2 つの数字を入力し、その合計を「◯ + ◯ = ◯」と表示するプログラム
この講座で使用する Google Colab の URL
2. 変数とデータ型の考え方を身に付けよう (Google Colab)
演習課題
Ex.2. 変数とデータ型の考え方を身に付けよう (Google Colab)
この講座で使用する Python, Jupyter Notebook のファイルと実行環境
Lesson 2: high-school-python-code (GitHub)
2.1 変数とは?数や文字を入れる「箱」のイメージ
プログラミングを始めると最初に出会う重要な概念の 1 つが「変数」です。変数は少し難しく聞こえるかもしれませんが、実は私たちの身近にあるものと同じような仕組みです。
変数の基本的な考え方
変数は、データを一時的に保存できる「箱」のようなものです。例えば、教室にある下駄箱を想像してみましょう。下駄箱には名前が書いてあり、その中に上履きを入れます。変数も同じように、名前(変数名)があり、その中にデータを入れることができます。
変数を使う基本の形
まずは簡単な例から見てみましょう:
変数にデータを入れる (代入する)
score = 85 # score という箱に 85 を入れる
name = "田中" # name という箱に "田中" を入れる
# 変数の中身を表示する
print(score) # 85 が表示される
print(name) # 田中が表示される
この例では、score
と name
という2つの箱(変数)を作り、それぞれに数値の 85
と文字列の "田中"
を入れています。
= 記号の意味 プログラミングでは、=
は「同じ」という意味ではなく、「右側の値を左側の変数に入れる」という意味になります。これを「代入」と呼びます。
変数の値は変更できる
変数の大きな特徴は、一度入れた値を後から変更できることです。
変数の値を変更する
score = 85
print("1回目のテスト:", score) # 1回目のテスト: 85
# 同じ変数に新しい値を代入
score = 92
print("2回目のテスト:", score) # 2回目のテスト: 92
name = "山田"
print("以前の名前:", name) # 以前の名前: 山田
name = "鈴木"
print("新しい名前:", name) # 新しい名前: 鈴木
変数を使うメリット
変数を使うことで、以下のような便利な機能が実現できます:
- データの再利用:一度保存した値を何度でも使える
- データの更新:値を簡単に変更できる
- 分かりやすいプログラム:数値の意味を変数名で表現できる
例えば、テストの平均点を計算する場合:
変数を使って平均点を計算する
math_score = 85
english_score = 92
total = math_score + english_score # 合計点
average = total / 2 # 平均点
print("平均点:", average) # 平均点: 88.5
Q: 変数名は日本語で書いても良いですか?
A: 技術的には可能ですが、一般的には英語で書くと良いです。その理由は
- 多くのプログラマーと共有しやすい
- プログラミング言語の予約語(if, for, while など特別な意味を持つ言葉)と区別しやすい
- 文字化けのリスクが少ない
などです。
日本語の変数名でも一応書ける (非推奨)
なまえ = "山田"
print(なまえ) # 山田
変数を使う時の重要なポイント
-
一つの箱には一つの値
- 一つの変数には、同時に一つの値しか入れられません
- 新しい値を入れると、前の値は消えてしまいます (上書きされます)
-
適切な名前をつける
- 変数の中身が分かりやすい名前をつけましょう
- 例:
score
(点数)、name
(名前)、age
(年齢)など
-
値を入れてから使う
- 変数は必ず値を入れてから使います
- 値が入っていない変数を使うと
NameError
という例外になります
値が入っていない変数を使うと例外になる
print(undefined_variable) # NameError: name 'undefined_variable' is not defined
2.2 整数・小数・文字列など、データ型を区別しよう
先ほど学んだ変数という「箱」には、いろいろな種類のデータを入れることができます。
しかし、ただ入れるだけではなく、そのデータが「どんな種類のものか」を理解することが大切です。これを「データ型」と呼びます。
基本的なデータ型
Python では主に以下のデータ型を使います:
色々なデータ型
# 整数型 (int)
age = 16
year = 2024
# 小数型 (float)
height = 170.5
weight = 58.3
# 文字列型 (str)
name = "鈴木"
message = '今日は晴れです'
# データ型を確認するには type() を使う
print(type(age)) # <class 'int'>
print(type(height)) # <class 'float'>
print(type(name)) # <class 'str'>
データ型の特徴と使い方
1. 整数型 (Integer: int)
整数型は、私たちが普段使う「1, 2, 3...」のような整数を扱うためのデータ型です。
整数型の例
students = 40 # クラスの人数
score = 85 # テストの点数
year = 2024 # 西暦
# 整数の計算
total = students + 5 # 足し算
double = score * 2 # 掛け算
2. 小数型 (Float: float)
小数型は、小数点を含む数値を扱うためのデータ型です。身長や体重、気温など、細かい数値を扱う時に使います。
小数型の例
height = 170.5 # 身長 (cm)
weight = 58.3 # 体重 (kg)
# 小数の計算
bmi = weight / (height / 100) ** 2 # BMI の計算
average = (80.5 + 92.0 + 88.5) / 3 # 平均点の計算
# その他の例
temperature = 22.8 # 気温 (度)
price = 1200.50 # 価格 (円)
小数計算の注意点 コンピュータの小数計算では、わずかな誤差が出ることがあります。例えば、print(0.1 + 0.2)
は
0.30000000000000004
と表示されます。
これは、小数を 2 進数で扱うコンピュータの特性によるものです。正確な計算が必要な場合は、別の方法を使う必要があります。
3. 文字列型 (String: str)
文字列型は、文字の並びを扱うためのデータ型です。名前、メッセージ、住所など、文字で表現するデータを扱います。String は英語で「糸や弦」という意味です。文字列は、文字 (character) の列 (string) という意味です。
文字列型の例
name = "山田太郎" # 名前
message = 'こんにちは' # メッセージ
address = "東京都渋谷区" # 住所
# 文字列の連結
full_message = "こんにちは、" + name + "さん"
print(full_message) # こんにちは、山田太郎さん
Q: 文字列を囲むのにシングルクォート(')とダブルクォート(")の違いはありますか?
A: 基本的な機能は同じです。ただし、以下のような使い分けがあります:
- 文字列の中にクォートを含める時(例:
"It's a nice day"
や'彼は"はい"と言いました'
) - 個人的には、基本的にはダブルクォートを使うのがおすすめです。
それぞれのボタンを押してみましょう!
↑ 上のボタンをクリックしてみましょう!
データ型を調べる
変数のデータ型を確認したい時は、type()
関数を使います:
様々な変数の型を確認する
age = 16
height = 170.5
name = "鈴木"
print(type(age)) # <class 'int'>
print(type(height)) # <class 'float'>
print(type(name)) # <class 'str'>
データ型の使い分け
データ型を正しく使い分けることで、次のようなメリットがあります:
-
適切な計算ができる
- 整数と小数では計算結果が異なることがある
- 文字列と数値は異なる演算ができる
-
エラーを防げる
- 異なるデータ型同士の予期しない操作を防ぐ
- プログラムの信頼性や安全性が高まる
データ型の違いによる計算の例
print(5 / 2) # 2.5 (小数の割り算)
print(5 // 2) # 2 (整数の割り算)
print("ABC" * 3) # ABCABCABC (文字列の繰り返し)
2.3 変数名の名付け方のポイント
プログラミングにおいて、変数名を適切につけることは非常に重要です。なぜなら、良い変数名は「プログラムの説明書」のような役割を果たすためです。
例えば、試験の点数を変数に代入する時は、x = 85
よりも exam_score = 85
の方が、何のための数値か分かりやすいです。
変数名をつける基本ルール
1. 使って良いもの
- アルファベット(a-z, A-Z)
- 数字(ただし先頭には使えない)
- アンダースコア(
_
)
2. 使ってはいけないもの
- 日本語の漢字・ひらがな(技術的には使えますが、避けましょう)
- スペース
- 記号(
_
以外) - Python の予約語(
if
,for
など)
変数名の付け方の良い例
student_name = "山田" # 生徒の名前
test_score = 85 # テストの点数
total_price = 1200 # 合計金額
first_name = "太郎" # 名前(氏名の一部)
birth_year = 2007 # 生まれた年
変数名の付け方の悪い例
なまえ = "山田" # 日本語は避ける
test score = 85 # スペースは使えない
1st_place = "金賞" # 数字から始まれない
if = "条件" # 予約語は使えない
$price = 100 # 記号は使えない ( _ 以外)
Python の予約語とは? Python であらかじめ特別な意味を持つように設定されている単語のことです。例えば、if
, for
,
while
, def
, class
, return
, True
, False
などです。これらの単語は変数名として使用できません。
良い変数名のつけ方
変数名は「何のためのデータか」が分かるように付けると良いです。以下のポイントを意識しましょう。
- 具体的な名前をつける
具体的な名前をつける
# 悪い例
x = 85 # x が何を表すのか分からない
n = "山田" # n が何を表すのか分からない
# 良い例
math_score = 85 # 数学の点数だと分かる
student_name = "山田" # 生徒の名前だと分かる
- 複数の単語は
_
(アンダースコア)でつなぐ
複数の単語は _(アンダースコア)でつなぐ
# 推奨される書き方 (スネークケース)
user_age = 16
total_score = 85
average_height = 170.5
# スペースは使えません
user age = 16 # エラーになる
- 省略しすぎない
省略しすぎない
# 悪い例 (意味が分かりづらい)
num = 30 # number の意味?count の意味?
calc = 85 + 90 # calculation? calculator?
# 良い例 (分かりやすい)
student_count = 30
total_score = 85 + 90
プログラミングでは、単語をつなぐ時に以下の 2 つの主な書き方があります。
- スネークケース:単語を
_
でつなぐ(Python で推奨)- 例:
user_name
,total_score
- 例:
- キャメルケース:2 つ目以降の単語の先頭を大文字にする
- 例:
userName
,totalScore
- 例:
Python では一般的にスネークケースを使いますが、他のプログラミング言語ではキャメルケースが使われることもあります。
具体的な変数名の例
プログラムの目的に応じた、分かりやすい変数名の例を見てみましょう:
成績管理プログラムの例
student_name = "山田太郎" # 生徒の名前
math_score = 85 # 数学の点数
english_score = 92 # 英語の点数
total_score = math_score + english_score # 合計点
average_score = total_score / 2 # 平均点
買い物プログラムの例
item_name = "リンゴ" # 商品名
unit_price = 120 # 1個の値段
quantity = 5 # 個数
total_price = unit_price * quantity # 合計金額
英語の単語が分からない時は? 変数名は英語で書くことが一般的です。英語が苦手だと苦労することもあると思いますが、翻訳や生成 AI に頼りつつ勉強すると良いです。英語がある程度読めると、情報収集もやりやすくなりますし、プログラミングの色々な概念を理解しやすくなることも多いです。
2.4 文字列を操作する(文字の連結・分割など)
文字列は、プログラミングでとてもよく使うデータ型です。名前を結合したり、メッセージの一部を取り出したり、文字数を数えたり...。ここでは、文字列を操作する方法を学びましょう。
文字列の基本操作
1. 文字列の連結 ( +
)
文字列は +
を使って連結(くっつける)できます。
文字列の連結
first = "山田"
last = "太郎"
full_name = first + last
print(full_name) # 山田太郎
# スペースを入れて連結
full_name = first + " " + last
print(full_name) # 山田 太郎
# 文字列と数値を連結する時は str() で変換が必要
age = 16
message = "私は" + str(age) + "歳です"
print(message) # 私は16歳です
2. 文字列の繰り返し ( *
)
文字列は *
を使って繰り返すことができます。
文字列の繰り返し
star = "★"
print(star * 3) # ★★★
print("わくわく" * 2) # わくわくわくわく
# 装飾的な使い方
print("=" * 20) # ====================
print("Hello!") # Hello!
print("=" * 20) # ====================
3. 文字列の長さを調べる( len()
)
文字列の長さ(文字数)は len()
関数で調べられます。
文字列の長さを調べる
message = "こんにちは"
print(len(message)) # 5
name = "山田 太郎" # スペースも 1 文字として数えます
print(len(name)) # 5
english = "Hello!"
print(len(english)) # 6
4. 文字列から一部を取り出す(スライス)
文字列は、位置を指定して一部を取り出すことができます。
文字列から一部を取り出す
text = "Python"
print(text[0]) # P (最初の文字)
print(text[1]) # y (2番目の文字)
print(text[-1]) # n (最後の文字)
# スライスで範囲を指定して取り出す
print(text[0:2]) # Py (0 番目から 2 番目の手前まで)
print(text[2:4]) # th (2 番目から 4 番目の手前まで)
print(text[:3]) # Pyt (最初から 3 番目の手前まで)
print(text[2:]) # thon (2 番目から最後まで)
インデックス(位置)の数え方 最初の文字は 0 から数え(0, 1, 2, ...)、マイナスの数字は後ろから数えます(-1 が最後の文字で、-2 が後ろから 2 番目の文字です)。
文字列のスライスのアニメーション
text = "Python"
text[1:4] = "yth"
インデックスは文字と文字の「間」を指します。
スライダーを動かして、異なる範囲を試してみましょう
5. 文字列の検索と置換
文字列の中から特定の文字を探したり、置き換えたりできます。
文字列の検索と置換
# 文字列の検索
text = "私は Python が好きです"
print("Python" in text) # True (含まれているか確認)
print(text.find("Python")) # 3 (出現位置。見つからない場合は -1)
print(text.find("JavaScript")) # -1 (見つからないので -1)
# 文字列の置換
message = "私はりんごが好きです"
new_message = message.replace("りんご", "バナナ")
print(new_message) # 私はバナナが好きです
よく使う文字列メソッド
文字列には、便利な操作メソッドが用意されています。
よく使う文字列メソッド
# あえて左右に空白を入れています
text = " Hello, Python! "
# 空白の削除
print(text.strip()) # "Hello, Python!" (前後の空白を削除)
# 大文字・小文字の変換
print(text.upper()) # " HELLO, PYTHON! " (大文字に)
print(text.lower()) # " hello, python! " (小文字に)
# 文字列の分割
words = "りんご,バナナ,オレンジ"
fruit_list = words.split(",") # ["りんご", "バナナ", "オレンジ"]
Q: 文字列から文字を取り出す時によくある間違いは?
A: 以下の点に注意しましょう。
- インデックスは 0 から始まります(1 からではありません)
- 存在しない位置を指定するとエラーになります
- スライスの終了位置は、取り出したい範囲の「次の位置」を指定します
実践的な文字列操作の例
実際のプログラムでの使用例を見てみましょう。
実践的な文字列操作の例
# ユーザー名とパスワードの作成
username = "yamada_taro"
domain = "example.com"
email = username + "@" + domain # メールアドレスの作成
print(email) # yamada_taro@example.com
# 整形された出力の作成
name = "山田太郎"
score = 85
result = f"{name}さんの点数は{score}点です"
print(result) # 山田太郎さんの点数は85点です
# ファイル名から拡張子を取り出す
filename = "report.pdf"
extension = filename[-4:] # 後ろから 4 文字を取得
print(extension) # .pdf
2.5 数字と文字の型変換をしてみよう
プログラミングをしていると、「文字列として保存された数字を計算に使いたい」とか「数値を文字列として表示したい」といった場面によく出会います。このような時に必要となるのが「型変換」です。
なぜ型変換が必要?
例えば、次のようなケースを考えてみましょう。
型変換が必要なケース
score = 85
message = "得点は" + score + "点です" # エラー!
# TypeError: can only concatenate str (not "int") to str
このコードはエラーになります。なぜでしょう?
それは、Python が「文字列("得点は")」と「数値(85)」を直接連結することができないからです。これを解決するために、数値を文字列に変換する必要があります。
型変換をしたケース
score = 85
message = "得点は" + str(score) + "点です" # 得点は85点です
これで、エラーが解消されます。
基本的な型変換の方法
1. 文字列を数値に変換
文字列を数値に変換
# 文字列 → 整数 int()
age_str = "16"
age_num = int(age_str) # 文字列を整数に変換
print(age_num + 1) # 17 (計算ができる)
# 文字列 → 小数 float()
height_str = "170.5"
height_num = float(height_str) # 文字列を小数に変換
print(height_num + 1) # 171.5 (計算ができる)
2. 数値を文字列に変換
数値を文字列に変換
# 数値 → 文字列 str()
score = 85
score_str = str(score) # 数値を文字列に変換
message = "得点は" + score_str + "点です"
print(message) # 得点は85点です
# 小数 → 文字列 str()
height = 170.5
height_str = str(height) # 小数を文字列に変換
print("身長は" + height_str + "cmです") # 身長は170.5cmです
3. 整数と小数の変換
整数と小数の変換
# 小数 → 整数 (小数点以下切り捨て)
height = int(170.8) # 170
price = int(1200.9) # 1200
# 整数 → 小数
count = float(80) # 80.0
rate = float(100) # 100.0
型変換でよくあるエラー 以下のような場合は変換できずエラーになります。
- 数値として不適切な文字列を int() や float() で直接変換しようとする
- 小数を含む文字列を int() で直接変換しようとする
具体的な型変換の例
実際のプログラムでの使用例を見てみましょう。
具体的な型変換の例
# 入力された文字列を数値として計算
height_str = "170.5"
weight_str = "60.2"
height = float(height_str)
weight = float(weight_str)
# BMI の計算
bmi = weight / (height/100) ** 2
# 小数点第 1 位まで表示
print("BMI:", round(bmi, 1)) # BMI: 24.2
# 計算結果を文字列として整形
result = f"身長 {height} cm, 体重 {weight} kg の BMI は {round(bmi, 1)} です"
print(result) # 身長 170.5cm, 体重60.2kg の BMI は 24.2 です
よくある使用パターン
- ユーザー入力の処理
ユーザー入力の処理
# ユーザーからの入力は常に文字列として扱われます
# 実際のプログラムでは input() を使って、ユーザーからの入力を受け取ります
age_str = "16"
age = int(age_str)
next_year = age + 1
print(f"来年は{next_year}歳になります") # 来年は17歳になります
- データの表示整形
データの表示整形
score = 85
total = 100
rate = score / total * 100
message = f"得点率は {str(round(rate, 1))}% です"
print(message) # 得点率は 85.0% です
- 複数の型変換を組み合わせる
複数の型変換を組み合わせる
# 文字列の小数を整数に変換
price_str = "1200.8"
price = int(float(price_str)) # 一度 float に変換してから int に変換
print(price) # 1200
Q: 型変換でエラーが出たときはどうすればいい?
A: 以下の手順で確認しましょう:
- print(type(変数)) で現在の型を確認する
- 変換したい形式に適した値かチェックする
- 必要に応じて、段階を踏んで変換してみる
2.6 真偽値(True/False)と比較演算子で判断する
私たちの日常生活では、「テストの点数は合格点以上か?」「持ち物は全部そろっているか?」など、様々な「はい / いいえ」「Yes / No」「True / False」で答える判断をしています。プログラミングでも同じように、条件を判断する場面が多くあります。その時に使うのが「真偽値」と「比較演算子」です。
真偽値(Boolean)とは
真偽値は、True
(真)と False
(偽)の2つの値だけを持つデータ型です。
プログラミング言語によっては true
と false
のように小文字を使うものも多くありますが、Python では最初の文字は大文字なので注意しましょう。
真偽値の基本
is_student = True # はい、学生です
has_pet = False # いいえ、ペットは飼っていません
print(type(is_student)) # <class 'bool'>
比較演算子で条件を判断する
基本的な比較演算子
数値の大小関係や等しいかどうかを判断できます。
数値の比較
age = 16
print(age > 15) # True (15 より大きい)
print(age < 20) # True (20 より小さい)
print(age == 16) # True (16 と等しい)
print(age != 18) # True (18 と異なる)
print(age >= 16) # True (16 以上)
print(age <= 16) # True (16 以下)
演算子 | 意味 | 例 |
---|---|---|
== | 等しい | x == y |
!= | 等しくない | x != y |
> | より大きい | x > y |
< | より小さい | x < y |
>= | 以上 | x >= y |
<= | 以下 | x <= y |
== と = の違い
=
は値を代入する(変数に値を入れる)==
は値が等しいか比較する
実践的な比較の例
テストの合否判定を例に見てみましょう。分かりやすいように、bool
型を明示的に指定しています。(型ヒント)
テストの合否判定
score = 85
pass_score = 70
is_passed: bool = score >= pass_score
print("合格ですか?:", is_passed) # True
# 点数の範囲チェック
is_excellent: bool = score >= 90
is_good: bool = score >= 80 and score < 90
is_average: bool = score >= 70 and score < 80
print("優秀な成績ですか?:", is_excellent) # False
print("良い成績ですか?:", is_good) # True
print("平均的な成績ですか?:", is_average) # False
文字列の比較
文字列も比較することができます:
文字列の比較
name = "山田"
print(name == "山田") # True (完全に一致)
print(name != "田中") # True (異なる)
# 文字の大小比較 (辞書順)
print("apple" < "banana") # True (アルファベット順)
print("山田" < "田中") # True (50 音順)
複数の条件を組み合わせる
and
, or
, not
を使って、複数の条件を組み合わせることができます:
複数の条件を組み合わせる
age = 16
score = 85
# and (両方の条件が True なら True)
is_eligible = age >= 15 and score >= 80
print("参加資格がありますか?:", is_eligible) # True
# or (どちらかの条件が True なら True)
needs_support = score < 60 or age < 15
print("サポートが必要ですか?:", needs_support) # False
# not (条件を逆転させる)
is_adult = age >= 18
is_child = not is_adult
print("子供ですか?:", is_child) # True
演算子 | 意味 | 例 |
---|---|---|
and | 両方が True なら True | x and y |
or | どちらかが True なら True | x or y |
not | True と False を反転 | not x |
色々な組み合わせを見てみましょう。
真偽値の計算例
age = 16
score = 85
print(age > 15 and score < 90) # True
print(age == 18 or score >= 80) # True
print(not (age < 15)) # True
実世界での応用例
実際のプログラムでの使用例を見てみましょう。
実際のプログラムでの使用例
# 映画の年齢制限チェック
age = 16
movie_rating = 15
can_watch = age >= movie_rating
print("映画を見られますか?:", can_watch) # True
# 商品の在庫チェック
stock = 5
min_stock = 3
needs_restock = stock <= min_stock
print("在庫の補充が必要ですか?:", needs_restock) # False
# クーポン使用の条件チェック
purchase_amount = 3000
is_member = True
can_use_coupon = purchase_amount >= 2000 and is_member
print("クーポンは使用できますか?:", can_use_coupon) # True
2.7 いろいろなデータ型を組み合わせる
これまで学んできた様々なデータ型(整数、小数、文字列、真偽値)は、実際のプログラムでは組み合わせて使うことが多いです。この節では、データ型を組み合わせて使う実践的な例を見ていきましょう。
成績管理プログラムの例
まずは、学校の成績管理プログラムを例に見てみましょう。型ヒントは必ずしも書く必要はないのですが、今回は色々なデータ型が登場するので、読みやすくするために書いています。
成績管理プログラムの例
# 生徒の情報を変数で管理
name: str = "山田太郎"
grade: int = 2
class_number: str = "A"
math_score: int = 92
english_score: int = 78
is_passed: bool = True
# 情報を整形して表示
print("=== 成績情報 ===")
print("名前:" + name)
print("学年:" + str(grade))
print("クラス:" + class_number)
print("数学:" + str(math_score) + "点")
print("英語:" + str(english_score) + "点")
print("合格:" + str(is_passed))
# 平均点の計算と判定
total = math_score + english_score
average = total / 2
is_excellent = average >= 90
print("合計点:" + str(total) + "点")
print("平均点:" + str(average) + "点")
print("優秀者:" + str(is_excellent))
より見やすい文字列フォーマットの方法
実はこれまでのプログラムでもしばしば使っていましたが、f-strings というものを使うと、より見やすく書くことが出来ます。
f-strings を使った表示方法
print(f"=== {name}の成績情報 ===")
print(f"学年:{grade}年{class_number}組")
print(f"数学:{math_score}点")
print(f"英語:{english_score}点")
print(f"平均:{average:.1f}点") # 小数点 1 桁まで表示
商品管理プログラムの例
次は、お店の商品管理プログラムを例に見てみましょう。
商品情報の管理
product_name: str = "ノート"
price: int = 280
quantity: int = 25
tax_rate: float = 0.10
is_available: bool = True
# 在庫金額の計算
total_price: int = price * quantity
tax_amount: float = total_price * tax_rate
total_with_tax: float = float(total_price) + tax_amount
# 在庫状況の判定
is_low_stock: bool = quantity < 20
needs_reorder: bool = quantity <= 10
# 情報の表示
print(f"【商品情報】")
print(f"商品名:{product_name}")
print(f"単価:{price}円")
print(f"在庫数:{quantity}個")
print(f"在庫金額:{total_price}円")
print(f"消費税:{tax_amount}円")
print(f"税込金額:{total_with_tax}円")
print(f"販売可能:{is_available}")
print(f"在庫少:{is_low_stock}")
print(f"要発注:{needs_reorder}")
実践的なプログラムでの型の使い分け
データ型の選び方の基本的な方針は、このような感じです。
-
整数型 (int) を使う場合
- 個数、年齢、価格など、小数点が不要な数値
- カウント値、インデックス番号
-
小数型 (float) を使う場合
- 身長、体重、気温など、細かい数値が必要なもの
- 割合、比率の計算結果
-
文字列型 (str) を使う場合
- 名前、住所、メッセージなどのテキスト
- 日付、電話番号(計算に使わない数字)
- ID ナンバー(先頭の 0 が重要な場合です。int にすると 0 が消えてしまいます)
-
真偽値型 (bool) を使う場合
- はい / いいえで答えられる状態
- 条件の判定結果
Q: 電話番号や郵便番号は数字なのに、なぜ文字列型で扱うことが多いの?
A: いくつか理由があります:
- 計算に使う予定がない(電話番号どうしを足し算することはないですよね)
- 先頭の 0 が重要(int だと消えてしまいます)
- ハイフン(-)を含めたい場合がある
Ex.1 名前と年齢を入力し、「あなたは ◯ 歳です」と表示するプログラム
名前と年齢を入力し、「あなたは ◯ 歳です」と表示するプログラム
# input() 関数を使ってキーボードから入力を受け取る
name = input("お名前を入力してください:")
age: str = input("年齢を入力してください:")
# 入力された年齢は文字列なので、計算するときは数値に変換する
age_num = int(age)
print("こんにちは、" + name + "さん!")
print("あなたは" + age + "歳です")
print("来年は" + str(age_num + 1) + "歳になりますね")
# f-strings を使うと、もっと簡潔に書けます。自動で str に変換してくれます。
print(f"こんにちは、{name}さん!")
print(f"あなたは{age}歳です")
print(f"来年は{age_num + 1}歳になりますね")
チャレンジ!
- 誕生年を計算して表示してみよう
- 20 歳まであと何年かを計算してみよう
- 他にも色々な情報を入力・表示してみよう
Ex.2 2 つの数字を入力し、その合計を「◯ + ◯ = ◯」と表示するプログラム
2 つの数字を入力し、その合計を「◯ + ◯ = ◯」と表示するプログラム
num1 = input("1 つ目の数字を入力してください:")
num2 = input("2 つ目の数字を入力してください:")
num1 = int(num1)
num2 = int(num2)
sum_result = num1 + num2
print(f"{num1} + {num2} = {sum_result}")
チャレンジ!
- 引き算、掛け算、割り算も計算してみよう
- 3 つ以上の数字の計算もしてみよう
- 小数点がある数字も計算してみよう
まとめ
この章では、プログラミングの基礎となる変数とデータ型について学びました。
- 変数は値を保存する「箱」
- データ型によって扱い方が変わる
- 型変換で異なる型のデータを扱える
- input() で入力を受け取れる