📊 آرایه دو بعدی در پایتون
یادگیری با ۱۰ پروژه عملی و جذاب برای نوجوانان | هر بخش با کد و خروجی واقعی
✨ ماتریس، جدول، دیکشنری تصویری، بازی و مدیریت داده ✨
پروژه ۱: جدول ضرب ماتریسی
📖 سوال پروژه
برنامهای بنویسید که یک آرایه دو بعدی ۱۰ در ۱۰ بسازد و در هر خانه حاصل ضرب شماره سطر در شماره ستون را ذخیره کند. سپس جدول ضرب را به صورت مرتب چاپ کند.
🖥️ خروجی نمونه
۲ ۴ ۶ ۸ ۱۰ ۱۲ ۱۴ ۱۶ ۱۸ ۲۰
۳ ۶ ۹ ۱۲ ۱۵ ۱۸ ۲۱ ۲۴ ۲۷ ۳۰
… (ادامه تا سطر ۱۰)
🐍 حل پروژه (کد پایتون)
# پروژه ۱: جدول ضرب با آرایه دو بعدی
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} تومان")
