Pythonプログラミング体験|30分で動くコードを書こう

プログラミング初心者でも30分で実際に動くPythonコードが書ける体験型ガイド。簡単なゲームからWebアプリまで、すぐに試せる実践的なコード例を紹介します。

Learning Next 運営
19 分で読めます

Pythonプログラミング体験|30分で動くコードを書こう

プログラミングって本当に難しいの?

みなさん、こんな風に思っていませんか?

「プログラミングって難しそう」 「コードが複雑で理解できない」 「何時間も勉強しないと動かない」

実は、そんなことありません。

30分あれば、実際に動くプログラムが作れるんです。 今回は、そんな体験をお届けします。

この記事を読みながら一緒にコードを書いてみましょう。 きっとプログラミングが楽しくなりますよ!

最初の5分:Python環境をチェックしよう

まずは、Pythonが動くかテストしてみましょう。

簡単な動作確認をしてみよう

# まずはPythonが動くかテストしてみよう
print("Hello, Python!")
print("プログラミング体験、始めましょう!")

このコードを実行してみてください。 「Hello, Python!」と表示されれば準備完了です。

少し計算もしてみましょう。

# 簡単な計算もできます
result = 10 + 20
print(f"10 + 20 = {result}")

ここでは、resultという名前の箱に計算結果を入れています。 fを使うと、計算結果を文字の中に入れて表示できます。

今日の日付も表示してみよう

# 今日の日付も表示できます
from datetime import datetime
now = datetime.now()
print(f"今日は{now.strftime('%Y年%m月%d日')}です")

datetimeというツールを使って、今日の日付を取得しています。 strftimeで日付の表示形式を指定できます。

Pythonがない場合の解決方法

もしPythonがインストールされていなくても大丈夫です。

# オンラインでPythonを試せるサービス
online_options = [
"Google Colab(無料、Googleアカウントのみ必要)",
"Replit(ブラウザでプログラミング)",
"CodePen(簡単なコード実行)",
"Trinket(教育向けオンライン環境)"
]
print("オンラインでPythonを試せるサービス:")
for i, option in enumerate(online_options, 1):
print(f"{i}. {option}")

この例では、enumerateを使って番号付きのリストを作っています。 ブラウザだけでもプログラミングが楽しめますね。

10分チャレンジ:おみくじプログラムを作ろう

今度は、運勢を占うおみくじプログラムを作ってみましょう。

基本版:シンプルなおみくじ

まずは基本的なおみくじから始めます。

# おみくじプログラム(基本版)
import random
# 運勢のリスト
fortunes = ["大吉", "中吉", "小吉", "吉", "末吉", "凶"]
print("🎌 今日のおみくじ 🎌")
print("=" * 20)
# ランダムに運勢を選ぶ
today_fortune = random.choice(fortunes)
print(f"あなたの今日の運勢は『{today_fortune}』です!")

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

最初のimport randomでは、ランダムな処理を行うためのツールを読み込んでいます。 fortunesというリストに、可能な運勢を全部入れています。

# 運勢に応じたメッセージ
if today_fortune == "大吉":
print("🌟 素晴らしい一日になりそうです!")
elif today_fortune == "中吉":
print("😊 いいことがありそうですね")
elif today_fortune in ["小吉", "吉"]:
print("🙂 平穏な一日を過ごせそうです")
else:
print("😌 のんびり過ごすのがよさそうです")

if文を使って、運勢によって違うメッセージを表示しています。 elifは「もしくは」という意味です。

発展版:詳細なアドバイス付きおみくじ

今度は、もう少し高度なおみくじを作ってみましょう。

# おみくじプログラム(発展版)
import random
from datetime import datetime
# 詳細な運勢情報
fortune_details = {
"大吉": {
"ラッキーカラー": "金色",
"ラッキーナンバー": 7,
"アドバイス": "積極的に行動すると良い結果が得られます"
},
"中吉": {
"ラッキーカラー": "青色",
"ラッキーナンバー": 3,
"アドバイス": "周りの人とのコミュニケーションを大切に"
},
"小吉": {
"ラッキーカラー": "緑色",
"ラッキーナンバー": 5,
"アドバイス": "小さな変化が幸運を呼び込みます"
}
}

ここでは辞書という仕組みを使っています。 運勢をキーにして、詳細情報を取り出せるようになっています。

def draw_omikuji():
"""おみくじを引く関数"""
print("🎋 詳細おみくじ 🎋")
print("=" * 30)
# 現在の時刻を表示
now = datetime.now()
print(f"占い時刻: {now.strftime('%H時%M分')}")
# 運勢を決定
fortune = random.choice(list(fortune_details.keys()))
details = fortune_details[fortune]
# 結果表示
print(f"
🔮 運勢: {fortune}")
print(f"🎨 ラッキーカラー: {details['ラッキーカラー']}")
print(f"🔢 ラッキーナンバー: {details['ラッキーナンバー']}")
print(f"💡 アドバイス: {details['アドバイス']}")
return fortune

defを使って、おみくじを引く処理を関数にしました。 関数にすることで、コードが整理されて読みやすくなります。

10分チャレンジ:数当てゲームを作ろう

次は、コンピューターとの対戦ゲームを作ってみましょう。

インタラクティブな数当てゲーム

# 数当てゲーム
import random
def number_guessing_game():
"""数当てゲームのメイン処理"""
print("🎮 数当てゲーム 🎮")
print("=" * 25)
print("コンピューターが1〜10の数字を考えました")
print("3回以内に当ててください!")
# コンピューターが数字を選ぶ
computer_number = random.randint(1, 10)
max_attempts = 3

ここでは、1から10の間でランダムな数字を選んでいます。 randint(1, 10)は1から10の間の整数を選ぶ関数です。

for attempt in range(1, max_attempts + 1):
print(f"【{attempt}回目】")
# プレイヤーの入力(実際の実行時は input() を使用)
player_guess = int(input("あなたの予想を入力してください: "))
if player_guess == computer_number:
print("🎉 正解です!おめでとうございます!")
print(f"✨ {attempt}回目で当てました!")
return True
elif player_guess < computer_number:
print("📈 もっと大きい数字です")
else:
print("📉 もっと小さい数字です")

for文を使って、最大3回まで挑戦できるようにしています。 input()でユーザーの入力を受け取り、int()で数字に変換しています。

スコア機能付きバージョン

さらに高度なバージョンも作ってみましょう。

# スコア機能付き数当てゲーム
class NumberGame:
def __init__(self):
self.total_games = 0
self.wins = 0
self.total_attempts = 0
def play_round(self, computer_number, player_guesses):
"""1ラウンドのゲーム処理"""
self.total_games += 1
for attempt, guess in enumerate(player_guesses, 1):
self.total_attempts += 1
if guess == computer_number:
self.wins += 1
return attempt
elif attempt < len(player_guesses):
hint = "大きい" if guess < computer_number else "小さい"
print(f"{attempt}回目: {guess} → もっと{hint}数字です")
return None

ここではclassを使って、ゲームの状態を管理しています。 __init__は最初に1回だけ実行される準備処理です。

def show_stats(self):
"""統計情報を表示"""
win_rate = (self.wins / self.total_games * 100) if self.total_games > 0 else 0
avg_attempts = (self.total_attempts / self.total_games) if self.total_games > 0 else 0
print("
📊 ゲーム統計")
print("=" * 20)
print(f"総ゲーム数: {self.total_games}")
print(f"勝利数: {self.wins}")
print(f"勝率: {win_rate:.1f}%")
print(f"平均試行回数: {avg_attempts:.1f}回")

統計情報を計算して表示する機能も追加しました。 :.1fは小数点以下1桁で表示する指定です。

10分チャレンジ:簡単なWebアプリを作ろう

最後に、Webページを作る体験をしてみましょう。

HTMLを生成するPythonプログラム

# 簡単なHTML生成プログラム
def create_personal_webpage(name, age, hobbies, favorite_color):
"""個人紹介ページのHTMLを生成"""
# CSSスタイル
css_style = f"""
<style>
body {{
font-family: Arial, sans-serif;
background-color: {favorite_color};
margin: 40px;
line-height: 1.6;
}}
.container {{
background-color: white;
padding: 30px;
border-radius: 10px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}}
</style>
"""

ここでは、Webページの見た目を決めるCSSを文字列で作っています。 {favorite_color}の部分に、好きな色が入ります。

# 趣味リストのHTML生成
hobby_items = ""
for hobby in hobbies:
hobby_items += f" <li>🎯 {hobby}</li>
"
# 完全なHTMLページ
html_content = f"""
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>{name}の自己紹介ページ</title>
{css_style}
</head>
<body>
<div class="container">
<h1>🌟 {name}の自己紹介 🌟</h1>
<h2>📝 基本情報</h2>
<p><strong>名前:</strong> {name}</p>
<p><strong>年齢:</strong> {age}歳</p>
<h2>🎨 趣味・特技</h2>
<ul>
{hobby_items} </ul>
</div>
</body>
</html>
"""

for文を使って、趣味のリストをHTMLのリスト形式に変換しています。 最後に全てのパーツを組み合わせて、完全なWebページを作成します。

実際にWebページを作成してみよう

# 実際にWebページを作成
from datetime import datetime
my_info = {
"name": "田中太郎",
"age": 25,
"hobbies": ["プログラミング", "読書", "映画鑑賞", "カメラ"],
"favorite_color": "#e3f2fd" # 薄いブルー
}
# HTMLを生成
webpage = create_personal_webpage(
my_info["name"],
my_info["age"],
my_info["hobbies"],
my_info["favorite_color"]
)
# ファイルに保存
def save_webpage():
"""Webページをファイルに保存"""
filename = "my_webpage.html"
with open(filename, "w", encoding="utf-8") as file:
file.write(webpage)
print(f"✅ Webページを{filename}に保存しました!")

with open()を使ってファイルを保存しています。 encoding="utf-8"で日本語も正しく保存できます。

動的コンテンツも作れます

# 動的なコンテンツ生成の例
import random
from datetime import datetime
def generate_daily_report():
"""日次レポートを生成"""
# ランダムなデータを生成
weather_options = ["晴れ", "曇り", "雨", "雪"]
mood_options = ["😊 良好", "😐 普通", "😔 やや低め", "🤩 最高"]
daily_data = {
"date": datetime.now().strftime("%Y年%m月%d日"),
"weather": random.choice(weather_options),
"temperature": random.randint(10, 30),
"mood": random.choice(mood_options),
"tasks_completed": random.randint(3, 8),
"steps": random.randint(3000, 12000)
}

毎回違うデータを生成して、動的なWebコンテンツを作ることもできます。 実際のWebアプリでは、データベースからデータを取得したりします。

30分でここまでできました!

お疲れ様でした! 30分間で、本当にたくさんのことを体験しましたね。

今日体験した技術と概念

# 30分で体験したプログラミング概念
learned_concepts = {
"基本構文": [
"print()による出力",
"変数の使用",
"リストとランダム選択",
"条件分岐(if文)"
],
"データ処理": [
"辞書によるデータ管理",
"for文による繰り返し処理",
"文字列フォーマット",
"日時データの処理"
],
"プログラム設計": [
"関数の定義と使用",
"クラスによるオブジェクト指向",
"モジュールのインポート",
"エラーハンドリング"
],
"実用的な応用": [
"ゲーム作成",
"HTML生成",
"ファイル操作",
"動的コンテンツ生成"
]
}

わずか30分で、これだけの概念を体験できました!

実際に書いたコードの量

# 実際に書いたコードの統計
code_metrics = {
"おみくじプログラム": 25,
"数当てゲーム": 40,
"Webページ生成": 60,
"合計": 125
}
print(f"💻 書いたコードの統計:")
for program, lines in code_metrics.items():
print(f" {program}: 約{lines}行")

125行以上のコードを体験したんです! すごいことですよね。

次のステップに向けて

# 今後の学習提案
next_steps = {
"今すぐできること": [
"今日作ったコードを改造してみる",
"おみくじの運勢を増やしてみる",
"数当てゲームの範囲を変更する",
"Webページのデザインを変える"
],
"1週間以内に": [
"Python基礎文法の学習",
"より複雑なゲームの作成",
"データファイルの読み書き",
"Web APIの使用"
],
"1ヶ月以内に": [
"Webフレームワーク(Flask)の学習",
"データ分析ライブラリの活用",
"データベースとの連携",
"実用的なアプリの開発"
]
}

段階的に学習を進めていけば、きっと素晴らしいプログラマーになれます。

プログラミングは難しくありません

今日の体験はいかがでしたか?

30分でこんなにたくさんのことができました:

  • 実際に動くプログラムを3つ作成
  • プログラミングの基本概念を体験
  • Webページまで生成

これは立派なプログラマーの第一歩です!

プログラミングは特別な才能が必要なものではありません。 今日のように少しずつ積み重ねることで、きっと素晴らしいアプリケーションが作れるようになります。

大切なのは継続すること。 毎日少しずつでも、コードに触れることをおすすめします。

ぜひこの体験を忘れずに、楽しみながら学習を続けてください! きっと新しい発見と成長が待っています。

明日からも、一緒にプログラミングを楽しんでいきましょう!

関連記事