ステップ25:ミニプロジェクト②

🚀 ステップ25: ミニプロジェクト②

実用的なツールを作って、データ分析の世界へ!

ステップ25では、より実用的なプログラムを作成します。ステップ24ではゲームを作りましたが、今回は「役に立つツール」を作ります。

📖 このステップで作るもの

・🧮 多機能計算機アプリ

・📄 テキストファイル分析ツール

💡 実用的プログラミングのポイント

実用的なプログラムは、「動く」だけでなく、「使いやすい」ことが重要です。

エラー処理、分かりやすいメニュー、便利な機能を意識しましょう。

🧮 プロジェクト1: 多機能計算機アプリ

📝 プロジェクトの説明

基本的な四則演算だけでなく、累乗、平方根、パーセント計算など、様々な計算ができる電卓アプリを作ります。計算履歴の保存機能も付けます。

📌 このプロジェクトで使う知識

知識 使う場面
mathモジュール 平方根、三角関数などの数学計算
関数 機能ごとにコードを分割
リスト 計算履歴を保存
例外処理 ゼロ除算などのエラー対応

🔰 ステップ1: シンプルな計算機

まずは四則演算ができるシンプルな計算機を作ります。完成までの手順を一つずつ見ていきましょう。

手順1:関数の枠組みを作る

計算機の基本構造を用意します。

コード:計算機の基本構造

※スマートフォンでは横スクロールできます

def simple_calculator():
    """シンプルな計算機"""
    print("=" * 40)
    print("シンプル計算機")
    print("=" * 40)

💡 コードの説明

def simple_calculator():

 ・simple_calculatorという名前の関数を定義します

 ・計算機の全ての機能をこの中に書きます

“””シンプルな計算機”””

 ・ドキュメント文字列です

 ・この関数が何をするかを説明します

print(“=” * 40)

 ・=記号を40個並べて区切り線を作ります

 ・見やすいタイトル表示のためです

手順2:メインループを作る

計算を繰り返せるようにwhile文を使います。

コード:繰り返しの構造

※スマートフォンでは横スクロールできます

    while True:
        print("\n計算式を入力してください(例: 10 + 5)")
        print("終了するには 'q' を入力")
        
        user_input = input("\n計算式: ")

💡 コードの説明

while True:

 ・条件が常にTrueなので、ずっと繰り返します

 ・終了するまで計算を続けられます

 ・breakで抜けるまで続きます

print(“\n計算式を入力してください(例: 10 + 5)”)

 ・使い方の例を表示します

 ・\nで改行を入れて見やすくします

user_input = input(“\n計算式: “)

 ・ユーザーから計算式を受け取ります

 ・例:「10 + 5」「100 / 4」など

手順3:終了処理を追加

‘q’が入力されたら、プログラムを終了します。

コード:終了処理

※スマートフォンでは横スクロールできます

        if user_input.lower() == 'q':
            print("計算機を終了します")
            break

💡 コードの説明

user_input.lower()

 ・入力を小文字に変換します

 ・’Q’でも’q’でも同じように扱えます

== ‘q’

 ・小文字のqと比較します

 ・一致すれば終了処理を実行します

break

 ・while文を抜けます

 ・計算機が終了します

手順4:計算式を評価する(eval関数)

入力された計算式を実際に計算します。

コード:計算の実行

※スマートフォンでは横スクロールできます

        try:
            result = eval(user_input)
            print(f"結果: {result}")

💡 コードの説明

try:

 ・エラーが起きる可能性のあるコードを囲みます

 ・計算式が間違っている場合などに備えます

eval(user_input)

 ・文字列をPythonのコードとして実行します

 ・「10 + 5」という文字列を実際に計算して15を返します

 ・「100 / 4」なら25.0を返します

result =

 ・計算結果をresult変数に保存します

print(f”結果: {result}”)

 ・計算結果を表示します

手順5:エラー処理を追加

様々なエラーに対応できるようにします。

コード:エラー処理

※スマートフォンでは横スクロールできます

        except ZeroDivisionError:
            print("❌ エラー: ゼロで割ることはできません")
        except SyntaxError:
            print("❌ エラー: 正しい計算式を入力してください")
        except Exception as e:
            print(f"❌ エラー: {e}")

💡 コードの説明

except ZeroDivisionError:

 ・ゼロで割ったときのエラーを捕まえます

 ・例:「10 / 0」を入力した場合

 ・プログラムが止まらずにエラーメッセージを表示します

except SyntaxError:

 ・計算式が正しくないときのエラーを捕まえます

 ・例:「10 +」のように不完全な式を入力した場合

except Exception as e:

 ・その他の全てのエラーを捕まえます

 ・eにエラーの詳細が入ります

 ・具体的なエラー内容を表示できます

⚠️ eval()関数の注意点

eval()は文字列をPythonコードとして実行する便利な関数です。

しかし、悪意のあるコードも実行してしまうセキュリティリスクがあります。

このコースでは学習用として使いますが、実際のアプリケーションでは、入力を厳密にチェックするか、別の方法を使いましょう。

完成コード:シンプル計算機

全ての手順を組み合わせた完成版です。

コード:完成版

※スマートフォンでは横スクロールできます

def simple_calculator():
    """シンプルな計算機"""
    print("=" * 40)
    print("シンプル計算機")
    print("=" * 40)
    
    while True:
        print("\n計算式を入力してください(例: 10 + 5)")
        print("終了するには 'q' を入力")
        
        user_input = input("\n計算式: ")
        
        # 終了処理
        if user_input.lower() == 'q':
            print("計算機を終了します")
            break
        
        try:
            # eval()で計算式を評価
            result = eval(user_input)
            print(f"結果: {result}")
            
        except ZeroDivisionError:
            print("❌ エラー: ゼロで割ることはできません")
        except SyntaxError:
            print("❌ エラー: 正しい計算式を入力してください")
        except Exception as e:
            print(f"❌ エラー: {e}")

# 計算機起動
simple_calculator()

実行結果

========================================
シンプル計算機
========================================

計算式を入力してください(例: 10 + 5)
終了するには 'q' を入力

計算式: 15 + 25
結果: 40

計算式を入力してください(例: 10 + 5)
終了するには 'q' を入力

計算式: 100 / 4
結果: 25.0

計算式を入力してください(例: 10 + 5)
終了するには 'q' を入力

計算式: 10 / 0
❌ エラー: ゼロで割ることはできません

📌 eval()で使える計算式

計算式 説明 結果
10 + 5 足し算 15
100 – 30 引き算 70
15 * 4 掛け算 60
100 / 4 割り算 25.0
2 ** 10 累乗(2の10乗) 1024
(10 + 5) * 2 括弧も使える 30

🔑 重要なポイント

eval()は文字列を実行できる強力な関数ですが、セキュリティリスクがあります。

try-exceptで複数のエラーに対応することで、プログラムが止まらずに動き続けます。

while True:とbreakの組み合わせで、ユーザーが終了を選ぶまで繰り返せます。

⭐ ステップ2: 多機能計算機(履歴機能付き)

様々な計算機能と履歴保存機能を追加します。メニュー方式で機能を選べるようにして、より実用的な計算機を作ります。

📌 追加する機能

機能 説明
四則演算 足し算、引き算、掛け算、割り算
累乗計算 2の10乗など
平方根 √16 = 4 など
パーセント計算 100の20%は? など
履歴機能 計算結果を記録・表示

手順1:必要なモジュールと履歴リストを用意

数学計算のためのmathモジュールと、履歴を保存するリストを用意します。

コード:初期設定

※スマートフォンでは横スクロールできます

import math

def advanced_calculator():
    """多機能計算機(履歴付き)"""
    history = []

💡 コードの説明

import math

 ・mathモジュールを読み込みます

 ・平方根(sqrt)などの数学関数が使えるようになります

 ・三角関数や対数なども含まれています

history = []

 ・空のリストを作成します

 ・計算結果を順番に保存していきます

 ・後で履歴を表示するときに使います

手順2:メニューを表示する

ユーザーが選べる機能を一覧表示します。

コード:メニュー表示

※スマートフォンでは横スクロールできます

    print("=" * 50)
    print("多機能計算機")
    print("=" * 50)
    
    while True:
        print("\n【メニュー】")
        print("1: 四則演算")
        print("2: 累乗計算")
        print("3: 平方根")
        print("4: パーセント計算")
        print("5: 計算履歴表示")
        print("6: 履歴クリア")
        print("0: 終了")
        
        choice = input("\n選択: ")

💡 コードの説明

print(“=” * 50)

 ・=を50個並べてタイトルの区切り線を作ります

while True:

 ・終了するまでメニューを繰り返し表示します

print(“1: 四則演算”)

 ・各機能を番号付きで表示します

 ・ユーザーは1〜6、または0を選びます

choice = input(“\n選択: “)

 ・ユーザーの選択を文字列として受け取ります

 ・文字列で扱うので’1’、’2’などと比較します

手順3:四則演算機能を作る

2つの数値と演算子を入力して計算します。

コード:数値と演算子の入力

※スマートフォンでは横スクロールできます

        if choice == '1':
            print("\n【四則演算】")
            try:
                num1 = float(input("1つ目の数: "))
                operator = input("演算子(+, -, *, /): ")
                num2 = float(input("2つ目の数: "))

💡 コードの説明

if choice == ‘1’:

 ・選択が’1’(四則演算)かチェックします

try:

 ・数値の入力エラーに対応します

num1 = float(input(“1つ目の数: “))

 ・最初の数値を入力してもらいます

 ・float()で小数も扱えるようにします

operator = input(“演算子(+, -, *, /): “)

 ・どの計算をするか演算子を入力します

 ・+、-、*、/のいずれかを選びます

コード:演算子による計算

※スマートフォンでは横スクロールできます

                if operator == '+':
                    result = num1 + num2
                elif operator == '-':
                    result = num1 - num2
                elif operator == '*':
                    result = num1 * num2
                elif operator == '/':
                    if num2 == 0:
                        print("❌ ゼロで割ることはできません")
                        continue
                    result = num1 / num2
                else:
                    print("❌ 無効な演算子です")
                    continue

💡 コードの説明

if operator == ‘+’:

 ・演算子が+かチェックします

 ・+なら足し算を実行します

result = num1 + num2

 ・2つの数を足してresultに保存します

elif operator == ‘/’:

 ・割り算の場合です

if num2 == 0:

 ・ゼロで割ろうとしていないかチェックします

 ・ゼロ除算はエラーになるので事前に防ぎます

continue

 ・エラーの場合、この回の処理をスキップします

 ・メニューに戻ります

コード:結果表示と履歴保存

※スマートフォンでは横スクロールできます

                print(f"\n結果: {num1} {operator} {num2} = {result}")
                history.append(f"{num1} {operator} {num2} = {result}")
                
            except ValueError:
                print("❌ 正しい数値を入力してください")

💡 コードの説明

print(f”\n結果: {num1} {operator} {num2} = {result}”)

 ・計算式と結果を表示します

 ・例:「結果: 10 + 5 = 15」

history.append(…)

 ・計算結果を履歴リストに追加します

 ・文字列として保存します

 ・後で履歴表示機能で使います

except ValueError:

 ・数値以外が入力された場合です

 ・float()で変換できないとこのエラーが出ます

手順4:累乗計算機能を作る

2の10乗のような累乗を計算します。

コード:累乗計算

※スマートフォンでは横スクロールできます

        elif choice == '2':
            print("\n【累乗計算】")
            try:
                base = float(input("底(べき乗される数): "))
                exponent = float(input("指数(べき乗する数): "))
                
                result = base ** exponent
                print(f"\n結果: {base}^{exponent} = {result}")
                history.append(f"{base}^{exponent} = {result}")
            except ValueError:
                print("❌ 正しい数値を入力してください")

💡 コードの説明

elif choice == ‘2’:

 ・選択が’2’(累乗計算)の場合です

base = float(input(“底(べき乗される数): “))

 ・底(もとになる数)を入力します

 ・例:2の10乗なら2が底です

exponent = float(input(“指数(べき乗する数): “))

 ・指数(何乗するか)を入力します

 ・例:2の10乗なら10が指数です

result = base ** exponent

 ・**演算子で累乗を計算します

 ・例:2 ** 10 = 1024

{base}^{exponent}

 ・^記号で累乗を表します(数学の表記)

手順5:平方根計算機能を作る

math.sqrt()を使って平方根を計算します。

コード:平方根計算

※スマートフォンでは横スクロールできます

        elif choice == '3':
            print("\n【平方根】")
            try:
                num = float(input("数値: "))
                
                if num < 0:
                    print("❌ 負の数の平方根は計算できません")
                    continue
                
                result = math.sqrt(num)
                print(f"\n結果: √{num} = {result}")
                history.append(f"√{num} = {result}")
            except ValueError:
                print("❌ 正しい数値を入力してください")

💡 コードの説明

elif choice == '3':

 ・選択が'3'(平方根)の場合です

if num < 0:

 ・負の数かチェックします

 ・負の数の平方根は実数では計算できません

 ・エラーメッセージを表示してスキップします

math.sqrt(num)

 ・mathモジュールのsqrt関数を使います

 ・平方根(ルート)を計算します

 ・例:math.sqrt(16) = 4.0

√{num}

 ・√記号で平方根を表します

手順6:パーセント計算機能を作る

「100の20%」や「20は100の何%」を計算します。

コード:パーセント計算

※スマートフォンでは横スクロールできます

        elif choice == '4':
            print("\n【パーセント計算】")
            print("1: X の Y% を計算")
            print("2: X は Y の何%か計算")
            sub_choice = input("選択: ")
            
            try:
                if sub_choice == '1':
                    total = float(input("全体の数(X): "))
                    percent = float(input("パーセント(Y): "))
                    result = total * (percent / 100)
                    print(f"\n結果: {total}の{percent}% = {result}")
                    history.append(f"{total}の{percent}% = {result}")
                    
                elif sub_choice == '2':
                    part = float(input("部分の数(X): "))
                    total = float(input("全体の数(Y): "))
                    if total == 0:
                        print("❌ 全体が0では計算できません")
                        continue
                    result = (part / total) * 100
                    print(f"\n結果: {part}は{total}の{result:.2f}%")
                    history.append(f"{part}は{total}の{result:.2f}%")
            except ValueError:
                print("❌ 正しい数値を入力してください")

💡 コードの説明

print("1: X の Y% を計算")

 ・パーセント計算にも2種類あるので選ばせます

if sub_choice == '1':

 ・「Xの何%」を計算する場合です

result = total * (percent / 100)

 ・例:100の20% = 100 * (20 / 100) = 20

 ・percentを100で割って割合にしてから掛けます

elif sub_choice == '2':

 ・「XはYの何%」を計算する場合です

result = (part / total) * 100

 ・例:20は100の何% = (20 / 100) * 100 = 20%

 ・割り算して100を掛けてパーセントにします

{result:.2f}%

 ・小数点以下2桁まで表示します

手順7:履歴表示と履歴クリア機能を作る

保存した計算履歴を表示したり、クリアしたりします。

コード:履歴表示

※スマートフォンでは横スクロールできます

        elif choice == '5':
            if not history:
                print("\n📭 履歴がありません")
            else:
                print("\n【計算履歴】")
                for i, record in enumerate(history, 1):
                    print(f"{i}. {record}")

💡 コードの説明

if not history:

 ・履歴リストが空かチェックします

 ・空のリストはFalseなので、notでTrueになります

for i, record in enumerate(history, 1):

 ・履歴を1から番号付きで表示します

 ・iに番号、recordに計算式が入ります

print(f"{i}. {record}")

 ・「1. 10 + 5 = 15」のように表示します

コード:履歴クリア

※スマートフォンでは横スクロールできます

        elif choice == '6':
            if history:
                confirm = input("\n履歴をクリアしますか? (y/n): ")
                if confirm.lower() == 'y':
                    history.clear()
                    print("✅ 履歴をクリアしました")
            else:
                print("\n📭 履歴がありません")

💡 コードの説明

if history:

 ・履歴があるかチェックします

 ・リストに要素があればTrueです

confirm = input("\n履歴をクリアしますか? (y/n): ")

 ・本当にクリアするか確認します

 ・誤操作を防ぐためです

history.clear()

 ・リストを空にします

 ・全ての要素が削除されます

手順8:終了処理を追加

0が選択されたら、計算回数を表示して終了します。

コード:終了処理

※スマートフォンでは横スクロールできます

        elif choice == '0':
            print("\n計算機を終了します")
            if history:
                print(f"計算回数: {len(history)}回")
            break
        else:
            print("❌ 0-6の数字を選んでください")

💡 コードの説明

if history:

 ・履歴があれば計算回数を表示します

len(history)

 ・リストの要素数を取得します

 ・計算した回数と同じです

break

 ・while文を抜けて終了します

完成コード:多機能計算機

全ての機能を組み合わせた完成版です。

コード:完成版

※スマートフォンでは横スクロールできます

import math

def advanced_calculator():
    """多機能計算機(履歴付き)"""
    history = []  # 計算履歴
    
    print("=" * 50)
    print("多機能計算機")
    print("=" * 50)
    
    while True:
        print("\n【メニュー】")
        print("1: 四則演算")
        print("2: 累乗計算")
        print("3: 平方根")
        print("4: パーセント計算")
        print("5: 計算履歴表示")
        print("6: 履歴クリア")
        print("0: 終了")
        
        choice = input("\n選択: ")
        
        if choice == '1':
            print("\n【四則演算】")
            try:
                num1 = float(input("1つ目の数: "))
                operator = input("演算子(+, -, *, /): ")
                num2 = float(input("2つ目の数: "))
                
                if operator == '+':
                    result = num1 + num2
                elif operator == '-':
                    result = num1 - num2
                elif operator == '*':
                    result = num1 * num2
                elif operator == '/':
                    if num2 == 0:
                        print("❌ ゼロで割ることはできません")
                        continue
                    result = num1 / num2
                else:
                    print("❌ 無効な演算子です")
                    continue
                
                print(f"\n結果: {num1} {operator} {num2} = {result}")
                history.append(f"{num1} {operator} {num2} = {result}")
                
            except ValueError:
                print("❌ 正しい数値を入力してください")
                
        elif choice == '2':
            print("\n【累乗計算】")
            try:
                base = float(input("底(べき乗される数): "))
                exponent = float(input("指数(べき乗する数): "))
                result = base ** exponent
                print(f"\n結果: {base}^{exponent} = {result}")
                history.append(f"{base}^{exponent} = {result}")
            except ValueError:
                print("❌ 正しい数値を入力してください")
                
        elif choice == '3':
            print("\n【平方根】")
            try:
                num = float(input("数値: "))
                if num < 0:
                    print("❌ 負の数の平方根は計算できません")
                    continue
                result = math.sqrt(num)
                print(f"\n結果: √{num} = {result}")
                history.append(f"√{num} = {result}")
            except ValueError:
                print("❌ 正しい数値を入力してください")
                
        elif choice == '4':
            print("\n【パーセント計算】")
            print("1: X の Y% を計算")
            print("2: X は Y の何%か計算")
            sub_choice = input("選択: ")
            
            try:
                if sub_choice == '1':
                    total = float(input("全体の数(X): "))
                    percent = float(input("パーセント(Y): "))
                    result = total * (percent / 100)
                    print(f"\n結果: {total}の{percent}% = {result}")
                    history.append(f"{total}の{percent}% = {result}")
                elif sub_choice == '2':
                    part = float(input("部分の数(X): "))
                    total = float(input("全体の数(Y): "))
                    if total == 0:
                        print("❌ 全体が0では計算できません")
                        continue
                    result = (part / total) * 100
                    print(f"\n結果: {part}は{total}の{result:.2f}%")
                    history.append(f"{part}は{total}の{result:.2f}%")
            except ValueError:
                print("❌ 正しい数値を入力してください")
                
        elif choice == '5':
            if not history:
                print("\n📭 履歴がありません")
            else:
                print("\n【計算履歴】")
                for i, record in enumerate(history, 1):
                    print(f"{i}. {record}")
                    
        elif choice == '6':
            if history:
                confirm = input("\n履歴をクリアしますか? (y/n): ")
                if confirm.lower() == 'y':
                    history.clear()
                    print("✅ 履歴をクリアしました")
            else:
                print("\n📭 履歴がありません")
                
        elif choice == '0':
            print("\n計算機を終了します")
            if history:
                print(f"計算回数: {len(history)}回")
            break
        else:
            print("❌ 0-6の数字を選んでください")

# 計算機起動
advanced_calculator()

実行結果

==================================================
多機能計算機
==================================================

【メニュー】
1: 四則演算
2: 累乗計算
3: 平方根
4: パーセント計算
5: 計算履歴表示
6: 履歴クリア
0: 終了

選択: 3

【平方根】
数値: 16

結果: √16.0 = 4.0

【メニュー】
...
選択: 4

【パーセント計算】
1: X の Y% を計算
2: X は Y の何%か計算
選択: 1
全体の数(X): 1000
パーセント(Y): 15

結果: 1000.0の15.0% = 150.0

選択: 5

【計算履歴】
1. √16.0 = 4.0
2. 1000.0の15.0% = 150.0

🔑 重要なポイント

math.sqrt()は平方根を計算する関数です。mathモジュールに含まれています。

history.append()で計算結果を履歴リストに追加します。

history.clear()でリストを空にできます。

{result:.2f}で小数点以下2桁まで表示します。

📄 プロジェクト2: テキストファイル分析ツール

📝 プロジェクトの説明

テキストファイルを読み込んで、文字数単語数行数などを分析するツールを作ります。これはデータ分析の基礎となる重要なスキルです。

📌 このプロジェクトで使う知識

知識 使う場面
ファイル読み込み テキストファイルの内容を取得
文字列操作 単語の分割、行の分割
辞書 単語の出現回数を集計
Counterクラス 効率的な頻度集計

準備:サンプルテキストファイルの作成

まずは分析用のサンプルファイルを作成しましょう。

コード:サンプルファイル作成

※スマートフォンでは横スクロールできます

sample_text = """Pythonは初心者にも優しいプログラミング言語です。
データ分析や機械学習の分野で広く使われています。
Pythonの文法はシンプルで読みやすく、学習しやすいという特徴があります。
世界中で多くの開発者がPythonを使っています。
Pythonを学ぶことで、様々な分野で活躍できます。"""

with open('sample.txt', 'w', encoding='utf-8') as f:
    f.write(sample_text)

print("✅ sample.txt を作成しました")

💡 コードの説明

sample_text = """..."""

 ・三重引用符で複数行の文字列を作ります

 ・改行も含めて保存されます

with open('sample.txt', 'w', encoding='utf-8') as f:

 ・sample.txtというファイルを書き込みモードで開きます

 ・'w'は書き込み(write)モードです

 ・encoding='utf-8'で日本語も正しく保存できます

f.write(sample_text)

 ・文字列をファイルに書き込みます

with文を使うと、自動でファイルを閉じてくれます

実行結果

✅ sample.txt を作成しました

🔰 ステップ1: 基本的なテキスト分析

文字数、単語数、行数を数える基本的な分析ツールを作ります。

手順1:ファイルを読み込む

作成したsample.txtファイルを読み込みます。

コード:ファイル読み込み

※スマートフォンでは横スクロールできます

def basic_text_analyzer(filename):
    """基本的なテキスト分析"""
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            content = f.read()
            lines = content.split('\n')

💡 コードの説明

def basic_text_analyzer(filename):

 ・テキスト分析の関数を定義します

 ・引数filenameで分析するファイル名を受け取ります

try:

 ・ファイルが見つからない場合などのエラーに対応します

with open(filename, 'r', encoding='utf-8') as f:

 ・指定されたファイルを読み込みモードで開きます

 ・'r'は読み込み(read)モードです

content = f.read()

 ・ファイル全体を1つの文字列として読み込みます

 ・全ての内容がcontentに入ります

lines = content.split('\n')

 ・改行文字(\n)で文字列を分割します

 ・各行がリストの要素になります

手順2:基本統計を計算する

文字数、行数、単語数を数えます。

コード:統計計算

※スマートフォンでは横スクロールできます

        total_chars = len(content)
        total_lines = len(lines)
        total_words = len(content.split())
        
        non_empty_lines = [line for line in lines if line.strip()]

💡 コードの説明

total_chars = len(content)

 ・len()で文字列の長さを取得します

 ・改行や空白も含めた総文字数です

total_lines = len(lines)

 ・リストの要素数を取得します

 ・改行で分割したので、総行数になります

total_words = len(content.split())

 ・split()で空白(スペースや改行)で分割します

 ・分割された要素数が単語数です

non_empty_lines = [line for line in lines if line.strip()]

 ・リスト内包表記を使います

 ・line.strip()で前後の空白を除去します

 ・空でない行だけを抽出します

手順3:結果を表示する

計算した統計情報を見やすく表示します。

コード:結果表示

※スマートフォンでは横スクロールできます

        print("=" * 50)
        print(f"ファイル: {filename}")
        print("=" * 50)
        print(f"📝 総文字数: {total_chars}文字")
        print(f"📄 総行数: {total_lines}行")
        print(f"💬 総単語数: {total_words}語")
        print(f"📊 1行あたりの平均文字数: {total_chars/total_lines:.1f}文字")
        print(f"📋 空行を除いた行数: {len(non_empty_lines)}行")

💡 コードの説明

print(f"ファイル: {filename}")

 ・どのファイルを分析したか表示します

print(f"📝 総文字数: {total_chars}文字")

 ・絵文字を使って見やすくしています

{total_chars/total_lines:.1f}

 ・割り算で平均文字数を計算します

 ・.1fで小数点以下1桁まで表示します

len(non_empty_lines)

 ・空行を除いた行数を表示します

手順4:エラー処理を追加する

ファイルが見つからない場合などに対応します。

コード:エラー処理

※スマートフォンでは横スクロールできます

    except FileNotFoundError:
        print(f"❌ ファイル '{filename}' が見つかりません")
    except Exception as e:
        print(f"❌ エラー: {e}")

💡 コードの説明

except FileNotFoundError:

 ・ファイルが存在しない場合のエラーを捕まえます

 ・指定したファイル名が間違っている場合などです

except Exception as e:

 ・その他の全てのエラーを捕まえます

 ・エラーの詳細をeに保存して表示します

完成コード:基本テキスト分析

全ての手順を組み合わせた完成版です。

コード:完成版

※スマートフォンでは横スクロールできます

def basic_text_analyzer(filename):
    """基本的なテキスト分析"""
    try:
        # ファイルを読み込む
        with open(filename, 'r', encoding='utf-8') as f:
            content = f.read()
            lines = content.split('\n')
        
        # 基本統計
        total_chars = len(content)
        total_lines = len(lines)
        total_words = len(content.split())
        
        # 結果表示
        print("=" * 50)
        print(f"ファイル: {filename}")
        print("=" * 50)
        print(f"📝 総文字数: {total_chars}文字")
        print(f"📄 総行数: {total_lines}行")
        print(f"💬 総単語数: {total_words}語")
        print(f"📊 1行あたりの平均文字数: {total_chars/total_lines:.1f}文字")
        
        # 空行を除いた統計
        non_empty_lines = [line for line in lines if line.strip()]
        print(f"📋 空行を除いた行数: {len(non_empty_lines)}行")
        
    except FileNotFoundError:
        print(f"❌ ファイル '{filename}' が見つかりません")
    except Exception as e:
        print(f"❌ エラー: {e}")

# 実行例
basic_text_analyzer('sample.txt')

実行結果

==================================================
ファイル: sample.txt
==================================================
📝 総文字数: 177文字
📄 総行数: 5行
💬 総単語数: 5語
📊 1行あたりの平均文字数: 35.4文字
📋 空行を除いた行数: 5行

📌 使った文字列メソッド

メソッド 説明
content.split('\n') 改行で分割して行のリストに
content.split() 空白で分割して単語のリストに
line.strip() 前後の空白を削除
len() 文字数やリストの要素数を取得

🔑 重要なポイント

with open()を使うと、ファイルを自動で閉じてくれます。

encoding='utf-8'で日本語のファイルも正しく読み書きできます。

split()は引数なしで空白文字全般(スペース、改行など)で分割します。

📊 ステップ2: 単語の出現頻度を分析

単語の出現回数を集計して、頻出単語を表示します。まず辞書を使う方法を学び、その後より便利なCounterクラスを使います。

手順1:単語をカウントする(辞書を使う方法)

辞書を使って、各単語が何回出現したか数えます。

コード:辞書でカウント

※スマートフォンでは横スクロールできます

words = content.split()
word_count = {}

for word in words:
    cleaned_word = word.strip('。、!?')
    
    if cleaned_word:
        word_count[cleaned_word] = word_count.get(cleaned_word, 0) + 1

💡 コードの説明

words = content.split()

 ・テキストを空白で分割して単語のリストにします

word_count = {}

 ・空の辞書を作ります

 ・単語をキー、出現回数を値として保存します

cleaned_word = word.strip('。、!?')

 ・単語から句読点を除去します

 ・「です。」→「です」になります

word_count.get(cleaned_word, 0)

 ・辞書から単語の出現回数を取得します

 ・単語がまだない場合は0を返します

+ 1

 ・取得した値に1を足して、出現回数を更新します

手順2:出現回数でソートする

辞書を出現回数の多い順に並び替えます。

コード:ソート

※スマートフォンでは横スクロールできます

sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)

💡 コードの説明

word_count.items()

 ・辞書をキーと値のペアのリストに変換します

 ・[('Python', 3), ('です', 2), ...]のような形式になります

sorted(...)

 ・リストをソート(並び替え)します

key=lambda x: x[1]

 ・ソートの基準を指定します

 ・x[1]は値(出現回数)を意味します

 ・lambdaは簡単な関数を作る記法です

reverse=True

 ・降順(大きい順)にソートします

 ・出現回数が多い順に並びます

手順3:結果を棒グラフ風に表示する

█記号を使って、視覚的に分かりやすく表示します。

コード:棒グラフ風表示

※スマートフォンでは横スクロールできます

for i, (word, count) in enumerate(sorted_words[:10], 1):
    bar = '█' * count
    print(f"{i:2d}. {word:15s} : {bar} ({count}回)")

💡 コードの説明

enumerate(sorted_words[:10], 1)

 ・上位10件だけを取得します

 ・1から番号を付けます

(word, count)

 ・タプルをアンパック(展開)します

 ・wordに単語、countに出現回数が入ります

bar = '█' * count

 ・█記号をcount回繰り返します

 ・出現回数分の長さの棒グラフになります

{i:2d}

 ・整数を2桁で表示します(右寄せ)

{word:15s}

 ・文字列を15文字幅で表示します(左寄せ)

完成コード:単語頻度分析

コード:完成版

※スマートフォンでは横スクロールできます

def word_frequency_analyzer(filename):
    """単語の出現頻度を分析"""
    try:
        # ファイルを読み込む
        with open(filename, 'r', encoding='utf-8') as f:
            content = f.read()
        
        # 単語を抽出
        words = content.split()
        
        # 単語の出現回数を辞書で集計
        word_count = {}
        for word in words:
            # 句読点を除去
            cleaned_word = word.strip('。、!?')
            if cleaned_word:
                word_count[cleaned_word] = word_count.get(cleaned_word, 0) + 1
        
        # 出現回数でソート(多い順)
        sorted_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
        
        # 結果表示
        print("\n【単語出現頻度】")
        print("=" * 50)
        
        # 上位10件を表示
        for i, (word, count) in enumerate(sorted_words[:10], 1):
            bar = '█' * count
            print(f"{i:2d}. {word:15s} : {bar} ({count}回)")
        
        # 統計情報
        print("\n【単語統計】")
        print(f"ユニークな単語数: {len(word_count)}語")
        print(f"最頻出単語: {sorted_words[0][0]} ({sorted_words[0][1]}回)")
        
    except FileNotFoundError:
        print(f"❌ ファイル '{filename}' が見つかりません")
    except Exception as e:
        print(f"❌ エラー: {e}")

# 実行例
word_frequency_analyzer('sample.txt')

実行結果

【単語出現頻度】
==================================================
 1. Pythonは        : █ (1回)
 2. 初心者にも優しいプログラミング言語です : █ (1回)
...

【単語統計】
ユニークな単語数: 5語
最頻出単語: Pythonは (1回)

Counterクラスを使った効率的な方法

Pythonにはcollections.Counterという便利なクラスがあり、頻度集計を簡単に行えます。

コード:Counterの基本的な使い方

※スマートフォンでは横スクロールできます

from collections import Counter

fruits = ['りんご', 'みかん', 'りんご', 'バナナ', 'りんご', 'みかん']
counter = Counter(fruits)

print(counter)
print(counter.most_common(2))

💡 コードの説明

from collections import Counter

 ・collectionsモジュールからCounterクラスを読み込みます

 ・頻度集計に特化したクラスです

Counter(fruits)

 ・リストの要素を自動でカウントします

 ・辞書のように{要素: 出現回数}の形式になります

counter.most_common(2)

 ・上位2件を取得します

 ・[(要素, 回数), ...]のリストを返します

実行結果

Counter({'りんご': 3, 'みかん': 2, 'バナナ': 1})
[('りんご', 3), ('みかん', 2)]

📌 Counterクラスの便利な機能

メソッド 説明
Counter(リスト) リストの要素を自動でカウント
most_common(n) 上位n件を取得
elements() 全要素を返す

🔑 重要なポイント

word_count.get(word, 0)はキーがなければ0を返します。

sorted(..., key=lambda x: x[1])で値でソートできます。

Counterを使うと、辞書を使うより簡潔に書けます。

🔍 ステップ3: 文字種別分析

日本語テキストのひらがな・カタカナ・漢字・英字の割合を分析します。

手順1:Unicodeの範囲で文字種を判定する

各文字がどの種類に属するか、Unicodeの範囲を使って判定します。

コード:文字種別のカウント

※スマートフォンでは横スクロールできます

hiragana = sum(1 for c in content if '\u3040' <= c <= '\u309F')
katakana = sum(1 for c in content if '\u30A0' <= c <= '\u30FF')
kanji = sum(1 for c in content if '\u4E00' <= c <= '\u9FFF')
alpha = sum(1 for c in content if c.isalpha() and c.isascii())
digit = sum(1 for c in content if c.isdigit())
space = sum(1 for c in content if c.isspace())

💡 コードの説明

'\u3040' <= c <= '\u309F'

 ・Unicode範囲でひらがなかチェックします

 ・\u3040はひらがなの開始位置です

 ・\u309Fはひらがなの終了位置です

sum(1 for c in content if ...)

 ・条件に合う文字の数を数えます

 ・ジェネレータ式とsum()を組み合わせています

 ・条件がTrueなら1、Falseなら0として合計します

'\u30A0' <= c <= '\u30FF'

 ・カタカナの範囲です

'\u4E00' <= c <= '\u9FFF'

 ・漢字の範囲です

c.isalpha() and c.isascii()

 ・アルファベットかつASCII文字(英字)です

c.isdigit()

 ・数字かチェックします

c.isspace()

 ・空白文字(スペース、改行など)かチェックします

📌 Unicode範囲の覚え方

文字種 Unicode範囲
ひらがな \u3040 〜 \u309F
カタカナ \u30A0 〜 \u30FF
漢字 \u4E00 〜 \u9FFF

⭐ ステップ4: 総合テキスト分析ツール

全ての機能を統合した完全版のテキスト分析ツールを作ります。メニュー方式で様々な分析ができるようにします。

手順1:変数の初期化とメニュー表示

コード:初期設定とメニュー

※スマートフォンでは横スクロールできます

import os
from collections import Counter

def comprehensive_text_analyzer():
    """総合テキスト分析ツール"""
    current_file = None
    
    print("=" * 50)
    print("テキストファイル分析ツール")
    print("=" * 50)
    
    while True:
        print("\n【メニュー】")
        print("1: ファイル選択")
        print("2: 基本統計")
        print("3: 単語頻度分析")
        print("4: 文字種別分析")
        print("5: レポート出力")
        print("0: 終了")
        
        choice = input("\n選択: ")

💡 コードの説明

import os

 ・osモジュールを読み込みます

 ・ファイル一覧の取得などに使います

from collections import Counter

 ・Counterクラスを読み込みます

current_file = None

 ・現在選択中のファイルを保存する変数です

 ・最初は何も選択されていないのでNoneです

手順2:ファイル選択機能

コード:ファイル選択

※スマートフォンでは横スクロールできます

        if choice == '1':
            print("\n利用可能なファイル:")
            txt_files = [f for f in os.listdir('.') if f.endswith('.txt')]
            
            if not txt_files:
                print("❌ .txtファイルが見つかりません")
                continue
            
            for i, file in enumerate(txt_files, 1):
                print(f"{i}. {file}")
            
            try:
                file_num = int(input("\nファイル番号を選択: "))
                if 1 <= file_num <= len(txt_files):
                    current_file = txt_files[file_num - 1]
                    print(f"✅ {current_file} を選択しました")
                else:
                    print("❌ 無効な番号です")
            except ValueError:
                print("❌ 数字を入力してください")

💡 コードの説明

os.listdir('.')

 ・現在のフォルダ('.')のファイル一覧を取得します

 ・全てのファイルとフォルダが含まれます

[f for f in os.listdir('.') if f.endswith('.txt')]

 ・リスト内包表記を使います

 ・.txtで終わるファイルだけを抽出します

if not txt_files:

 ・.txtファイルがあるかチェックします

 ・空のリストはFalseなので、notでTrueになります

current_file = txt_files[file_num - 1]

 ・選択されたファイル名を保存します

 ・番号から1を引いてインデックスに変換します

手順3:基本統計機能

コード:基本統計

※スマートフォンでは横スクロールできます

        elif choice == '2':
            if current_file is None:
                print("❌ 先にファイルを選択してください")
                continue
            
            try:
                with open(current_file, 'r', encoding='utf-8') as f:
                    content = f.read()
                    lines = content.split('\n')
                
                print(f"\n【基本統計: {current_file}】")
                print("=" * 50)
                print(f"📝 総文字数: {len(content):,}文字")
                print(f"📄 総行数: {len(lines)}行")
                print(f"💬 総単語数: {len(content.split()):,}語")
                print(f"📊 平均行長: {len(content)/len(lines):.1f}文字/行")
                
                non_empty = [line for line in lines if line.strip()]
                if non_empty:
                    longest = max(non_empty, key=len)
                    shortest = min(non_empty, key=len)
                    print(f"📏 最長行: {len(longest)}文字")
                    print(f"📏 最短行: {len(shortest)}文字")
                
            except Exception as e:
                print(f"❌ エラー: {e}")

💡 コードの説明

if current_file is None:

 ・ファイルが選択されているかチェックします

 ・Noneとの比較にはisを使います

{len(content):,}

 ・:,でカンマ区切りの数値表示になります

 ・例:1234 → 1,234

max(non_empty, key=len)

 ・リストから最大の要素を取得します

 ・key=lenで文字列の長さを基準にします

min(non_empty, key=len)

 ・リストから最小の要素を取得します

手順4:単語頻度分析機能(Counterを使用)

コード:単語頻度分析

※スマートフォンでは横スクロールできます

        elif choice == '3':
            if current_file is None:
                print("❌ 先にファイルを選択してください")
                continue
            
            try:
                with open(current_file, 'r', encoding='utf-8') as f:
                    content = f.read()
                
                words = content.split()
                word_counter = Counter(words)
                
                print(f"\n【単語頻度分析: {current_file}】")
                print("=" * 50)
                print(f"総単語数: {len(words):,}語")
                print(f"ユニーク単語数: {len(word_counter)}語")
                
                print("\n【頻出単語トップ10】")
                for i, (word, count) in enumerate(word_counter.most_common(10), 1):
                    percentage = (count / len(words)) * 100
                    bar = '█' * min(count, 50)
                    print(f"{i:2d}. {word:20s} {bar} {count:4d}回 ({percentage:.1f}%)")
                
            except Exception as e:
                print(f"❌ エラー: {e}")

💡 コードの説明

word_counter = Counter(words)

 ・Counterで単語を自動カウントします

 ・辞書を使うより簡潔です

word_counter.most_common(10)

 ・上位10件を自動で取得します

 ・ソートの必要がありません

percentage = (count / len(words)) * 100

 ・全体に占める割合を計算します

bar = '█' * min(count, 50)

 ・棒グラフを作ります

 ・最大50文字に制限して見やすくします

手順5:文字種別分析機能

コード:文字種別分析

※スマートフォンでは横スクロールできます

        elif choice == '4':
            if current_file is None:
                print("❌ 先にファイルを選択してください")
                continue
            
            try:
                with open(current_file, 'r', encoding='utf-8') as f:
                    content = f.read()
                
                hiragana = sum(1 for c in content if '\u3040' <= c <= '\u309F')
                katakana = sum(1 for c in content if '\u30A0' <= c <= '\u30FF')
                kanji = sum(1 for c in content if '\u4E00' <= c <= '\u9FFF')
                alpha = sum(1 for c in content if c.isalpha() and c.isascii())
                digit = sum(1 for c in content if c.isdigit())
                space = sum(1 for c in content if c.isspace())
                other = len(content) - (hiragana + katakana + kanji + alpha + digit + space)
                
                total = len(content)
                print(f"\n【文字種別分析: {current_file}】")
                print("=" * 50)
                print(f"ひらがな: {hiragana:,}文字 ({hiragana/total*100:.1f}%)")
                print(f"カタカナ: {katakana:,}文字 ({katakana/total*100:.1f}%)")
                print(f"漢字    : {kanji:,}文字 ({kanji/total*100:.1f}%)")
                print(f"英字    : {alpha:,}文字 ({alpha/total*100:.1f}%)")
                print(f"数字    : {digit:,}文字 ({digit/total*100:.1f}%)")
                print(f"空白    : {space:,}文字 ({space/total*100:.1f}%)")
                print(f"その他  : {other:,}文字 ({other/total*100:.1f}%)")
                
            except Exception as e:
                print(f"❌ エラー: {e}")

💡 コードの説明

other = len(content) - (...)

 ・その他の文字数を計算します

 ・句読点や記号などが含まれます

{hiragana/total*100:.1f}%

 ・全体に占める割合を計算します

 ・.1fで小数点以下1桁まで表示します

手順6:レポート出力機能

コード:レポート出力

※スマートフォンでは横スクロールできます

        elif choice == '5':
            if current_file is None:
                print("❌ 先にファイルを選択してください")
                continue
            
            report_file = f"report_{current_file}"
            
            try:
                with open(current_file, 'r', encoding='utf-8') as f:
                    content = f.read()
                    lines = content.split('\n')
                
                with open(report_file, 'w', encoding='utf-8') as f:
                    f.write("=" * 50 + "\n")
                    f.write("テキスト分析レポート\n")
                    f.write(f"分析対象: {current_file}\n")
                    f.write("=" * 50 + "\n\n")
                    
                    f.write("【基本統計】\n")
                    f.write(f"総文字数: {len(content):,}文字\n")
                    f.write(f"総行数: {len(lines)}行\n")
                    f.write(f"総単語数: {len(content.split()):,}語\n\n")
                    
                    words = content.split()
                    word_counter = Counter(words)
                    f.write("【頻出単語トップ10】\n")
                    for i, (word, count) in enumerate(word_counter.most_common(10), 1):
                        f.write(f"{i}. {word}: {count}回\n")
                
                print(f"✅ レポートを {report_file} に保存しました")
                
            except Exception as e:
                print(f"❌ エラー: {e}")

💡 コードの説明

report_file = f"report_{current_file}"

 ・レポートファイル名を作ります

 ・元のファイル名の前にreport_を付けます

with open(report_file, 'w', encoding='utf-8') as f:

 ・レポートファイルを書き込みモードで開きます

f.write("..." + "\n")

 ・ファイルに文字列を書き込みます

 ・\nで改行を入れます

完成コード:総合テキスト分析ツール(一部抜粋)

全ての機能を持った総合ツールの主要部分です。

コード:完成版(主要部分)

※スマートフォンでは横スクロールできます

import os
from collections import Counter

def comprehensive_text_analyzer():
    """総合テキスト分析ツール"""
    current_file = None
    
    print("=" * 50)
    print("テキストファイル分析ツール")
    print("=" * 50)
    
    while True:
        print("\n【メニュー】")
        print("1: ファイル選択")
        print("2: 基本統計")
        print("3: 単語頻度分析")
        print("4: 文字種別分析")
        print("5: レポート出力")
        print("0: 終了")
        
        choice = input("\n選択: ")
        
        # 各機能の実装(上記の手順2〜6参照)
        # ...
        
        elif choice == '0':
            print("\n分析ツールを終了します")
            break
        else:
            print("❌ 0-5の数字を選んでください")

# ツール起動
comprehensive_text_analyzer()

実行結果

==================================================
テキストファイル分析ツール
==================================================

【メニュー】
1: ファイル選択
2: 基本統計
3: 単語頻度分析
4: 文字種別分析
5: レポート出力
0: 終了

選択: 1

利用可能なファイル:
1. sample.txt

ファイル番号を選択: 1
✅ sample.txt を選択しました

選択: 4

【文字種別分析: sample.txt】
==================================================
ひらがな: 55文字 (31.1%)
カタカナ: 6文字 (3.4%)
漢字    : 36文字 (20.3%)
英字    : 30文字 (16.9%)
数字    : 0文字 (0.0%)
空白    : 4文字 (2.3%)
その他  : 46文字 (26.0%)

🔑 重要なポイント

os.listdir('.')で現在のフォルダのファイル一覧を取得できます。

Counter.most_common(10)で上位10件を簡単に取得できます。

{len(content):,}でカンマ区切りの数値表示ができます。

レポート機能で分析結果をファイルに保存できます。

🏆 最終チャレンジ課題

Python基礎コースの総仕上げとして、以下の課題に挑戦してみましょう!

最終課題1:統計計算機能を追加(中級)

📋 問題

計算機アプリに、リストの数値から平均、最大値、最小値、中央値を計算する機能を追加してください。

カンマ区切りで数値を入力すると、統計値を表示するようにしてください。

解答例を見る

コード

※スマートフォンでは横スクロールできます

def statistics_calculator():
    """統計計算機能"""
    print("\n【統計計算】")
    print("数値をカンマ区切りで入力してください")
    print("例: 10, 20, 30, 40, 50")
    
    try:
        numbers = input("\n数値: ")
        num_list = [float(x.strip()) for x in numbers.split(',')]
        
        if not num_list:
            print("❌ 数値を入力してください")
            return
        
        total = sum(num_list)
        average = total / len(num_list)
        maximum = max(num_list)
        minimum = min(num_list)
        
        sorted_list = sorted(num_list)
        n = len(sorted_list)
        if n % 2 == 0:
            median = (sorted_list[n//2 - 1] + sorted_list[n//2]) / 2
        else:
            median = sorted_list[n//2]
        
        print("\n【統計結果】")
        print(f"データ数: {len(num_list)}個")
        print(f"合計: {total}")
        print(f"平均: {average:.2f}")
        print(f"最大: {maximum}")
        print(f"最小: {minimum}")
        print(f"中央値: {median}")
        print(f"範囲: {maximum - minimum}")
        
    except ValueError:
        print("❌ 正しい数値を入力してください")

# 実行
statistics_calculator()

最終課題2:複数ファイルの一括分析(上級)

📋 問題

現在のフォルダ内の全ての.txtファイルを分析して、各ファイルの統計を一覧表示するプログラムを作成してください。

解答例を見る

コード

※スマートフォンでは横スクロールできます

import os

def batch_text_analyzer():
    """複数ファイルの一括分析"""
    results = []
    
    txt_files = [f for f in os.listdir('.') if f.endswith('.txt')]
    
    if not txt_files:
        print("❌ .txtファイルが見つかりません")
        return
    
    print(f"\n{len(txt_files)}個のファイルを分析中...")
    print("=" * 70)
    
    for filename in txt_files:
        try:
            with open(filename, 'r', encoding='utf-8') as f:
                content = f.read()
            
            results.append({
                'file': filename,
                'chars': len(content),
                'lines': len(content.split('\n')),
                'words': len(content.split())
            })
        except Exception as e:
            print(f"⚠️ {filename}: エラー - {e}")
    
    print(f"{'ファイル名':<30} {'文字数':>10} {'行数':>8} {'単語数':>8}")
    print("-" * 70)
    
    for r in results:
        print(f"{r['file']:<30} {r['chars']:>10,} {r['lines']:>8} {r['words']:>8}")
    
    print("-" * 70)
    total_chars = sum(r['chars'] for r in results)
    total_lines = sum(r['lines'] for r in results)
    total_words = sum(r['words'] for r in results)
    print(f"{'合計':<30} {total_chars:>10,} {total_lines:>8} {total_words:>8}")

# 実行
batch_text_analyzer()

最終課題3:オリジナルツールの開発(上級)

📋 問題

これまで学んだ全ての知識を使って、自分が欲しいと思うツールを開発してみましょう!

アイデア例を見る

ツールのアイデア例

・📝 日記アプリ(日付ごとにテキストを保存)

・💰 家計簿アプリ(収入・支出を記録・集計)

・📚 単語帳アプリ(英単語とその意味を記録・テスト)

・⏱️ ストップウォッチ/タイマーアプリ

・📊 成績管理ツール(科目ごとの点数を記録・分析)

・🎯 習慣トラッカー(毎日の習慣を記録)

・📖 読書記録アプリ(読んだ本と感想を管理)

開発のステップ

1. どんな機能が必要か書き出す

2. データをどう保存するか考える(リスト、辞書、ファイル)

3. まず最小限の機能で動くものを作る

4. 少しずつ機能を追加していく

❓ よくある質問

Q1: データ分析を学ぶには、さらに数学の知識が必要ですか?

A: 基本的な算数(四則演算、平均、割合)ができれば十分です。統計学の知識は、データ分析コースの中で必要に応じて学んでいきます。高度な数学は、機械学習などさらに先のステップで必要になります。

Q2: 実際の仕事でPythonはどう使われていますか?

A: データ分析、Webアプリ開発、業務自動化、AI・機械学習など幅広く使われています。例えば、ExcelファイルからSQLに変換、定期的なレポートを自動生成、データから予測モデルを作成などです。

Q3: プログラミングのスキルアップのコツは?

A:実際に手を動かすこと」が最も重要です。チュートリアルを見るだけでなく、自分でコードを書いて、エラーを経験して、解決する。この繰り返しが確実にスキルを向上させます。毎日30分でも良いので、コードを書く習慣をつけましょう。

Q4: エラーが出た時、どうやって解決すればいいですか?

A: まずエラーメッセージをよく読みましょう。どの行で、何が原因でエラーが出ているかが書いてあります。それでも分からない場合は、エラーメッセージをGoogle検索すると、多くの場合同じ問題を経験した人の解決策が見つかります。

Q5: 次のステップに進む前に、何を復習すべきですか?

A: 特に重要なのは、リストと辞書の操作for文関数の定義です。これらはデータ分析で頻繁に使います。自信がない部分があれば、該当するステップに戻って復習しましょう。完璧を目指さず、「なんとなく分かる」レベルで大丈夫です。

📊 データ分析への橋渡し

🎯 これまで学んだことの総まとめ

ここまでのPython基礎コースで、プログラミングの重要な概念をたくさん学びました。これらの知識は、次のステップであるデータ分析機械学習への土台となります。

✅ 習得したスキル一覧

カテゴリ 内容
基本文法 変数、データ型、演算子
制御構文 if文、for文、while文
データ構造 リスト、辞書、タプル、セット
関数 定義、引数、戻り値、スコープ
ファイル操作 読み書き、CSV処理
エラー処理 try-except、デバッグ
オブジェクト指向 クラス、インスタンス、継承
実践的開発 プロジェクト作成、ツール開発

🚀 次のステップ: データ分析入門

📖 データ分析で学ぶこと

NumPy:数値計算ライブラリ

Pandas:データ操作・分析ライブラリ

Matplotlib:データ可視化ライブラリ

統計分析:平均、分散、相関など

実データ分析:CSVデータの読み込みと分析

💡 データ分析の簡単なプレビュー

データ分析では、今回作ったようなテキスト分析を、より強力なライブラリを使って行います。

例えば、Pandasを使えば数行のコードでCSVファイルを読み込み、基本統計量を表示し、グラフで可視化できます。

📌 特に重要な復習ポイント

項目 理由
リストと辞書の操作 データを格納・操作する基本
for文とリスト内包表記 大量のデータを効率的に処理
関数の定義と使い方 コードの再利用と整理
ファイルの読み書き 外部データの取り込み
try-exceptによるエラー処理 堅牢なプログラム作成

🎓 Python基礎コース完走おめでとうございます!

🎉 あなたの成長

プログラミング初心者だったあなたが、ここまで来ました。

変数も知らなかった状態から、今では自分でゲームツールを作れるようになりました。

これは素晴らしい成長です!

💪 最後のメッセージ

プログラミングは、自転車に乗るようなものです。

最初は難しく感じても、練習を重ねれば必ずできるようになります。

エラーを恐れず、楽しみながら学習を続けてください。

あなたの可能性は無限大です!

🎓 Python基礎コース修了 🎓

次のステージで会いましょう!

🎉 ステップ25のまとめ

✅ このステップで作ったもの

多機能計算機:四則演算、累乗、平方根、パーセント、履歴機能

テキスト分析ツール:基本統計、単語頻度、文字種別、レポート出力

📌 学んだテクニック

テクニック 使い方
mathモジュール 平方根、三角関数などの数学計算
Counter 効率的な頻度集計
Unicode範囲 文字種別の判定
os.listdir() フォルダ内のファイル一覧取得
レポート出力 分析結果をファイルに保存
📝

学習メモ

Pythonプログラミング基礎 - Step 25

📋 過去のメモ一覧
#artnasekai #学習メモ
LINE