آموزش آرایه دو بعدی در پایتون | ۱۰ پروژه جذاب برای نوجوانان


📊 آرایه دو بعدی در پایتون

یادگیری با ۱۰ پروژه عملی و جذاب برای نوجوانان | هر بخش با کد و خروجی واقعی

✨ ماتریس، جدول، دیکشنری تصویری، بازی و مدیریت داده ✨

پروژه ۱: جدول ضرب ماتریسی

📖 سوال پروژه

برنامه‌ای بنویسید که یک آرایه دو بعدی ۱۰ در ۱۰ بسازد و در هر خانه حاصل ضرب شماره سطر در شماره ستون را ذخیره کند. سپس جدول ضرب را به صورت مرتب چاپ کند.

🖥️ خروجی نمونه

۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰
۲ ۴ ۶ ۸ ۱۰ ۱۲ ۱۴ ۱۶ ۱۸ ۲۰
۳ ۶ ۹ ۱۲ ۱۵ ۱۸ ۲۱ ۲۴ ۲۷ ۳۰
… (ادامه تا سطر ۱۰)

🐍 حل پروژه (کد پایتون)

# پروژه ۱: جدول ضرب با آرایه دو بعدی
table = [[0] * 10 for _ in range(10)]   # ایجاد ماتریس ۱۰×۱۰

for i in range(10):      # سطرها
    for j in range(10):  # ستون‌ها
        table[i][j] = (i+1) * (j+1)

# چاپ زیبا
for row in table:
    for value in row:
        print(f"{value:4}", end=" ")
    print()

پروژه ۲: میانگین نمرات دانش‌آموزان

📖 سوال پروژه

یک آرایه دو بعدی شامل نمرات ۵ دانش‌آموز در ۳ درس (ریاضی، علوم، انگلیسی) ذخیره کن. سپس میانگین هر دانش‌آموز و میانگین هر درس را محاسبه و نمایش بده.

🖥️ خروجی نمونه

نمرات دانش‌آموزان:
[۱۸, ۲۰, ۱۷]
[۱۵, ۱۴, ۱۶]

میانگین هر دانش‌آموز: ۱۸٫۳۳ , ۱۵٫۰ , …
میانگین ریاضی: ۱۶٫۸ , علوم: ۱۷٫۲ , انگلیسی: ۱۶٫۴

🐍 حل پروژه

# پروژه ۲: میانگین نمرات (آرایه دو بعدی)
scores = [
    [۱۸, ۲۰, ۱۷],   # دانش آموز ۱
    [۱۵, ۱۴, ۱۶],   # دانش آموز ۲
    [۱۹, ۱۸, ۱۹],   # دانش آموز ۳
    [۱۲, ۱۳, ۱۴],   # دانش آموز ۴
    [۲۰, ۱۹, ۱۸]    # دانش آموز ۵
]

# میانگین هر دانش آموز
print("میانگین هر دانش آموز:")
for i, student in enumerate(scores, 1):
    avg = sum(student) / len(student)
    print(f"دانش‌آموز {i}: {avg:.2f}")

# میانگین هر درس
print("\nمیانگین هر درس:")
for lesson in range(3):
    col_avg = sum(scores[row][lesson] for row in range(5)) / 5
    lessons_name = ["ریاضی", "علوم", "انگلیسی"]
    print(f"{lessons_name[lesson]}: {col_avg:.2f}")

پروژه ۳: شطرنج ساده | خانه‌های سیاه و سفید

📖 سوال پروژه

یک آرایه ۸×۸ بساز که در آن خانه‌های شطرنج با “■” (سیاه) و “□” (سفید) نمایش داده شود. (جمعه اول سفید باشد)

🖥️ خروجی نمونه

□ ■ □ ■ □ ■ □ ■
■ □ ■ □ ■ □ ■ □
□ ■ □ ■ □ ■ □ ■

🐍 حل پروژه

# پروژه ۳: صفحه شطرنج با آرایه دو بعدی
board = [["□" for _ in range(8)] for _ in range(8)]

for i in range(8):
    for j in range(8):
        if (i + j) % 2 == 1:
            board[i][j] = "■"

# نمایش زیبا
for row in board:
    print(" ".join(row))

پروژه ۴: جست‌وجوی گنج در ماتریس

📖 سوال پروژه

یک ماتریس ۵×۵ از اعداد تصادفی ۱ تا ۲۰ بسازید. کاربر مختصات (سطر و ستون) را وارد کند؛ اگر عدد آن خانه بزرگتر از ۱۵ باشد، «گنج یافت شد!» چاپ کن. در غیر این صورت «آه… جای دیگری بگرد».

🖥️ خروجی نمونه

ماتریس تصادفی:
[۱۲, ۱۸, ۵, ۱۹, ۷]

سطر مورد نظر (۰ تا ۴): ۱
ستون: ۱ -> عدد ۱۸ => گنج یافت شد!

🐍 حل پروژه

import random

# ساخت ماتریس تصادفی
matrix = [[random.randint(1,20) for _ in range(5)] for _ in range(5)]

print("ماتریس گنج:\n")
for row in matrix:
    print(row)

r = int(input("\nسطر (۰ تا ۴): "))
c = int(input("ستون (۰ تا ۴): "))

if 0 <= r < 5 and 0 <= c < 5:
    if matrix[r][c] > 15:
        print(f"🎉 گنج یافت شد! عدد {matrix[r][c]} > 15")
    else:
        print(f"😢 عدد {matrix[r][c]} کوچک است. گنج اینجا نیست.")
else:
    print("مختصات نامعتبر")

پروژه ۵: دگرگونی ماتریس (ترانهاده)

📖 سوال پروژه

ماتریس ۳×۴ از اعداد تصادفی بسازید، سپس ماتریس ترانهاده (۴×۳) آن را محاسبه کرده و چاپ کنید.

🖥️ خروجی نمونه

ماتریس اصلی:
[۲, ۷, ۹, ۱]
[۳, ۵, ۸, ۴]
[۶, ۰, ۲, ۳]

ماتریس ترانهاده:
[۲, ۳, ۶]
[۷, ۵, ۰]
[۹, ۸, ۲]
[۱, ۴, ۳]

🐍 حل پروژه

import random

# ماتریس ۳×۴
rows, cols = 3, 4
matrix = [[random.randint(0,9) for _ in range(cols)] for _ in range(rows)]

print("ماتریس اصلی:")
for r in matrix:
    print(r)

# ترانهاده
transpose = [[matrix[i][j] for i in range(rows)] for j in range(cols)]

print("\nماتریس ترانهاده (۴×۳):")
for t_row in transpose:
    print(t_row)

پروژه ۶: دفترچه تلفن دو بعدی (نام و شماره)

📖 سوال پروژه

یک آرایه دو بعدی شامل ۳ ردیف (هر ردیف شامل نام و شماره تماس) بسازید. سپس نام کاربر را گرفته و شماره او را جستجو کند. اگر نبود پیام خطا بدهد.

🖥️ خروجی نمونه

دفترچه: [[“سارا”,”۰۹۱۲۳۴۵۶۷۸۹”],[“امیر”,”۰۹۳۳۲۲۱۱۴۴۵”],[“ریحانه”,”۰۹۲۱۸۸۸۷۷۶۶”]]
نام مورد نظر: سارا -> شماره: ۰۹۱۲۳۴۵۶۷۸۹
نام: حسین -> پیدا نشد!

🐍 حل پروژه

phonebook = [
    ["سارا", "۰۹۱۲۳۴۵۶۷۸۹"],
    ["امیر", "۰۹۳۳۲۲۱۱۴۴۵"],
    ["ریحانه", "۰۹۲۱۸۸۸۷۷۶۶"]
]

name = input("نام مورد نظر را وارد کنید: ")
found = False
for entry in phonebook:
    if entry[0] == name:
        print(f"📞 شماره {name}: {entry[1]}")
        found = True
        break
if not found:
    print("❌ مخاطبی با این نام یافت نشد.")

پروژه ۷: بازی ساده حدس عدد با ماتریس

📖 سوال پروژه

یک ماتریس ۴×۴ از اعداد ۱ تا ۱۶ (مرتب شده) بسازید. کاربر یک عدد از ۱ تا ۱۶ را حدس بزند، برنامه مختصات (سطر و ستون) آن عدد را در ماتریس بگوید و یک پیام تشویقی.

🖥️ خروجی نمونه

ماتریس:
۱ ۲ ۳ ۴
۵ ۶ ۷ ۸

عدد مورد نظر: ۶ -> پیدا شد در سطر ۱ و ستون ۱ (شروع از ۰)

🐍 حل پروژه

# ایجاد ماتریس اعداد ۱ تا ۱۶ در ۴×۴
matrix = [[i+4*j for i in range(1,5)] for j in range(4)]

print("ماتریس جذاب حدس عدد:")
for row in matrix:
    print(" ".join(f"{num:2}" for num in row))

target = int(input("یک عدد بین ۱ تا ۱۶ وارد کن: "))
found_loc = None
for i in range(4):
    for j in range(4):
        if matrix[i][j] == target:
            found_loc = (i, j)
            break
    if found_loc:
        break

if found_loc:
    print(f"✅ آفرین! عدد {target} در سطر {found_loc[0]} و ستون {found_loc[1]} قرار دارد.")
else:
    print("عدد خارج از محدوده!")

پروژه ۸: نقشه دنج (تغییر کاربری سلول)

📖 سوال پروژه

یک آرایه دو بعدی ۵×۵ از کاراکتر ‘.’ بساز. کاربر بارها مختصات و کاراکتر جدید (مثلاً ‘X’ یا ‘🌲’) بدهد تا سلول مورد نظر بروز شود. در هر مرحله نقشه چاپ شود. برای خروج ‘exit’ تایپ کند.

🖥️ خروجی نمونه

نقشه فعلی:
. . . . .
. . . . .

مختصات و کاراکتر: ۲ ۳ X
نقشه بعد از تغییر:
. . . . .
. . . X .

🐍 حل پروژه

map_grid = [["." for _ in range(5)] for _ in range(5)]

while True:
    print("\n📌 نقشه فعلی:")
    for row in map_grid:
        print(" ".join(row))
    cmd = input("مختصات و کاراکتر (مثال: ۲ ۳ X) یا exit: ")
    if cmd.lower() == "exit":
        break
    parts = cmd.split()
    if len(parts) == 3 and parts[0].isdigit() and parts[1].isdigit():
        r, c, ch = int(parts[0]), int(parts[1]), parts[2]
        if 0 <= r < 5 and 0 <= c < 5:
            map_grid[r][c] = ch
        else:
            print("مختصات خارج از محدوده ۰ تا ۴!")
    else:
        print("فرمت اشتباه! مثال: 1 2 🏠")

پروژه ۹: دیکشنری تصویری (نمایش گرافیکی با رنگ)

📖 سوال پروژه

یک آرایه ۶×۶ بسازید که هر خانه بر اساس مقدار عددی (۰ تا ۳) رنگ متفاوت داشته باشد. ابتدا ماتریس تصادفی، سپس بر اساس عدد، حرف نمایش بده: ۰:⬜, ۱:🟩, ۲:🟦, ۳:🟨 . نمایش زیبا انجام شود.

🖥️ خروجی نمونه

⬜ 🟩 🟦 🟨 ⬜ 🟩
🟦 🟨 ⬜ 🟩 🟦 🟨
...

🐍 حل پروژه

import random

emojis = {0: "⬜", ۱: "🟩", ۲: "🟦", ۳: "🟨"}
grid = [[random.randint(0,3) for _ in range(6)] for _ in range(6)]

print("نقشه رنگی جادویی:")
for row in grid:
    for val in row:
        print(emojis[val], end=" ")
    print()

پروژه ۱۰: تجزیه و تحلیل فروش فروشگاه

📖 سوال پروژه

آرایه دو بعدی، شامل فروش روزانه ۴ محصول در ۷ روز هفته. برنامه کل فروش هر محصول، پرفروش‌ترین روز و میانگین فروش روزانه کل را محاسبه کند.

🖥️ خروجی نمونه

فروش محصول ۱: ۴۲۰۰ تومان
فروش محصول ۲: ۳۱۵۰ تومان
...
پرفروش‌ترین روز: چهارشنبه با فروش ۲۴۵۰
میانگین کل روزانه: ۱۸۰۰٫۵ تومان

🐍 حل پروژه

# فروش (محصول×روز) : ۴ محصول، ۷ روز
sales = [
    [۱۲۰, ۲۰۰, ۱۵۰, ۱۸۰, ۲۲۰, ۲۱۰, ۱۹۰],  # محصول اول
    [۸۰, ۹۵, ۱۱۰, ۱۳۰, ۱۰۰, ۱۴۰, ۱۲۵],    # محصول دوم
    [۲۵۰, ۲۷۰, ۲۶۰, ۳۰۰, ۳۱۰, ۲۹۰, ۲۸۰],  # محصول سوم
    [۴۵, ۵۰, ۵۵, ۶۰, ۶۵, ۷۰, ۷۵]          # محصول چهارم
]

days = ["شنبه", "یکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه"]

# کل فروش هر محصول
for p_idx in range(4):
    total = sum(sales[p_idx])
    print(f"فروش محصول {p_idx+1}: {total} تومان")

# پرفروش‌ترین روز (مجموع فروش همه محصولات)
daily_total = [sum(sales[row][day] for row in range(4)) for day in range(7)]
max_day_index = daily_total.index(max(daily_total))
print(f"\n🌟 پرفروش‌ترین روز: {days[max_day_index]} با فروش {daily_total[max_day_index]}")

avg_daily = sum(daily_total) / 7
print(f"📊 میانگین فروش روزانه کل: {avg_daily:.2f} تومان")


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *