Python面白いプログラム例|初心者でも作れる楽しいコード

Pythonで作れる面白いプログラム例を初心者向けに紹介。ゲーム、アート、実用ツールなど楽しく学べるコード例を具体的に解説し、プログラミングの魅力を体験できます

Learning Next 運営
27 分で読めます

Python面白いプログラム例|初心者でも作れる楽しいコード

みなさん、Pythonを勉強していて「面白いものを作ってみたい!」って思ったことありませんか?

「基本構文は覚えたけど、次に何を作ればいいかわからない」 「もっと楽しいプログラムに挑戦したい」 「実際に動くものを作って達成感を味わいたい」

こんな気持ち、よくありますよね。

実は、Pythonなら初心者でも短いコードで面白いプログラムが作れちゃうんです。 ゲームやアート、実用ツールまで、想像以上に幅広いものが作れますよ。

この記事では、初心者でも楽しく作れるPythonプログラムの例をたくさん紹介します。 コードを書いて動かす喜びを体験して、プログラミングがもっと好きになりましょう!

なぜ面白いプログラムを作ることが大切?

プログラミング学習では、楽しさを感じることが一番重要です。 面白いプログラムを作ることの意味を考えてみましょう。

学習効果が抜群

面白いプログラムを作ると、こんな効果があります。

  • やる気がどんどん上がる
  • 実際の問題解決を体験できる
  • 創造性と論理的思考が同時に鍛えられる
  • 完成したときの達成感で自信がつく

楽しみながら学ぶと、知識が自然に頭に入ってきます。

プログラミングの本当の魅力

まずは簡単な例から見てみましょう。

# シンプルなおみくじプログラム
import random
def omikuji():
"""今日のおみくじを引く"""
fortunes = ["大吉", "中吉", "小吉", "吉", "末吉", "凶"]
result = random.choice(fortunes)
print("🎌 今日のおみくじ 🎌")
print(f"あなたの運勢は... {result}!")
if result == "大吉":
print("素晴らしい一日になりそうです!")
elif result in ["中吉", "小吉", "吉"]:
print("良いことがありそうです♪")
else:
print("気をつけて過ごしてくださいね")
# おみくじを引いてみよう
omikuji()

このコードを実行すると、こんな感じで表示されます。

🎌 今日のおみくじ 🎌 あなたの運勢は... 中吉! 良いことがありそうです♪

たった数行のコードで、こんなに楽しいプログラムが作れちゃうんです。 これがプログラミングの魅力ですね!

ゲーム系プログラム

ゲームは、プログラミング学習で一番人気のジャンルです。 初心者でも作れる面白いゲームを見てみましょう。

数当てゲーム

import random
def number_guessing_game():
"""数当てゲーム"""
print("🎯 数当てゲームへようこそ! 🎯")
print("1から100までの数字を当ててください")
secret_number = random.randint(1, 100)
attempts = 0
max_attempts = 7
while attempts < max_attempts:
try:
guess = int(input(f"
予想を入力してください(残り{max_attempts - attempts}回): "))
attempts += 1
if guess == secret_number:
print(f"🎉 正解! {attempts}回で当てました!")
break
elif guess < secret_number:
print("📈 もっと大きい数字です")
else:
print("📉 もっと小さい数字です")
except ValueError:
print("数字を入力してください")
else:
print(f"💀 ゲームオーバー!正解は {secret_number} でした")
# ゲームを実行
number_guessing_game()

このゲームのポイントを見てみましょう。

random.randint(1, 100) で1から100までのランダムな数字を生成します。 whileループ で制限回数まで繰り返し処理を行います。 try-except でユーザーの入力エラーをキャッチします。

実際にプレイすると、こんな感じになります。

🎯 数当てゲームへようこそ! 🎯 1から100までの数字を当ててください 予想を入力してください(残り7回): 50 📈 もっと大きい数字です 予想を入力してください(残り6回): 75 📉 もっと小さい数字です 予想を入力してください(残り5回): 62 🎉 正解! 3回で当てました!

このゲームでは、条件分岐、ループ、例外処理など重要な概念を楽しく学べます。

じゃんけんゲーム

import random
def janken_game():
"""じゃんけんゲーム"""
choices = ["グー", "チョキ", "パー"]
choice_emojis = {"グー": "✊", "チョキ": "✌️", "パー": "✋"}
player_score = 0
computer_score = 0
round_count = 0
print("🥊 じゃんけんゲーム開始! 🥊")
print("3回勝負です!")
while round_count < 3:
print(f"
---{round_count + 1}ラウンド ---")
print("0: グー, 1: チョキ, 2: パー")
try:
player_input = int(input("あなたの選択 (0-2): "))
if player_input not in [0, 1, 2]:
print("0、1、2のいずれかを入力してください")
continue
player_choice = choices[player_input]
computer_choice = random.choice(choices)
print(f"
あなた: {choice_emojis[player_choice]} {player_choice}")
print(f"コンピュータ: {choice_emojis[computer_choice]} {computer_choice}")
# 勝敗判定
if player_choice == computer_choice:
print("あいこです!")
continue
elif (player_choice == "グー" and computer_choice == "チョキ") or \
(player_choice == "チョキ" and computer_choice == "パー") or \
(player_choice == "パー" and computer_choice == "グー"):
print("🎉 あなたの勝ち!")
player_score += 1
else:
print("😔 コンピュータの勝ち")
computer_score += 1
round_count += 1
print(f"現在のスコア - あなた: {player_score}, コンピュータ: {computer_score}")
except ValueError:
print("数字を入力してください")
# 最終結果
print("
" + "="*30)
print("🏆 最終結果 🏆")
if player_score > computer_score:
print("あなたの総合勝利です!おめでとう!🎊")
elif computer_score > player_score:
print("コンピュータの総合勝利です... 次回頑張って!💪")
else:
print("引き分けです!いい勝負でした!🤝")
# じゃんけんゲームを実行
janken_game()

じゃんけんゲームのポイントを解説しますね。

choicesリスト で選択肢を管理します。 choice_emojis辞書 で絵文字とテキストを対応付けます。 複雑な条件分岐 で勝敗判定を行います。

実行すると、こんな感じでゲームが進みます。

🥊 じゃんけんゲーム開始! 🥊 3回勝負です! --- 第1ラウンド --- 0: グー, 1: チョキ, 2: パー あなたの選択 (0-2): 0 あなた: ✊ グー コンピュータ: ✌️ チョキ 🎉 あなたの勝ち! 現在のスコア - あなた: 1, コンピュータ: 0

このゲームでは、リスト、辞書、複雑な条件分岐を楽しく学べます。

アート・視覚系プログラム

プログラミングでアートを作ると、創造性と論理性の両方が鍛えられます。 視覚的に楽しいプログラムを作ってみましょう。

ASCII アート生成

def create_ascii_art():
"""ASCII アートを生成"""
def draw_heart():
"""ハートのASCIIアート"""
heart = """
♥♥♥♥♥ ♥♥♥♥♥
♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥♥♥
♥♥♥♥♥♥♥
♥♥♥♥♥
♥♥♥
"""
return heart
def draw_rainbow():
"""虹のASCIIアート"""
colors = ["🔴", "🟠", "🟡", "🟢", "🔵", "🟣", "🟤"]
rainbow = ""
for i, color in enumerate(colors):
spaces = " " * (7 - i)
rainbow += spaces + color * (i * 2 + 1) + "
"
return rainbow
print("🎨 ASCII アート ギャラリー 🎨")
print("
1. ハート")
print(draw_heart())
print("
2. 虹")
print(draw_rainbow())
# ASCII アートを表示
create_ascii_art()

このコードのポイントを見てみましょう。

関数の中に関数 を定義して、コードを整理しています。 enumerate関数 でリストのインデックスと値を同時に取得しています。 文字列の繰り返し で絵文字のパターンを作っています。

実行すると、こんなアートが表示されます。

🎨 ASCII アート ギャラリー 🎨 1. ハート ♥♥♥♥♥ ♥♥♥♥♥ ♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥ ♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥♥ 2. 虹 🔴 🟠🟠🟠 🟡🟡🟡🟡🟡 🟢🟢🟢🟢🟢🟢🟢

ASCII アートでは、文字列操作とパターン生成を楽しく学べます。

パターン生成プログラム

def pattern_generator():
"""様々なパターンを生成"""
def triangle_pattern(n):
"""三角形パターン"""
print("📐 三角形パターン")
for i in range(1, n + 1):
print("*" * i)
def pyramid_pattern(n):
"""ピラミッドパターン"""
print("
🏛️ ピラミッドパターン")
for i in range(1, n + 1):
spaces = " " * (n - i)
stars = "*" * (2 * i - 1)
print(spaces + stars)
def diamond_pattern(n):
"""ダイヤモンドパターン"""
print("
💎 ダイヤモンドパターン")
# 上半分
for i in range(1, n + 1):
spaces = " " * (n - i)
stars = "*" * (2 * i - 1)
print(spaces + stars)
# 下半分
for i in range(n - 1, 0, -1):
spaces = " " * (n - i)
stars = "*" * (2 * i - 1)
print(spaces + stars)
# パターン生成
size = 5
triangle_pattern(size)
pyramid_pattern(size)
diamond_pattern(size)
# パターン生成を実行
pattern_generator()

このコードの仕組みを説明しますね。

range(1, n + 1) で1からnまでの数字を順番に処理します。 文字列の掛け算 で同じ文字を繰り返し作ります。 スペースとアスタリスク を組み合わせて図形を作ります。

実行すると、こんなパターンが表示されます。

📐 三角形パターン * ** *** **** ***** 🏛️ ピラミッドパターン * *** ***** ******* ********* 💎 ダイヤモンドパターン * *** ***** ******* ********* ******* ***** *** *

パターン生成では、ネストしたループと数学的思考を学べます。

実用ツール系プログラム

実際に役立つツールを作ると、プログラミングの実用性を体験できます。 日常生活で使えるプログラムを作ってみましょう。

パスワード生成ツール

import random
import string
def password_generator():
"""パスワード生成ツール"""
def generate_password(length=12, include_symbols=True, include_numbers=True):
"""カスタマイズ可能なパスワード生成"""
lowercase = string.ascii_lowercase
uppercase = string.ascii_uppercase
numbers = string.digits if include_numbers else ""
symbols = "!@#$%^&*()_+-=[]{}|;:,.<>?" if include_symbols else ""
all_chars = lowercase + uppercase + numbers + symbols
if not all_chars:
return "エラー: 使用可能な文字がありません"
password = ''.join(random.choices(all_chars, k=length))
return password
def check_password_strength(password):
"""パスワード強度チェック"""
score = 0
feedback = []
if len(password) >= 8:
score += 1
else:
feedback.append("8文字以上にしてください")
if any(c.islower() for c in password):
score += 1
else:
feedback.append("小文字を含めてください")
if any(c.isupper() for c in password):
score += 1
else:
feedback.append("大文字を含めてください")
if any(c.isdigit() for c in password):
score += 1
else:
feedback.append("数字を含めてください")
if any(c in "!@#$%^&*()_+-=[]{}|;:,.<>?" for c in password):
score += 1
else:
feedback.append("記号を含めてください")
strength_levels = {
0: "非常に弱い",
1: "弱い",
2: "普通",
3: "強い",
4: "非常に強い",
5: "最強"
}
return strength_levels[score], feedback
print("🔐 パスワード生成ツール 🔐")
# サンプル使用例
print("パスワード生成例:")
sample_password = generate_password(12, True, True)
print(f"生成されたパスワード: {sample_password}")
strength, feedback = check_password_strength(sample_password)
print(f"パスワード強度: {strength}")
# パスワード生成ツールを実行
password_generator()

このツールのポイントを見てみましょう。

stringモジュール で文字の種類を取得します。 random.choices でランダムな文字を選択します。 any関数 で条件に合う文字があるかチェックします。

実行すると、こんな結果が表示されます。

🔐 パスワード生成ツール 🔐 パスワード生成例: 生成されたパスワード: K9#mP2@xL5&q パスワード強度: 最強

パスワード生成ツールでは、文字列操作、条件分岐、実用的なアルゴリズムを学べます。

BMI計算機

def bmi_calculator():
"""BMI計算機"""
def calculate_bmi(weight, height):
"""BMI計算"""
bmi = weight / (height ** 2)
return bmi
def get_bmi_category(bmi):
"""BMI判定"""
if bmi < 18.5:
return "低体重", "もう少し体重を増やすことをお勧めします"
elif 18.5 <= bmi < 25:
return "普通体重", "理想的な体重です!"
elif 25 <= bmi < 30:
return "肥満(1度)", "少し体重を減らすことをお勧めします"
elif 30 <= bmi < 35:
return "肥満(2度)", "体重管理に注意が必要です"
else:
return "肥満(3度)", "医師に相談することをお勧めします"
def ideal_weight_range(height):
"""理想体重範囲の計算"""
min_weight = 18.5 * (height ** 2)
max_weight = 24.9 * (height ** 2)
return min_weight, max_weight
print("⚖️ BMI計算機 ⚖️")
print("身長と体重からBMIを計算します")
# サンプル計算
height = 1.70 # 170cm
weight = 65 # 65kg
bmi = calculate_bmi(weight, height)
category, advice = get_bmi_category(bmi)
min_ideal, max_ideal = ideal_weight_range(height)
print(f"
📊 計算例(身長{height}m, 体重{weight}kg)")
print(f"BMI: {bmi:.1f}")
print(f"判定: {category}")
print(f"アドバイス: {advice}")
print(f"理想体重範囲: {min_ideal:.1f}kg - {max_ideal:.1f}kg")
# BMI計算機を実行
bmi_calculator()

このプログラムの仕組みを説明しますね。

calculate_bmi関数 で数学的な計算を行います。 get_bmi_category関数 で範囲による条件分岐を行います。 複数の戻り値 で関連する情報をまとめて返します。

実行すると、こんな結果が表示されます。

⚖️ BMI計算機 ⚖️ 身長と体重からBMIを計算します 📊 計算例(身長1.7m, 体重65kg) BMI: 22.5 判定: 普通体重 アドバイス: 理想的な体重です! 理想体重範囲: 53.5kg - 71.9kg

BMI計算機では、数学的計算、条件分岐、データ分析を学べます。

学習に役立つプログラム

プログラミング学習をサポートするツールを作ると、メタ学習効果が期待できます。

英単語暗記ツール

import random
def vocabulary_trainer():
"""英単語暗記ツール"""
# 基本的な英単語辞書
vocabulary = {
"apple": "りんご",
"book": "本",
"cat": "猫",
"dog": "犬",
"house": "家",
"car": "車",
"school": "学校",
"friend": "友達",
"water": "水",
"food": "食べ物"
}
def quiz_mode():
"""クイズモード(デモ版)"""
print("
📚 英単語クイズモード(デモ)")
# ランダムに3問出題
words = random.sample(list(vocabulary.keys()), 3)
correct_answers = 0
for word in words:
correct_answer = vocabulary[word]
print(f"
Q: '{word}' の意味は?")
print(f"A: {correct_answer}")
correct_answers += 1
accuracy = (correct_answers / 3) * 100
print(f"
結果: {correct_answers}/3問正解 ({accuracy:.0f}%)")
def practice_mode():
"""練習モード"""
print("
✏️ 練習モード - 単語一覧")
print("-" * 30)
for word, meaning in vocabulary.items():
print(f"{word:12} : {meaning}")
def show_statistics():
"""統計表示"""
print(f"
📊 学習統計")
print(f"登録単語数: {len(vocabulary)}語")
print("カテゴリ: 基本単語")
print("学習レベル: 初級")
print("🎓 英単語暗記ツール 🎓")
print("英語学習をサポートします")
practice_mode()
quiz_mode()
show_statistics()
# 英単語暗記ツールを実行
vocabulary_trainer()

このツールのポイントを見てみましょう。

辞書型データ で英単語と意味を対応付けます。 random.sample でランダムに問題を選択します。 機能ごとに関数を分割 してコードを整理します。

実行すると、こんな結果が表示されます。

🎓 英単語暗記ツール 🎓 英語学習をサポートします ✏️ 練習モード - 単語一覧 ------------------------------ apple : りんご book : 本 cat : 猫 dog : 犬 house : 家 📚 英単語クイズモード(デモ) Q: 'dog' の意味は? A: 犬 Q: 'apple' の意味は? A: りんご Q: 'house' の意味は? A: 家 結果: 3/3問正解 (100%) 📊 学習統計 登録単語数: 10語 カテゴリ: 基本単語 学習レベル: 初級

学習ツールでは、データ管理、ランダム化、統計処理を学べます。

より楽しくするためのアイデア

プログラムをもっと面白くするための工夫を紹介します。

絵文字を活用

def emoji_calculator():
"""絵文字計算機"""
operations = {
"+": "➕",
"-": "➖",
"*": "✖️",
"/": "➗"
}
print("🧮 絵文字計算機 🧮")
a = 10
b = 3
for op, emoji in operations.items():
if op == "/":
result = a / b
print(f"{a} {emoji} {b} = {result:.2f}")
else:
result = eval(f"{a} {op} {b}")
print(f"{a} {emoji} {b} = {result}")
# 絵文字計算機を実行
emoji_calculator()

色付きテキスト

def colored_messages():
"""色付きメッセージ(エスケープシーケンス使用)"""
# ANSIエスケープコード
colors = {
"赤": "\033[31m",
"緑": "\033[32m",
"青": "\033[34m",
"黄": "\033[33m",
"リセット": "\033[0m"
}
print("🌈 色付きメッセージ 🌈")
print(f"{colors['赤']}これは赤い文字です{colors['リセット']}")
print(f"{colors['緑']}これは緑の文字です{colors['リセット']}")
print(f"{colors['青']}これは青い文字です{colors['リセット']}")
print(f"{colors['黄']}これは黄色い文字です{colors['リセット']}")
# 色付きメッセージを実行
colored_messages()

まとめ

Python で作れる面白いプログラム例について、ゲーム、アート、実用ツール、学習支援など様々なジャンルを紹介しました。

今回学んだポイント

  • ゲーム系: 数当て、じゃんけん、文字当てなど
  • アート系: ASCII アート、パターン生成など
  • 実用ツール: パスワード生成、BMI計算など
  • 学習支援: 英単語暗記、計算練習など

これらのプログラムは、プログラミングの基本概念を楽しく学べるように設計されています。 実際にコードを書いて動かすことで、プログラミングの本当の魅力を体験できます。

次のステップ

まずは興味のあるプログラムから始めてみてください。 コードを改造したり、新しい機能を追加したりして、自分だけのオリジナルプログラムを作ってみましょう。

試行錯誤を通じて、プログラミングのスキルと楽しさの両方を身につけられますよ。 ぜひ今回紹介したプログラムを参考に、あなた独自の面白いプログラムを作ってみてくださいね!

関連記事