python

1045/03/02

فهرست


جلسه اول: شروع کار با پایتون و اصول اولیه

پایتون چیست؟

پایتون یک زبان سطح بالا، خوانا و همه منظوره است. سادگی سینتکس (نوشتار) پایتون باعث شده که کد زدن با اون شباهت زیادی به زبان انگلیسی داشته باشه. به همین دلیل برای شروع برنامه‌نویسی، بهترین انتخاب محسوب میشه.

نصب پایتون و ابزارهای مورد نیاز

  1. نصب Python: کافیه به سایت python.org برید و آخرین نسخه رو دانلود و نصب کنید. (یادتون نره موقع نصب تیک Add Python to PATH رو بزنید).
  2. PyCharm چیست؟ یک محیط توسعه (IDE) حرفه‌ای مخصوص پایتون است. اگر قصد دارید پروژه‌های بزرگ و جدی بنویسید، پای‌چارم با ابزارهای هوشمندی که داره بهترین دستیار شماست.
  3. Jupyter Notebook چیست؟ یک محیط تعاملیه که اجازه میده کدها رو در بلوک‌های جداگانه اجرا کنید و نتیجه رو همون لحظه ببینید. برای کارهای آموزشی، تحلیل داده و تست سریع کدها عالیه.
  4. Pip چیست؟ مخفف "Preferred Installer Program" است. در واقع ابزاریه که باهاش کتابخانه‌ها و بسته‌های آماده پایتون رو از اینترنت دانلود و نصب می‌کنیم.

متغیرها و انواع آن‌ها

در پایتون برای ذخیره داده‌ها از متغیر استفاده می‌کنیم. انواع اصلی متغیرها عبارتند از:

  • int: اعداد صحیح (مثل 10)
  • float: اعداد اعشاری (مثل 15.5)
  • str: رشته یا متن (مثل "Hello")
  • bool: مقادیر منطقی (True یا False)

تشخیص و تبدیل نوع (Type Casting)

برای دیدن نوع یک متغیر از تابع type() استفاده می‌کنیم:

x = 10
print(type(x))  # <class 'int'>

برای تبدیل انواع به هم:

y = float(x)   # تبدیل عدد صحیح به اعشاری -> 10.0
s = str(x)     # تبدیل عدد به متن -> "10"

ورودی و خروجی

برای گرفتن داده از کاربر از input() و برای نمایش خروجی از print() استفاده می‌کنیم:

name = input("نام خود را وارد کنید: ")
print("سلام", name)

نکته: خروجی input() همیشه متن (string) است. اگر عدد می‌خواهید، باید آن را تبدیل کنید: int(input()).

عملگرهای ریاضی

  • جمع: + | تفریق: - | ضرب: * | تقسیم: /
  • توان: ** (مثلا 2 ** 3 می‌شود ۸)
  • باقیمانده: %
  • تقسیم صحیح (بدون اعشار): //

حل تمرینات جلسه اول

۱. جابجایی دو متغیر بدون متغیر کمکی

در پایتون این کار به سادگی و در یک خط انجام می‌شود:

a = 5
b = 10
a, b = b, a
print("a:", a, "b:", b)

توضیح: پایتون ابتدا سمت راست تساوی را به صورت یک "تاپل" ایجاد می‌کند و سپس مقادیر را به ترتیب به متغیرهای سمت چپ اختصاص می‌دهد.


۲. محاسبه انعام، مالیات و جمع کل

food_cost = float(input("مبلغ غذا را وارد کنید: "))

tip = food_cost * 0.18
tax = food_cost * 0.07
total = food_cost + tip + tax

print(f"انعام: {tip}")
print(f"مالیات: {tax}")
print(f"جمع کل: {total}")

توضیح: ابتدا ورودی را به float تبدیل کردیم تا محاسبات اعشاری دقیق باشد، سپس درصدها را ضرب و در نهایت با هم جمع کردیم.


۳. تنظیم‌کننده مواد کوکی

برای ۴۸ کوکی مقادیر مشخص است، پس برای هر ۱ کوکی مقادیر را تقسیم بر ۴۸ می‌کنیم و در تعداد درخواستی ضرب می‌کنیم.

cookies_needed = int(input("چند عدد کوکی می‌خواهید؟ "))

ratio = cookies_needed / 48

sugar = 1.5 * ratio
butter = 1 * ratio
flour = 2.75 * ratio

print(f"شکر مورد نیاز: {sugar} فنجان")
print(f"کره مورد نیاز: {butter} فنجان")
print(f"آرد مورد نیاز: {flour} فنجان")

۴. پیدا کردن ریشه‌های معادله درجه دو

برای این کار از فرمول دلتا $$Delta = b^2 - 4ac$$ استفاده می‌کنیم.

import math

a = float(input("ضریب a: "))
b = float(input("ضریب b: "))
c = float(input("ضریب c: "))

delta = b**2 - 4*a*c

if delta > 0:
    x1 = (-b + math.sqrt(delta)) / (2*a)
    x2 = (-b - math.sqrt(delta)) / (2*a)
    print(f"دو ریشه واقعی: {x1} و {x2}")
elif delta == 0:
    x = -b / (2*a)
    print(f"یک ریشه تکراری: {x}")
else:
    print("این معادله ریشه حقیقی ندارد.")

توضیح: با استفاده از کتابخانه math جذر دلتا را گرفتیم. طبق قوانین ریاضی، اگر دلتا منفی باشد جذر ندارد، پس با دستورات شرطی حالت‌های مختلف را جدا کردیم.

جلسه دوم: منطق، شرط‌ها و کنترل جریان برنامه

۱. عملگرهای مقایسه‌ای (پایه و اساس منطق)

ما برای مقایسه مقادیر از این عملگرها استفاده می‌کنیم. خروجی این مقایسه‌ها همیشه یک مقدار Boolean یعنی یا True (درست) است یا False (غلط).

  • == : مساوی بودن
  • != : نامساوی بودن
  • < و > : بزرگتر یا کوچکتر بودن
  • <= و >= : بزرگتر یا کوچکتر مساوی بودن

۲. عملگرهای منطقی (ترکیب شرط‌ها)

گاهی نیاز داریم چند شرط را با هم چک کنیم:

  • and: وقتی درست است که هر دو طرف درست باشند.
  • or: وقتی درست است که حداقل یکی از طرفین درست باشد.
  • not: نتیجه را برعکس می‌کند (مثلاً True را به False تبدیل می‌کند).

۳. ساختارهای شرطی (If, Elif, Else)

اینجاست که به پایتون می‌گوییم چطور تصمیم بگیرد. نکته حیاتی: در پایتون بعد از هر شرط باید علامت دو نقطه (:) بگذاری و خط بعدی را با فاصله (Indentation) شروع کنی. این فاصله نشان‌دهنده بدنه شرط است.

  • if: اگر شرط درست بود، این کد اجرا شود.
  • elif: (مخفف else if) اگر شرط قبلی غلط بود ولی این یکی درست بود، اجرا شود.
  • else: اگر هیچ‌کدام از شرط‌های بالا درست نبود، این کد اجرا شود.

۴. ساختار جدید Match Case (پایتون ۳.۱۰ به بالا)

این ساختار برای زمانی که می‌خواهی یک متغیر را با چندین مقدار مختلف مقایسه کنی، بسیار تمیزتر و خواناتر از ifهای طولانی است. علامت _ در این ساختار نقش "در غیر این صورت" یا همان حالت پیش‌فرض را دارد.


حل چالش‌های برنامه‌نویسی (همراه با توضیح)

۱. تحلیل‌گر مثلث

هدف: بررسی معتبر بودن مثلث و نوع آن.

a = float(input("ضلع اول: "))
b = float(input("ضلع دوم: "))
c = float(input("ضلع سوم: "))

# بررسی قانون مثلث
if (a + b > c) and (a + c > b) and (b + c > a):
    if a == b == c:
        print("مثلث متساوی‌الاضلاع (Equilateral)")
    elif a == b or a == c or b == c:
        print("مثلث متساوی‌الساقین (Isosceles)")
    else:
        print("مثلث مختلف‌الاضلاع (Scalene)")
else:
    print("مثلث نامعتبر (Invalid Triangle)")

توضیح: ابتدا با یک if چک می‌کنیم که مجموع هر دو ضلع از سومی بزرگتر باشد. اگر بود، وارد یک شرط "تودرتو" می‌شویم تا نوع آن را بر اساس برابری اضلاع تشخیص دهیم.


۲. سیستم تخفیف فروشگاه

هدف: اولویت‌بندی شرط‌ها و مدیریت هدیه ویژه.

amount = float(input("مبلغ خرید: "))
is_member = input("عضو هستید؟ (True/False): ").lower() == "true"

if amount > 200:
    discount = 0.20 if is_member else 0.10
elif 100 <= amount <= 200:
    discount = 0.05
else:
    discount = 0

final_price = amount * (1 - discount)
print(f"قیمت نهایی: {final_price}")

if amount > 500:
    print("تبریک! شما یک هدیه ویژه (Special Gift) دریافت کردید.")

توضیح: اینجا از elif استفاده کردیم تا محدوده‌های قیمتی را جدا کنیم. دقت کن که شرط هدیه ویژه (بالای ۵۰۰) کاملاً جداست، چون ربطی به تخفیف ندارد و باید جداگانه چاپ شود.


۳. تشخیص سال کبیسه

هدف: پیاده‌سازی منطق پیچیده ریاضی.

year = int(input("سال را وارد کنید: "))

if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
    print("این سال کبیسه است.")
else:
    print("این سال کبیسه نیست.")

توضیح: فرمول اصلی این است: سالی کبیسه است که (بر ۴۰۰ بخش‌پذیر باشد) یا (بر ۴ بخش‌پذیر باشد و بر ۱۰۰ نباشد). با ترکیب and و or این منطق را در یک خط نوشتیم.


۴. سیستم احراز هویت امنیتی

هدف: تمرین اولویت‌بندی در شرط‌های تودرتو.

username = input("نام کاربری: ")
password = input("رمز عبور: ")
is_banned = input("آیا کاربر مسدود است؟ (True/False): ").lower() == "true"

if is_banned:
    print("Account Locked")
else:
    if username == "admin":
        if password == "1234":
            print("Welcome Admin")
        else:
            print("Wrong Password")
    else:
        print("User Not Found")

توضیح: در اینجا امنیت اولویت دارد. اول از همه چک می‌کنیم کاربر مسدود است یا نه. اگر نبود، لایه‌های بعدی (نام کاربری و بعد رمز عبور) را چک می‌کنیم.


۵. مبدل واحد هوشمند (با Match Case)

هدف: استفاده از ساختار Match برای انتخاب عملیات.

number = float(input("عدد را وارد کنید: "))
mode = input("کد عملیات (1-3): ")

match mode:
    case "1":
        if number < 0:
            print("Negative input not allowed")
        else:
            print(f"نتیجه: {number * 0.62} مایل")
    case "2":
        if number < -273.15: # دمای مطلق
            print("Negative input not allowed")
        else:
            print(f"نتیجه: {(number * 1.8) + 32} فارنهایت")
    case "3":
        res = "زوج" if number % 2 == 0 else "فرد"
        print(f"عدد {res} است.")
    case _:
        print("Invalid Code")

توضیح: match mode اجازه می‌دهد بر اساس ورودی کاربر، یکی از شاخه‌ها را انتخاب کنیم. در شاخه ۱ و ۲، یک if داخلی گذاشتیم تا از ورود اعداد نامعتبر (منفی) جلوگیری کنیم.

saleh askari
saleh askari

خیلی ممنونم بابت مطالعه این وبلاگ