آموزش کامل آرایه یک‌بعدی در پایتون | ۱۰ بازی جذاب + خطاهای رایج


🐍 آموزش کامل آرایه یک‌بعدی در پایتون

❓ چرا از آرایه یک‌بعدی در پایتون استفاده می‌کنیم؟

📌 تصور کن: می‌خواهی نمرات ۱۰۰ دانش‌آموز را ذخیره کنی. بدون آرایه باید ۱۰۰ متغیر جداگانه بسازی! 😱
  • ✅ صرفه‌جویی در حافظه و زمان: به جای ۱۰۰ متغیر، یک متغیر آرایه
  • ✅ دسترسی آسان با حلقه‌ها: با یک حلقه می‌توان به همه اعضا دسترسی داشت
  • ✅ مرتب‌سازی و جستجوی سریع: متدهای آماده مثل sort() و index()
  • ✅ ذخیره داده‌های همجنس: نمرات، اسامی، امتیازات بازی، موقعیت‌ها و…
  • ✅ پایه و اساس ساختمان داده‌های پیشرفته: ماتریس‌ها (آرایه دو بعدی)، صف، پشته و…
  • ✅ مدیریت بهتر اطلاعات: جمع‌آوری، تحلیل و نمایش داده‌ها
# مقایسه: بدون آرایه vs با آرایه

# ❌ بدون آرایه (کد بد)
نمره۱ = ۱۸
نمره۲ = ۱۵
نمره۳ = ۱۹
نمره۴ = ۱۴
نمره۵ = ۱۷
# برای ۱۰۰ دانش‌آموز غیرممکن!

# ✅ با آرایه (کد خوب)
نمرات = [۱۸, ۱۵, ۱۹, ۱۴, ۱۷]
# حالا به راحتی می‌توانیم:
print(sum(نمرات))        # مجموع
print(max(نمرات))        # بیشترین
print(len(نمرات))        # تعداد

🎮 ۱۰ بازی جذاب برای نوجوانان با استفاده از آرایه یک‌بعدی

🎯 بازی ۱: حدس عدد مخفی (تک نفره)

کامپیوتر یک عدد تصادفی در آرایه انتخاب می‌کند و کاربر باید حدس بزند.

# بازی حدس عدد مخفی
import random
import time

print("🎮 ===== بازی حدس عدد مخفی ===== 🎮")
print("کامپیوتر یک عدد بین ۱ تا ۱۰۰ انتخاب کرده!")

اعداد_مجاز = list(range(1, 101))  # آرایه اعداد ۱ تا ۱۰۰
عدد_مخفی = random.choice(اعداد_مجاز)
تعداد_حدس = ۰
حداکثر_حدس = ۱۰

while تعداد_حدس < حداکثر_حدس:
    try:
        حدس = int(input(f"\n🔢 حدس شما (حدس {تعداد_حدس+1}/{حداکثر_حدس}): "))
        تعداد_حدس += 1
        
        if حدس < عدد_مخفی:
            print("📈 برو بالا! عدد بزرگ‌تر است.")
        elif حدس > عدد_مخفی:
            print("📉 بیا پایین! عدد کوچک‌تر است.")
        else:
            print(f"🎉 آفرین! در {تعداد_حدس} حدس زدی! عدد {عدد_مخفی} بود.")
            break
    except ValueError:
        print("❌ لطفاً یک عدد وارد کن!")

if تعداد_حدس == حداکثر_حدس and حدس != عدد_مخفی:
    print(f"💀 باختی! عدد مخفی {عدد_مخفی} بود.")

🏆 بازی ۲: مسابقه سرعت تایپ

کلمات از آرایه انتخاب می‌شوند و کاربر باید سریع تایپ کند.

# مسابقه سرعت تایپ
import random
import time

print("🏆 ===== مسابقه سرعت تایپ ===== 🏆")

کلمات = ["پایتون", "برنامه‌نویسی", "کامپیوتر", "الگوریتم", "داده", "آرایه", "بازی", "هوش مصنوعی"]
امتیاز = ۰

print(f"\n📝 {len(کلمات)} کلمه برای تایپ داری!")
print("هر کلمه رو درست تایپ کنی ۱۰ امتیاز میگیری!\n")

for i, کلمه in enumerate(کلمات, ۱):
    print(f"کلمه {i}: {کلمه}")
    شروع = time.time()
    پاسخ = input("تایپ کن: ")
    پایان = time.time()
    
    if پاسخ == کلمه:
        زمان = پایان - شروع
        if زمان < 2:
            امتیاز += 15
            print(f"✅ عالی! {زمان:.1f} ثانیه - 15 امتیاز")
        elif زمان < 4:
            امتیاز += 10
            print(f"✅ خوب! {زمان:.1f} ثانیه - 10 امتیاز")
        else:
            امتیاز += 5
            print(f"✅ قبول! {زمان:.1f} ثانیه - 5 امتیاز")
    else:
        print(f"❌ اشتباه! کلمه درست: {کلمه}")
    print("-" * 30)

print(f"\n🎯 امتیاز نهایی شما: {امتیاز} از {len(کلمات)*15}")

🎲 بازی ۳: شبیه‌ساز تاس (چند تاس)

تعداد تاس و تعداد پرتاب را انتخاب کن و نتایج را در آرایه ببین.

# شبیه‌ساز تاس
import random

print("🎲 ===== شبیه‌ساز تاس ===== 🎲")

تعداد_تاس = int(input("چند تاس می‌خوای بریزی؟ "))
تعداد_پرتاب = int(input("چند بار پرتاب کنم؟ "))

for پرتاب in range(1, تعداد_پرتاب + ۱):
    نتایج = [random.randint(1, 6) for _ in range(تعداد_تاس)]
    print(f"پرتاب {پرتاب}: {نتایج} = مجموع {sum(نتایج)}")
    
    # نمایش به صورت ستاره
    print("  ", end="")
    for نتیجه in نتایج:
        print("⭐" * نتیجه, end=" ")
    print()

🧩 بازی ۴: حافظه تصویری (پیدا کردن جفت‌ها)

آرایه‌ای از کارت‌ها بساز و کاربر باید جفت‌ها را پیدا کند.

# بازی حافظه (نسخه ساده)
import random

print("🧩 ===== بازی حافظه ===== 🧩")

کارت‌ها = ['🐱', '🐶', '🐭', '🐹', '🐰', '🦊', '🐻', '🐼']
کارت‌ها = کارت‌ها * ۲  # هر کارت دو بار
random.shuffle(کارت‌ها)

print("آرایه کارت‌ها:")
print("اندیس:", list(range(len(کارت‌ها))))
print("کارت‌ها مخفی هستند! (با اندیس انتخاب کن)")

کارت_باز = ['❓'] * len(کارت‌ها)
امتیاز = ۰

while امتیاز < len(کارت‌ها) // 2:
    print("\nوضعیت فعلی:", ' '.join(کارت_باز))
    
    try:
        انتخاب1 = int(input("اندیس کارت اول: "))
        انتخاب2 = int(input("اندیس کارت دوم: "))
        
        if کارت‌ها[انتخاب1] == کارت‌ها[انتخاب2] and انتخاب1 != انتخاب2:
            کارت_باز[انتخاب1] = کارت‌ها[انتخاب1]
            کارت_باز[انتخاب2] = کارت‌ها[انتخاب2]
            امتیاز += 1
            print(f"✅ جفت پیدا شد! امتیاز: {امتیاز}")
        else:
            print("❌ جفت نیست! دقت کن")
            print(f"کارت اول: {کارت‌ها[انتخاب1]}, کارت دوم: {کارت‌ها[انتخاب2]}")
    except (ValueError, IndexError):
        print("❌ اندیس نامعتبر! بین 0 تا", len(کارت‌ها)-1, "انتخاب کن")

print(f"\n🎉 بردی! کارت‌ها: {' '.join(کارت_باز)}")

🎯 بازی ۵: پرتاب دارت (محاسبه امتیاز)

پرتاب‌های دارت را در آرایه ذخیره کن و امتیاز کل را حساب کن.

# بازی پرتاب دارت
import random

print("🎯 ===== بازی پرتاب دارت ===== 🎯")

پرتاب‌ها = []
امتیازات = []

for i in range(5):
    print(f"\nپرتاب {i+1}:")
    input("Enter بزن تا پرتاب کنی...")
    
    x = random.randint(-10, 10)
    y = random.randint(-10, 10)
    فاصله = (x**2 + y**2)**0.5
    
    if فاصله <= 3:
        امتیاز = 10
        پیام = "🎯 بولزآی! 10 امتیاز"
    elif فاصله <= 6:
        امتیاز = 7
        پیام = "👍 خوب! 7 امتیاز"
    elif فاصله <= 9:
        امتیاز = 4
        پیام = "👌 متوسط! 4 امتیاز"
    else:
        امتیاز = 1
        پیام = "😢 نزدیک بود! 1 امتیاز"
    
    پرتاب‌ها.append((x, y))
    امتیازات.append(امتیاز)
    print(f"موقعیت: ({x},{y}) - فاصله: {فاصله:.1f}")
    print(پیام)

print("\n📊 گزارش نهایی:")
print(f"موقعیت‌ها: {پرتاب‌ها}")
print(f"امتیازات: {امتیازات}")
print(f"🎯 امتیاز کل: {sum(امتیازات)} از 50")

🃏 بازی ۶: ورق بازی (مقایسه کارت‌ها)

دو بازیکن ورق می‌کشند و هر کی کارت بزرگتر داشته باشد می‌برد.

# بازی ورق (مقایسه کارت‌ها)
import random

print("🃏 ===== بازی ورق ===== 🃏")

عصا = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
ارزش = {'A':14, 'K':13, 'Q':12, 'J':11, '10':10, '9':9, '8':8, '7':7, '6':6, '5':5, '4':4, '3':3, '2':2}

random.shuffle(عصا)
کارت‌ها = عصا[:۱۰]  # ۱۰ کارت اول

امتیاز_بازیکن۱ = ۰
امتیاز_بازیکن۲ = ۰

for i in range(0, len(کارت‌ها), ۲):
    if i+1 >= len(کارت‌ها):
        break
    کارت۱ = کارت‌ها[i]
    کارت۲ = کارت‌ها[i+1]
    
    print(f"\nدور {i//2 + 1}: بازیکن۱: {کارت۱} | بازیکن۲: {کارت۲}")
    
    if ارزش[کارت۱] > ارزش[کارت۲]:
        امتیاز_بازیکن۱ += ۱
        print("✅ بازیکن ۱ برد!")
    elif ارزش[کارت۱] < ارزش[کارت2]:
        امتیاز_بازیکن2 += 1
        print("✅ بازیکن 2 برد!")
    else:
        print("🤝 مساوی شد!")

print(f"\n🏆 نتیجه نهایی: بازیکن1 {امتیاز_بازیکن1} - {امتیاز_بازیکن2} بازیکن2")
if امتیاز_بازیکن1 > امتیاز_بازیکن۲:
    print("🎉 بازیکن ۱ قهرمان شد!")
elif امتیاز_بازیکن۱ < امتیاز_بازیکن2:
    print("🎉 بازیکن 2 قهرمان شد!")
else:
    print("🤝 بازی مساوی شد!")

📜 بازی ۷: رمزگشایی پیام مخفی

یک آرایه رمزگذاری شده و کلید رمزگشایی در آرایه دیگر.

# رمزگشایی پیام مخفی
import random

print("📜 ===== رمزگشایی پیام مخفی ===== 📜")

الفبا = list('abcdefghijklmnopqrstuvwxyz')
random.shuffle(الفبا)
کلید = dict(zip(الفبا, list('abcdefghijklmnopqrstuvwxyz')))

پیام_اصلی = "pythonisfun"
پیام_رمز = ''.join([کلید.get(ح, ح) for ح in پیام_اصلی])

print(f"پیام رمز شده: {پیام_رمز}")
print("آرایه رمزگشایی:")

فرهنگ = list(کلید.items())
for i in range(len(فرهنگ)):
    print(f"{فرهنگ[i][0]} → {فرهنگ[i][1]}")

حدس = input("\nپیام اصلی رو حدس بزن: ")
if حدس == پیام_اصلی:
    print("🎉 آفرین! رمز رو شکستی!")
else:
    print(f"💀 اشتباه! پیام اصلی: {پیام_اصلی}")

🌟 بازی ۸: جدول امتیازات (ذخیره و نمایش)

یک آرایه برای ذخیره امتیازات بازیکنان و مرتب‌سازی.

# جدول امتیازات
import random

print("🌟 ===== جدول امتیازات ===== 🌟")

امتیازات = []

while True:
    print("\n1. ثبت امتیاز جدید")
    print("2. نمایش جدول")
    print("3. حذف آخرین امتیاز")
    print("4. خروج")
    
    انتخاب = input("انتخاب کن: ")
    
    if انتخاب == '۱':
        نام = input("نام بازیکن: ")
        امتیاز = random.randint(0, 100)
        امتیازات.append([نام, امتیاز])
        print(f"✅ امتیاز {امتیاز} برای {نام} ثبت شد!")
        
    elif انتخاب == '۲':
        if not امتیازات:
            print("📭 هنوز امتیازی ثبت نشده!")
        else:
            مرتب_شده = sorted(امتیازات, key=lambda x: x[1], reverse=True)
            print("\n🏆 جدول امتیازات (بهترین‌ها اول):")
            for i, (نام, امتیاز) in enumerate(مرتب_شده, ۱):
                مدال = {۱:"🥇", ۲:"🥈", ۳:"🥉"}.get(i, "📌")
                print(f"{مدال} {i}. {نام}: {امتیاز} امتیاز")
                
    elif انتخاب == '۳':
        if امتیازات:
            حذف_شده = امتیازات.pop()
            print(f"🗑️ امتیاز {حذف_شده[۱]} مربوط به {حذف_شده[۰]} حذف شد!")
        else:
            print("چیزی برای حذف نیست!")
            
    elif انتخاب == '۴':
        print("خداحافظ!")
        break
    else:
        print("❌ انتخاب نامعتبر!")

🚀 بازی ۹: حرکت کاراکتر در نقشه (موقعیت‌یابی)

یک آرایه نقشه خطی بساز و کاراکتر را حرکت بده.

# حرکت کاراکتر در نقشه خطی
import os

print("🚀 ===== حرکت کاراکتر در نقشه ===== 🚀")

نقشه = ['🏠', '🌲', '🌲', '🌲', '💎', '🌲', '🏁']
موقعیت = ۰  # ایندکس فعلی

while True:
    os.system('cls' if os.name == 'nt' else 'clear')
    
    # نمایش نقشه
    for i, خانه in enumerate(نقشه):
        if i == موقعیت:
            print(f"[🧑 {خانه}]", end=" ")
        else:
            print(f"[{خانه}]", end=" ")
    
    print(f"\n📍 موقعیت: {موقعیت+۱}/{len(نقشه)}")
    
    if نقشه[موقعیت] == '💎':
        print("🎉 گنج پیدا کردی! +۵۰ امتیاز")
    elif نقشه[موقعیت] == '🏁':
        print("🏆 به خط پایان رسیدی! بردی!")
        break
    
    حرکت = input("⬅️ (a) چپ | ➡️ (d) راست | (q) خروج: ").lower()
    
    if حرکت == 'a' and موقعیت > ۰:
        موقعیت -= ۱
    elif حرکت == 'd' and موقعیت < len(نقشه)-1:
        موقعیت += 1
    elif حرکت == 'q':
        print("بازی رو بستی!")
        break
    else:
        print("حرکت نامعتبر!")

🎪 بازی ۱۰: شبیه‌ساز قرعه‌کشی (جوایز)

یک آرایه از جوایز و یک آرایه از اسامی برندگان.

# شبیه‌ساز قرعه‌کشی
import random

print("🎪 ===== شبیه‌ساز قرعه‌کشی ===== 🎪")

جوایز = ["📱 گوشی", "💻 لپ‌تاپ", "🎧 هدفون", "⌚ ساعت هوشمند", "🎮 کنسول بازی", "📚 کتاب", "🍔 همبرگر", "🎫 بلیط سینما"]
شرکت_کنندگان = ["علی", "سارا", "رضا", "زهرا", "مهدی", "نرگس", "حسین", "فاطمه", "امیر", "مریم"]

print(f"🎁 جوایز موجود: {len(جوایز)} جایزه")
print(f"👥 شرکت‌کنندگان: {len(شرکت_کنندگان)} نفر")

تعداد_برنده = int(input("چند برنده انتخاب کنم؟ "))

if تعداد_برنده > len(شرکت_کنندگان):
    تعداد_برنده = len(شرکت_کنندگان)

برندگان = []
جایزه_های_برنده = []

for i in range(تعداد_برنده):
    برنده = random.choice(شرکت_کنندگان)
    جایزه = random.choice(جوایز)
    
    برندگان.append(برنده)
    جایزه_های_برنده.append(جایزه)
    
    شرکت_کنندگان.remove(برنده)
    جوایز.remove(جایزه)

print("\n🏆 نتایج قرعه‌کشی:")
for i in range(len(برندگان)):
    print(f"{i+1}. {برندگان[i]} → {جایزه_های_برنده[i]} 🎉")

print(f"\n📊 آرایه برندگان: {برندگان}")
print(f"🎁 آرایه جوایز: {جایزه_های_برنده}")

⚠️ خطاهای رایج در پایتون (حواست به اینا باشه!)

🔴 ۱. خطای تو رفتگی (IndentationError)

❌ کد اشتباه:

for i in range(5):
print(i)  # این خط ارور میده! باید فاصله داشته باشه

✅ کد درست:

for i in range(5):
    print(i)  # 4 تا فاصله (یا Tab) قبل از print

💡 راه حل: در پایتون، فاصله‌گذاری (Indentation) مهم است! بعد از : باید حتماً تو رفتگی داشته باشی.

🔴 ۲. خطای پرانتز (SyntaxError: Missing parentheses)

❌ کد اشتباه:

print "سلام"  # در پایتون ۳ پرانتز لازمه
if x > 5     # یادت رفت پرانتز بذاری

✅ کد درست:

print("سلام")
if (x > 5):   # پرانتز اختیاری ولی خوبه

💡 راه حل: همیشه پرانتزها رو جفت ببند! () و [] و {}.

🔴 ۳. خطای کاما (SyntaxError: invalid syntax)

❌ کد اشتباه:

نمرات = [۱۸, ۱۵, ۱۹ ۱۴, ۱۷]  # بین ۱۹ و ۱۴ کاما نیست
print("نمرات" نمرات)  # بین دو پارامتر کاما نیست

✅ کد درست:

نمرات = [۱۸, ۱۵, ۱۹, ۱۴, ۱۷]
print("نمرات", نمرات)

🔴 ۴. خطای براکت (IndexError: list index out of range)

❌ کد اشتباه:

آرایه = [۱۰, ۲۰, ۳۰]
print(آرایه[۳])  # فقط ایندکس ۰،۱،۲ وجود دارد!

✅ کد درست:

آرایه = [۱۰, ۲۰, ۳۰]
if len(آرایه) > ۳:
    print(آرایه[۳])
else:
    print(f"فقط {len(آرایه)} عضو وجود دارد")

💡 نکته: ایندکس آرایه از ۰ شروع می‌شود! آخرین ایندکس = len(آرایه)-۱

🔴 ۵. خطای نوع داده (TypeError)

❌ کد اشتباه:

نمرات = [۱۸, ۱۵, "۱۹", ۱۴]  # "۱۹" یک رشته است نه عدد
مجموع = sum(نمرات)  # ارور میده چون رشته با عدد جمع نمیشه

✅ کد درست:

نمرات = [۱۸, ۱۵, ۱۹, ۱۴]
# یا تبدیل رشته به عدد:
نمرات = [۱۸, ۱۵, int("19"), 14]

🔴 ۶. خطای دو نقطه (SyntaxError: invalid syntax)

❌ کد اشتباه:

if x > 5    # یادت رفت : بذاری
    print(x)
    
for i in range(10)  # اینجا هم : لازمه
    print(i)

✅ کد درست:

if x > 5:
    print(x)
    
for i in range(10):
    print(i)

🔴 ۷. خطای متغیر تعریف نشده (NameError)

❌ کد اشتباه:

نمرات = [۱۸, ۱۵, ۱۹]
print(نمرات[اندیس])  # اندیس تعریف نشده!

✅ کد درست:

نمرات = [۱۸, ۱۵, ۱۹]
اندیس = ۱
print(نمرات[اندیس])  # خروجی: ۱۵

🔴 ۸. خطای کوتیشن (EOL while scanning string literal)

❌ کد اشتباه:

پیام = 'سلام دنیا  # کوتیشن بسته نشده
نام = "علی         # همینطور

✅ کد درست:

پیام = 'سلام دنیا'
نام = "علی"

💡 نکته: همیشه کوتیشن‌ها رو جفت ببند! '...' یا "..."

🔴 ۹. خطای تبدیل نوع (ValueError)

❌ کد اشتباه:

عدد = int(input("یک عدد وارد کن: "))  # اگر کاربر "سلام" وارد کند ارور میده

✅ کد درست:

try:
    عدد = int(input("یک عدد وارد کن: "))
except ValueError:
    print("❌ لطفاً یک عدد واقعی وارد کن!")

🔴 ۱۰. خطای append روی متغیر غیرلیست (AttributeError)

❌ کد اشتباه:

نمرات = ۵
نمرات.append(10)  # عدد متد append ندارد!

✅ کد درست:

نمرات = []
نمرات.append(10)
# یا
نمرات = [۵]
نمرات.append(10)

📋 جدول خلاصه خطاهای رایج

نام خطا علت راه حل
IndentationError تو رفتگی اشتباه بعد از : حتماً ۴ فاصله یا Tab بزن
SyntaxError نقص در دستور (پرانتز، کاما، 🙂 خطا رو خونده و جای خالی رو پر کن
IndexError ایندکس خارج از محدوده قبل از دسترسی چک کن len()
TypeError نوع داده اشتباه از تبدیل نوع مثل int() استفاده کن
NameError متغیر تعریف نشده حتماً اول متغیر رو تعریف کن
ValueError تبدیل نوع ناموفق از try/except استفاده کن

🛠️ ترفندهای عیب‌یابی (Debugging)

  • 📌 خطا رو با دقت بخون! پایتون دقیقاً می‌گوید کجا خطا داره.
  • 📌 از print() استفاده کن تا مقدار متغیرها رو ببینی.
  • 📌 از type() استفاده کن تا ببینی متغیر چه نوع داده‌ای دارد.
  • 📌 از len() استفاده کن تا ببینی آرایه چند عضو دارد.
  • 📌 کدت رو گام به گام اجرا کن (حتماً کامنت بذار).
  • 📌 از try/except برای مدیریت خطاها استفاده کن.

📌 جمع‌بندی: چرا باید آرایه بلد باشیم؟

  • ✅ آرایه‌ها پایه و اساس ساختمان داده‌ها هستند.
  • ✅ همه بازی‌ها و اپلیکیشن‌های واقعی از آرایه استفاده می‌کنند.
  • ✅ با آرایه می‌تونی داده‌های زیاد رو مدیریت کنی.
  • ✅ آماده‌سازی برای مباحث پیشرفته‌تر مثل یادگیری ماشین و هوش مصنوعی.

🎮 حالا نوبت توئه! 🎮

یکی از بازی‌ها رو انتخاب کن و کدش رو اجرا کن!

بعد خودت تغییرات بده و بازی خودت رو بساز!

💻 برنامه‌نویسی ! 🐍


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

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