🚀 ステップ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