Python文法の基礎:変数・条件分岐・ループを実例で学ぶ

Python文法の基礎:変数・条件分岐・ループを実例で学ぶ

こんにちは、ぽんたぬきです🦝

「Pythonの基本文法を理解したい」「変数やif文、for文の使い方を実例で学びたい」という方に向けて、私が実際に学習した順序で、Python文法の基礎を解説します。

この記事では、理論よりも実際に動くコードを重視し、「なぜこう書くのか」「実際にはどう使うのか」を中心に説明します。40代からプログラミングを始めた私の視点で、分かりやすく解説していきます。

Python文法学習の心構え

なぜ文法を覚える必要があるのか?

私が最初に疑問に思ったのは「なんでこんなにルールがあるの?」ということでした。しかし、文法はコンピュータとのコミュニケーションのルールなのです。

日本語の例

  • 「私は りんごを 食べる」→ 文法正しい
  • 「私は 食べる りんごを」→ 意味は分かるが不自然

Pythonの例

  • print("Hello")→ 正しい文法
  • ("Hello")print→ エラー

学習のコツ

  1. 小さなコードから始める
  2. 実際に手を動かして試す
  3. エラーを恐れない
  4. なぜそう書くのかを理解する

1. 変数:データを保存する箱

変数とは何か?

変数はデータを保存する箱のようなものです。箱に名前をつけて、後で中身を取り出せます。

# 変数の基本的な使い方
name = "ぽんたぬき"
age = 45
height = 170.5

print(name)    # ぽんたぬき
print(age)     # 45
print(height)  # 170.5

私が最初に悩んだポイント

「なぜ型を指定しなくていいの?」

他の言語(C言語など)では:

int age = 45;        // int(整数)と明示
char name[] = "..."; // char(文字)と明示

Pythonでは:

age = 45           # Pythonが自動で整数と判断
name = "ぽんたぬき" # Pythonが自動で文字列と判断

これを動的型付けといい、Pythonの大きな特徴です。

変数の命名ルール

ルール(これは守らないとエラー)

# ✅ 正しい変数名
my_name = "ぽんたぬき"
age2 = 45
total_price = 1000

# ❌ エラーになる変数名
2age = 45          # 数字から始まってはダメ
my-name = "..."    # ハイフンは使えない
class = "A"        # Pythonの予約語は使えない

慣習(読みやすくするため)

# ✅ 推奨される書き方
user_name = "ぽんたぬき"    # スネークケース
total_amount = 1000
is_valid = True

# ❌ 読みにくい書き方
x = "ぽんたぬき"           # 意味が分からない
userName = "ぽんたぬき"    # キャメルケース(他言語の慣習)
TOTAL = 1000             # 大文字(定数用)

主なデータ型

# 文字列(string)
message = "こんにちは"
print(type(message))  # <class 'str'>

# 整数(integer)
age = 45
print(type(age))      # <class 'int'>

# 浮動小数点数(float)
height = 170.5
print(type(height))   # <class 'float'>

# 真偽値(boolean)
is_student = False
print(type(is_student))  # <class 'bool'>

実践例:家計簿プログラム

# 家計簿の基本情報
family_name = "田中家"
monthly_income = 350000
food_expense = 80000
utility_expense = 25000
rent = 100000

# 支出の合計
total_expense = food_expense + utility_expense + rent

# 残額の計算
remaining = monthly_income - total_expense

print(f"{family_name}の家計簿")
print(f"収入: {monthly_income:,}円")
print(f"支出合計: {total_expense:,}円")
print(f"残額: {remaining:,}円")

出力:

田中家の家計簿
収入: 350,000円
支出合計: 205,000円
残額: 145,000円

2. 条件分岐:状況に応じて処理を変える

if文の基本構造

if 条件:
    条件が真の時の処理
else:
    条件が偽の時の処理

実例で理解する条件分岐

年齢による判定

age = 45

if age >= 20:
    print("成人です")
else:
    print("未成年です")

複数条件の判定

score = 85

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"  
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print(f"点数: {score}, 評価: {grade}")

比較演算子

x = 10
y = 5

print(x == y)   # False (等しい)
print(x != y)   # True  (等しくない)
print(x > y)    # True  (より大きい)
print(x < y)    # False (より小さい)
print(x >= y)   # True  (以上)
print(x <= y)   # False (以下)

論理演算子

age = 25
has_license = True

# and: 両方が真の時に真
if age >= 18 and has_license:
    print("運転できます")

# or: どちらかが真の時に真  
weather = "雨"
has_umbrella = False

if weather == "晴れ" or has_umbrella:
    print("外出できます")
else:
    print("外出は控えましょう")

# not: 真偽を反転
is_weekend = False
if not is_weekend:
    print("平日です")

実践例:仮想通貨投資判断プログラム

# 仮想通貨投資の判断プログラム
bitcoin_price = 4500000  # ビットコインの価格(円)
available_money = 100000  # 利用可能な資金
risk_tolerance = "低"     # リスク許容度

print("=== 仮想通貨投資判断システム ===")
print(f"ビットコイン価格: {bitcoin_price:,}円")
print(f"利用可能資金: {available_money:,}円")
print(f"リスク許容度: {risk_tolerance}")
print()

# 投資可能性の判断
if available_money < 10000:
    print("❌ 投資には最低1万円必要です")
elif bitcoin_price > 5000000 and risk_tolerance == "低":
    print("⚠️  価格が高すぎます。下落を待ちましょう")
elif bitcoin_price < 3000000 and available_money >= 50000:
    print("✅ 絶好の買い時です!")
elif available_money >= bitcoin_price * 0.1:  # 10%以上の資金がある
    print("✅ 少額から始めてみましょう")
else:
    print("⚠️  もう少し資金を貯めてからにしましょう")

# リスク警告
if risk_tolerance == "低":
    print("n⚠️  投資は余剰資金で行い、リスクを十分理解してください")

私がよく間違えたポイント

1. 代入(=)と比較(==)の混同

# ❌ よくある間違い
age = 20
if age = 20:  # SyntaxError
    print("20歳です")

# ✅ 正しい書き方
if age == 20:
    print("20歳です")

2. インデント忘れ

# ❌ エラーになる
if age >= 20:
print("成人です")  # IndentationError

# ✅ 正しい書き方
if age >= 20:
    print("成人です")  # 4つのスペースでインデント

3. ループ:同じ処理を繰り返す

for文:決まった回数繰り返す

基本的なfor文

# 1から5まで表示
for i in range(1, 6):
    print(f"{i}回目の処理")

出力:

1回目の処理
2回目の処理
3回目の処理
4回目の処理
5回目の処理

range()関数の使い方

# range(終了) - 0から終了-1まで
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

# range(開始, 終了) - 開始から終了-1まで
for i in range(2, 6):
    print(i)  # 2, 3, 4, 5

# range(開始, 終了, ステップ) - 指定した間隔で
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8

リストを使ったfor文

# リストの要素を順番に処理
fruits = ["りんご", "みかん", "ばなな", "ぶどう"]

for fruit in fruits:
    print(f"好きな果物: {fruit}")

出力:

好きな果物: りんご
好きな果物: みかん
好きな果物: ばなな
好きな果物: ぶどう

while文:条件が満たされる間繰り返す

# カウントダウンプログラム
count = 5

while count > 0:
    print(f"残り{count}秒")
    count = count - 1  # count -= 1 と同じ

print("時間切れ!")

出力:

残り5秒
残り4秒
残り3秒
残り2秒
残り1秒
時間切れ!

実践例:複利計算プログラム

# 複利計算プログラム
initial_amount = 1000000  # 初期投資額(100万円)
annual_rate = 0.05        # 年利5%
years = 10                # 投資期間

print("=== 複利計算シミュレーション ===")
print(f"初期投資額: {initial_amount:,}円")
print(f"年利: {annual_rate*100}%")
print(f"投資期間: {years}年")
print()

current_amount = initial_amount

for year in range(1, years + 1):
    # 前年の金額に利息を加える
    current_amount = current_amount * (1 + annual_rate)

    # 年ごとの結果を表示
    profit = current_amount - initial_amount
    print(f"{year:2d}年後: {current_amount:,.0f}円 (利益: {profit:,.0f}円)")

print()
print(f"最終的な利益: {profit:,.0f}円")
print(f"利益率: {(profit/initial_amount)*100:.1f}%")

出力:

=== 複利計算シミュレーション ===
初期投資額: 1,000,000円
年利: 5.0%
投資期間: 10年

 1年後: 1,050,000円 (利益: 50,000円)
 2年後: 1,102,500円 (利益: 102,500円)
 3年後: 1,157,625円 (利益: 157,625円)
...
10年後: 1,628,895円 (利益: 628,895円)

最終的な利益: 628,895円
利益率: 62.9%

ループ制御:break と continue

break:ループを途中で抜ける

# 特定の条件でループを終了
for i in range(1, 11):
    if i == 6:
        print("6に到達したので終了")
        break
    print(i)

continue:次の繰り返しにスキップ

# 偶数だけスキップ
for i in range(1, 11):
    if i % 2 == 0:  # 偶数の場合
        continue    # 以下の処理をスキップ
    print(f"奇数: {i}")

実践例:仮想通貨価格監視プログラム

# 仮想通貨価格監視シミュレーション
# (実際のAPIではなく、シミュレーション用の価格変動)

import random

target_price = 4200000  # 目標価格(420万円)
current_price = 4500000  # 現在価格(450万円)
check_count = 0
max_checks = 20  # 最大チェック回数

print("=== ビットコイン価格監視 ===")
print(f"目標価格: {target_price:,}円")
print(f"現在価格: {current_price:,}円")
print()

while check_count < max_checks:
    check_count += 1

    # 価格変動をシミュレーション(実際は取引所APIから取得)
    change_rate = random.uniform(-0.05, 0.05)  # -5%から+5%の変動
    current_price = int(current_price * (1 + change_rate))

    print(f"{check_count:2d}回目: {current_price:,}円", end="")

    # 目標価格に到達したかチェック
    if current_price <= target_price:
        print(" ✅ 目標価格に到達!")
        print("買い注文を実行します")
        break
    elif current_price > 5000000:
        print(" ⚠️  価格が高すぎます")
    else:
        print(" 📊 監視継続中...")

    # 監視間隔(実際は時間間隔)
    import time
    time.sleep(1)  # 1秒待機

if check_count >= max_checks:
    print(f"n⏰ {max_checks}回チェックしましたが、目標価格に到達しませんでした")

4. 文字列操作:テキストデータの処理

文字列の基本操作

# 文字列の結合
first_name = "太郎"
last_name = "田中"
full_name = last_name + first_name
print(full_name)  # 田中太郎

# f-string(推奨)
age = 25
message = f"私の名前は{full_name}で、{age}歳です"
print(message)

文字列メソッド

text = "  Python Programming  "

print(text.upper())      # 大文字変換: "  PYTHON PROGRAMMING  "
print(text.lower())      # 小文字変換: "  python programming  "
print(text.strip())      # 前後の空白削除: "Python Programming"
print(text.replace("Python", "Java"))  # 置換: "  Java Programming  "

# 文字列の分割
email = "user@example.com"
parts = email.split("@")
print(parts)  # ['user', 'example.com']

実践例:ユーザー入力の処理

# ユーザー情報の入力と処理
print("=== ユーザー登録システム ===")

# 入力受付(実際のプログラムではinput()を使用)
user_input = "  TANAKA TARO  "  # シミュレーション用

# データのクリーニング
cleaned_name = user_input.strip().title()  # 前後空白削除 + タイトルケース
print(f"処理後の名前: {cleaned_name}")

# 名前の検証
if len(cleaned_name) < 2:
    print("❌ 名前が短すぎます")
elif len(cleaned_name) > 20:
    print("❌ 名前が長すぎます")
elif cleaned_name.isalpha() or " " in cleaned_name:
    print("✅ 有効な名前です")
else:
    print("❌ 無効な文字が含まれています")

# メールアドレスの簡単な検証
email = "user@example.com"
if "@" in email and "." in email:
    username = email.split("@")[0]
    domain = email.split("@")[1]
    print(f"ユーザー名: {username}")
    print(f"ドメイン: {domain}")
else:
    print("❌ 無効なメールアドレスです")

5. リスト操作:複数のデータを管理

リストの基本操作

# リストの作成
prices = [100, 200, 300, 400, 500]
fruits = ["りんご", "みかん", "ばなな"]

# 要素の追加
fruits.append("ぶどう")
print(fruits)  # ['りんご', 'みかん', 'ばなな', 'ぶどう']

# 要素の挿入
fruits.insert(1, "いちご")  # 1番目の位置に挿入
print(fruits)  # ['りんご', 'いちご', 'みかん', 'ばなな', 'ぶどう']

# 要素の削除
fruits.remove("みかん")    # 値で削除
deleted = fruits.pop(0)    # インデックスで削除(戻り値あり)
print(f"削除された要素: {deleted}")
print(fruits)

リスト内包表記

# 従来の書き方
numbers = []
for i in range(1, 6):
    numbers.append(i * 2)
print(numbers)  # [2, 4, 6, 8, 10]

# リスト内包表記(Pythonらしい書き方)
numbers = [i * 2 for i in range(1, 6)]
print(numbers)  # [2, 4, 6, 8, 10]

# 条件付きリスト内包表記
even_numbers = [i for i in range(1, 11) if i % 2 == 0]
print(even_numbers)  # [2, 4, 6, 8, 10]

実践例:投資ポートフォリオ管理

# 投資ポートフォリオ管理システム
stocks = [
    {"name": "トヨタ", "quantity": 100, "price": 2500},
    {"name": "ソフトバンク", "quantity": 200, "price": 1400},
    {"name": "ソニー", "quantity": 50, "price": 12000}
]

print("=== 投資ポートフォリオ ===")
total_value = 0

for stock in stocks:
    value = stock["quantity"] * stock["price"]
    total_value += value

    print(f"{stock['name']:8s}: {stock['quantity']:3d}株 × {stock['price']:,}円 = {value:,}円")

print(f"n合計評価額: {total_value:,}円")

# 各銘柄の構成比率
print("n=== 構成比率 ===")
for stock in stocks:
    value = stock["quantity"] * stock["price"]
    ratio = (value / total_value) * 100
    print(f"{stock['name']:8s}: {ratio:5.1f}%")

出力:

=== 投資ポートフォリオ ===
トヨタ      : 100株 × 2,500円 = 250,000円
ソフトバンク   : 200株 × 1,400円 = 280,000円
ソニー      :  50株 × 12,000円 = 600,000円

合計評価額: 1,130,000円

=== 構成比率 ===
トヨタ      :  22.1%
ソフトバンク   :  24.8%
ソニー      :  53.1%

まとめ:Python文法の基礎をマスターしよう

今回学んだ内容

  1. 変数:データを保存する箱
  2. 条件分岐:状況に応じて処理を変える
  3. ループ:同じ処理を繰り返す
  4. 文字列操作:テキストデータの処理
  5. リスト操作:複数のデータを管理

私からのアドバイス

文法学習で大切なこと

  1. 理論より実践

    • 理解できなくても、まず動かしてみる
    • 動くコードから学ぶ方が早い
  2. 小さく始める

    • 大きなプログラムを作ろうとしない
    • 今日学んだことを使った小さなプログラムを作る
  3. エラーを恐れない

    • エラーは学習の機会
    • エラーメッセージをよく読む
  4. 反復練習

    • 同じパターンを何度も書く
    • 慣れるまで繰り返す

次のステップ

この記事で紹介した基本文法を使って、ぜひ小さなプログラムを作ってみてください:

練習課題のアイデア

  • 家計簿計算プログラム
  • 成績管理システム
  • じゃんけんゲーム
  • 数当てゲーム
  • 買い物リスト管理

「基礎を固めることが、応用への近道です」 🦝

一緒に頑張りましょう!


関連記事: