Kahibaro
Discord Login Register

فصل ۱۷: پروژه‌های کوچک

Table of Contents

هدف فصل: تمرینِ «ساختن یک پروژه واقعی»

در این فصل، دیگر فقط چند خط کد آزمایشی نمی‌نویسیم؛ بلکه چند برنامهٔ کوچک و کامل می‌سازیم. هدف این است که:

در ادامه، برای هر پروژه:

این فصل برای تمرین است؛ لازم نیست همهٔ پروژه‌ها را یک‌باره کامل انجام دهید. می‌توانید:

الگوی کلی ساخت یک پروژه

پیش از ورود به پروژه‌ها، یک الگوی کلی برای تقریباً هر برنامهٔ کوچک:

  1. تعریف مسئله
    • برنامه دقیقاً قرار است چه کار کند؟
    • مثال بزنید: «اگر ورودی این باشد، خروجی چه باید باشد؟»
  2. طراحی ورودی/خروجی
    • برنامه چه چیزهایی از کاربر بپرسد؟
    • برنامه چه چیزی را روی صفحه نشان دهد؟
  3. تقسیم مسئله به بخش‌های کوچک
    • گرفتن ورودی
    • پردازش (حساب کردن، مقایسه، …)
    • نمایش نتیجه
  4. نوشتن نسخهٔ خیلی ساده
    • بدون امکانات اضافی
    • فقط کاری که «حداقلاً» باید انجام شود
  5. آزمایش با چند ورودی مختلف
    • ورودی‌های معمولی
    • ورودی‌های اشتباه یا عجیب
  6. بهبود و افزودن امکانات
    • پیام‌های بهتر برای کاربر
    • رسیدگی به خطاها
    • مرتب کردن کد به کمک تابع‌ها

در همهٔ پروژه‌های این فصل، می‌توانید از همین الگو استفاده کنید.

پروژه ۱: بازی حدس عدد

ایدهٔ برنامه

کامپیوتر یک عدد تصادفی در یک بازه (مثلاً ۱ تا ۱۰۰) انتخاب می‌کند و کاربر باید آن را حدس بزند. بعد از هر حدس، برنامه می‌گوید:

بازی زمانی تمام می‌شود که کاربر عدد درست را حدس بزند.

مشخصات سادهٔ برنامه

گام‌های پیشنهادی پیاده‌سازی

  1. تولید عدد تصادفی
    • استفاده از کتابخانهٔ random برای ساخت یک عدد تصادفی در یک بازه.
  2. حلقه برای حدس‌زدن
    • تا زمانی که حدس کاربر با عدد مخفی برابر نشده، حلقه ادامه پیدا کند.
  3. مقایسهٔ حدس با عدد
    • اگر حدس کوچک‌تر، پیام افزایش؛ اگر بزرگ‌تر، پیام کاهش.
  4. شمارش تعداد تلاش‌ها
    • در هر حدس، یک شمارنده را ۱ واحد زیاد کنید.
  5. نمایش نتیجه نهایی
    • وقتی حدس درست شد، پیام موفقیت همراه با تعداد حدس‌ها.

ساختار نمونهٔ کد (الگو)

import random
# ۱. تولید عدد تصادفی
secret = random.randint(1, 100)
attempts = 0
while True:
    # ۲. گرفتن حدس کاربر
    guess_text = input("یک عدد بین ۱ تا ۱۰۰ حدس بزن: ")
    # تبدیل به عدد
    guess = int(guess_text)
    attempts = attempts + 1  # ۳. افزایش شمارنده
    # ۴. مقایسه
    if guess < secret:
        print("بزرگ‌تر حدس بزن!")
    elif guess > secret:
        print("کوچک‌تر حدس بزن!")
    else:
        print("آفرین! عدد درست", secret, "بود.")
        print("تعداد حدس‌ها:", attempts)
        break

پیشنهادهای گسترش

پروژه ۲: ماشین‌حساب ساده

ایدهٔ برنامه

یک برنامهٔ متنی بنویسید که بتواند چهار عمل اصلی را انجام دهد:

کاربر عمل دلخواه و اعداد را وارد می‌کند و برنامه جواب را نشان می‌دهد.

مشخصات سادهٔ برنامه

گام‌های پیشنهادی پیاده‌سازی

  1. نمایش منو برای کاربر
    • مثلاً چهار گزینه برای انتخاب نوع عملیات.
  2. گرفتن نوع عملیات
    • با input، نماد عمل (مثل +) را بگیرید.
  3. گرفتن دو عدد
    • از کاربر بپرسید عدد اول و دوم چه باشد.
    • تبدیل رشته به عدد با float.
  4. بررسی نوع عملیات
    • با if / elif / else تصمیم بگیرید چه عملی انجام شود.
  5. نمایش نتیجه
    • فرمت مناسب برای چاپ (مثلاً «نتیجهٔ ۲ + ۳ = ۵»).

ساختار نمونهٔ کد (الگو)

print("ماشین‌حساب ساده")
print("عملیات را انتخاب کنید:")
print("+ برای جمع")
print("- برای تفریق")
print("* برای ضرب")
print("/ برای تقسیم")
op = input("نماد عملیات را وارد کنید: ")
a = float(input("عدد اول: "))
b = float(input("عدد دوم: "))
if op == "+":
    result = a + b
elif op == "-":
    result = a - b
elif op == "*":
    result = a * b
elif op == "/":
    result = a / b
else:
    print("عملیات نامعتبر است.")
    result = None
if result is not None:
    print("نتیجه:", result)

پیشنهادهای گسترش

پروژه ۳: فهرست کارها (To-Do List)

ایدهٔ برنامه

یک برنامهٔ ساده برای مدیریت فهرست کارهای روزانه:

این پروژه تمرین خوبی برای لیست‌ها و حلقه‌ها است.

مشخصات سادهٔ برنامه

گام‌های پیشنهادی پیاده‌سازی

  1. ایجاد یک لیست خالی برای کارها
    • در ابتدای برنامه: tasks = []
  2. حلقهٔ اصلی برنامه
    • تا زمانی که کاربر گزینهٔ «خروج» را انتخاب نکرده.
  3. نمایش منو در هر دور
    • مثلاً ۱: افزودن، ۲: نمایش، ۳: حذف، ۴: خروج.
  4. پیاده‌سازی هر گزینه
    • گزینهٔ افزودن: گرفتن متن کار و append به لیست.
    • گزینهٔ نمایش: چاپ همهٔ کارها با شماره.
    • گزینهٔ حذف: دریافت شماره و حذف همان اندیس از لیست.
  5. کنترل ورودی‌های اشتباه
    • اگر شماره خارج از محدوده بود، پیام خطا.

ساختار نمونهٔ کد (الگو)

tasks = []
while True:
    print("\nفهرست کارها")
    print("1. افزودن کار جدید")
    print("2. نمایش کارها")
    print("3. حذف کار")
    print("4. خروج")
    choice = input("یک گزینه را انتخاب کنید: ")
    if choice == "1":
        text = input("متن کار جدید را وارد کنید: ")
        tasks.append(text)
        print("کار اضافه شد.")
    elif choice == "2":
        if not tasks:
            print("هنوز کاری ثبت نشده است.")
        else:
            print("فهرست کارها:")
            for i, t in enumerate(tasks, start=1):
                print(i, "-", t)
    elif choice == "3":
        if not tasks:
            print("چیزی برای حذف وجود ندارد.")
        else:
            num = int(input("شمارهٔ کاری که می‌خواهید حذف کنید: "))
            index = num - 1  # چون لیست از ۰ شروع می‌شود
            if 0 <= index < len(tasks):
                removed = tasks.pop(index)
                print("حذف شد:", removed)
            else:
                print("شمارهٔ نامعتبر.")
    elif choice == "4":
        print("خروج از برنامه.")
        break
    else:
        print("گزینهٔ نامعتبر، دوباره تلاش کنید.")

پیشنهادهای گسترش

پروژه ۴: تولیدکنندهٔ رمز عبور

ایدهٔ برنامه

برنامه‌ای بنویسید که یک رمز عبور تصادفی بسازد. کاربر می‌تواند بگوید:

این پروژه تمرین خوبی برای:

است.

مشخصات سادهٔ برنامه

گام‌های پیشنهادی پیاده‌سازی

  1. مشخص‌کردن کاراکترهای مجاز
    • مثلاً مجموعه‌ای از حروف و اعداد (می‌توانید خودتان تعریف کنید).
  2. گرفتن طول رمز از کاربر
    • تبدیل به عدد.
  3. ساختن رمز در حلقه
    • به تعداد طول رمز، هر بار یک کاراکتر تصادفی انتخاب و به رشتهٔ رمز اضافه کنید.
  4. نمایش رمز نهایی

ساختار نمونهٔ کد (الگو)

import random
import string
print("تولیدکنندهٔ رمز عبور")
length = int(input("طول رمز را وارد کنید: "))
# کاراکترهای مجاز: حروف کوچک، حروف بزرگ، اعداد
chars = string.ascii_lowercase + string.ascii_uppercase + string.digits
password = ""
for i in range(length):
    password = password + random.choice(chars)
print("رمز تولید شده:")
print(password)

پیشنهادهای گسترش

پروژه ۵: برنامهٔ آزمون (Quiz)

ایدهٔ برنامه

یک آزمون چندسؤالی طراحی کنید که:

این پروژه تمرین خوبی برای:

است.

مشخصات سادهٔ برنامه

گام‌های پیشنهادی پیاده‌سازی

  1. تعریف سؤالات
    • می‌توانید یک لیست از دیکشنری‌ها بسازید؛ هر دیکشنری شامل:
      • متن سؤال
      • گزینه‌ها
      • پاسخ صحیح
  2. حلقه روی سؤالات
    • هر سؤال را به‌ترتیب نمایش دهید.
  3. گرفتن پاسخ کاربر
    • با input.
  4. مقایسه با پاسخ صحیح
    • اگر درست بود، یک امتیاز به شمارنده اضافه کنید.
  5. نمایش نتیجهٔ نهایی
    • تعداد پاسخ درست و شاید درصد نمره.

ساختار نمونهٔ کد (الگو)

questions = [
    {
        "text": "پایتون چیست؟",
        "choices": {
            "a": "یک زبان برنامه‌نویسی",
            "b": "یک سیستم‌عامل",
            "c": "یک مرورگر",
            "d": "یک پایگاه‌داده"
        },
        "answer": "a"
    },
    {
        "text": "خروجی 2 + 3 در پایتون چیست؟",
        "choices": {
            "a": "23",
            "b": "5",
            "c": "خطا",
            "d": "هیچ‌کدام"
        },
        "answer": "b"
    }
]
score = 0
for q in questions:
    print("\nسؤال:")
    print(q["text"])
    for key, value in q["choices"].items():
        print(key + ":", value)
    user_answer = input("گزینهٔ درست را وارد کنید: ")
    if user_answer == q["answer"]:
        print("درست!")
        score = score + 1
    else:
        print("نادرست. پاسخ درست:", q["answer"])
print("\nآزمون تمام شد.")
print("تعداد پاسخ‌های درست:", score, "از", len(questions))

پیشنهادهای گسترش

پروژه ۶: پروژهٔ کوچک وب یا داده (نگاه اولیه)

این بخش فقط برای چشیدن طعم استفاده از پایتون در وب یا علم داده است. توضیحات کامل‌تر در فصل‌های بعدی (توسعهٔ وب و علم داده) آمده است؛ اینجا فقط یک نمونهٔ «خیلی ساده» می‌سازیم.

ایدهٔ ۱: شمارندهٔ بازدید خیلی ساده با Flask (وب)

ساختار خیلی کلی (فقط ایده)

from flask import Flask
app = Flask(__name__)
visits = 0
@app.route("/")
def index():
    global visits
    visits = visits + 1
    return f"تعداد بازدیدها تا الان: {visits}"
# اجرای برنامه در صورت اجرای مستقیم فایل
if __name__ == "__main__":
    app.run()

جزئیات نصب و اجرای Flask، در فصل توسعهٔ وب توضیح داده می‌شود؛ اینجا فقط شکل کلی یک برنامهٔ وب را می‌بینید.

ایدهٔ ۲: محاسبهٔ میانگین نمرات (دادهٔ خیلی ساده)

برنامه‌ای بنویسید که:

ساختار نمونهٔ کد (الگو)

grades = []
while True:
    text = input("یک نمره وارد کنید (یا end برای پایان): ")
    if text == "end":
        break
    grade = float(text)
    grades.append(grade)
if grades:
    total = sum(grades)
    avg = total / len(grades)
    print("میانگین نمرات:", avg)
else:
    print("هیچ نمره‌ای وارد نشد.")

این برنامه یک مثال ساده از کار با داده‌ها است: جمع‌آوری، ذخیره، و محاسبه‌ای ساده روی آن‌ها.

چگونه از این فصل بیشترین استفاده را ببرید؟

این فصل نقطهٔ اتصال بین «مفاهیم تئوری» و «برنامه‌های واقعی» است. هر بار که پروژه‌ای را کامل می‌کنید، یک قدم بزرگ در تبدیل‌شدن به برنامه‌نویس برداشته‌اید.

Views: 5

Comments

Please login to add a comment.

Don't have an account? Register now!