آموزش برنامه‌نویسی پایتون و هوش مصنوعی
140 subscribers
358 photos
190 videos
41 files
172 links
🎯 یادگیری پایتون با رویکردی متفاوت
🚀 آموزش‌های کاملاً عملی و پروژه‌محور
💻 مسیر تبدیل شدن به یک برنامه‌نویس حرفه‌ای
🌟 فرقی نداره مبتدی هستی یا پیشرفته، از هر سطحی شروع کن و پایتون رو اصولی یاد بگیر
📩 ارتباط با ادمین: @YMahmoodian
09156519984
Download Telegram
بهار ماه‏‌ ها، ربیع الاول است
چرا که آثار رحمت الهی و ذخایر برکات خداوندی در این ماه پدیدار می‏‌شود
و انوار جمال الهی بر زمین و زمینیان می‏‌تابد.
حلول ماه ربیع الاول، ماه جشن و سرور اهل بیت (ع) مبارک باد.
پیام تبریک 🌸🏆🥇

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

این موفقیت درخشان را به اعضای شایسته تیم ملی 🌹:

🥇 علی نادری

🥇 حسین معصومی

🥇 هیربد فودازی

🥇 ارشیا میرشمسی کاخکی

🥇 حسین سلطانی


و همچنین خانواده‌های گرامی ایشان، مربیان دلسوز و جامعه علمی کشور تبریک عرض می‌کنیم. 🌸

امید است درخشش شما الهام‌بخش نسل‌های آینده در مسیر علم، دانش و سربلندی ایران اسلامی باشد. 🏆🇮🇷
📝 گزارش جلسه هفتم

🔹 بخش اول: مرور و تمرین

مروری بر مباحث جلسات گذشته

پاسخ‌گویی و حل پرسش‌های مرتبط



---

🔹 بخش دوم: کار با لیست‌ها (Lists)

آشنایی با متدهای پرکاربرد لیست:

append() : افزودن عنصر جدید

remove() : حذف عنصر

sort() : مرتب‌سازی

index() : یافتن اندیس یک مقدار


کاربرد لیست برای ذخیره داده‌های متوالی



---

🔹 بخش سوم: کار با مجموعه‌ها (Sets)

تعریف و ویژگی‌ها:

عناصر بدون ترتیب

جلوگیری از تکرار عناصر


متدها و عملیات مهم:

اجتماع (union)

اشتراک (intersection)

تفاضل (difference)




---

🔹 بخش چهارم: عملگرها (Operators)

1. ریاضی (Arithmetic):
+, -, *, /, //, %, **


2. مقایسه‌ای (Comparison):
==, !=, <, >, <=, >=


3. منطقی (Logical):
and, or, not


4. عضویت (Membership):
in, not in


5. عملگرهای اختصاصی (Identity Operators):
is, is not




---

جمع‌بندی

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

👨‍🏫 مربی: یاسر محمودیان

📅 تاریخ برگزاری: ۳ شهریورماه ۱۴۰۴

ساعت:

۹:۰۰ تا ۱۰:۳۰ — برادران

۱۰:۳۰ تا ۱۲:۰۰ — خواهران


📍 مکان: کانون فرهنگی ورزشی شهید صیادشیرازی بسیج درگز
🌟🌱 جوانان پرانرژی و علاقه‌مند؛ فعال در راه برنامه‌نویسی و آینده‌سازی 🌱🌟

واقعاً بچه‌های خیلی فعال و علاقه‌مندی داریم؛ پر از استعداد، انرژی و انگیزه 🌸. برای من بسیار ارزشمند است وقتی می‌بینم آن‌ها با تلاش، پشتکار و خلاقیت در مسیر ساختن چیزی جدید قدم برمی‌دارند 💡.

این روحیه‌ی مبتکر بودن و علاقه‌ی واقعی به برنامه‌نویسی، دستاورد بزرگی در همین چند جلسه بوده است 🚀. خوشحالم که می‌بینم بچه‌ها با جدیت تمرین می‌کنند، استمرار دارند و روزبه‌روز علاقه بیشتری به برنامه‌نویسی پیدا کرده‌اند 🖥️💻.

بزرگ‌ترین افتخار من این است که شاهد رشد و بالندگی آن‌ها هستم؛ می‌بینم که اعتمادبه‌نفس پیدا می‌کنند، در عمل توانمند می‌شوند و برای آینده‌ای روشن تلاش می‌کنند . این تلاش‌ها نه‌تنها باعث افتخار خانواده‌ها و معلمانشان است، بلکه در آینده می‌تواند مایه‌ی سربلندی کشور عزیزمان جمهوری اسلامی ایران باشد.

این دانش‌آموزان واقعاً پویــا، فعال و پرانرژی هستند ؛ دارند آینده را می‌سازند و من هم با علاقه و افتخار همراهشان هستم و همراهی با این دانش‌آموزان و دیدن تلاش و پیشرفت آن‌ها برای من یکی از تجربه‌های ارزشمند و خاطره‌انگیز زندگی است.» 🌼.
Media is too big
VIEW IN TELEGRAM
📢 اطلاعیه برگزاری دوره جدید پایتون

با توجه به استقبال همشهریان عزیز از دوره‌ی قبلی، ان‌شاءالله از هفته آینده دوره‌ی جدید برنامه‌نویسی پایتون برگزار خواهد شد.

🔹 مناسب برای علاقه‌مندان به برنامه‌نویسی
🔹 بدون نیاز به پیش‌زمینه خاص
🔹 همراه با تمرین و پروژه‌های کاربردی

دوستانی که تمایل به شرکت دارند، لطفاً هرچه سریع‌تر اطلاع دهند.
آموزش برنامه‌نویسی پایتون و هوش مصنوعی
Video
🔹 سوال 1 : بزرگ‌ترین عدد فرد در لیست

numbers = [10, 23, 4, 5, 6, 78, 65, 45, 78, 5685, 90, 765, 77776, 432, 56, 102]

max_odd = None
for num in numbers:
if num % 2 != 0:
if max_odd is None or num > max_odd:
max_odd = num

print("بزرگ‌ترین عدد فرد:", max_odd)

چطور کار می‌کند؟

1. اول max_odd برابر None قرار داده می‌شود (یعنی هنوز چیزی نداریم).


2. در حلقه، هر عدد چک می‌شود:

اگر فرد بود (num % 2 != 0)،

مقایسه می‌شود: اگر max_odd خالی بود یا عدد جدید بزرگ‌تر بود، جایگزین می‌شود.



3. در آخر بیشترین عدد فرد ذخیره شده.



✔️ خروجی: 5685


---

🔹 سوال 2 : شمارش حروف بزرگ و کوچک

text = 'Hello world PYTHON!'

upper_count = sum(1 for c in text if c.isupper())
lower_count = sum(1 for c in text if c.islower())

print("تعداد حروف بزرگ:", upper_count)
print("تعداد حروف کوچک:", lower_count)

چطور کار می‌کند؟

c.isupper() → بررسی می‌کند آیا کاراکتر بزرگ است.

c.islower() → بررسی می‌کند آیا کاراکتر کوچک است.

برای هر بار درست بودن، یک عدد 1 شمرده می‌شود و در نهایت مجموع گرفته می‌شود.


✔️ خروجی:
تعداد حروف بزرگ: 7
تعداد حروف کوچک: 8


---

🔹 سوال 3 : معدل دانش‌آموزان

students_scores = {
"ali": [18, 20, 19, 16, 15, 20],
"sara": [19, 20, 18, 20, 17],
"omid": [16, 20, 18, 17]
}

averages = {name: sum(scores)/len(scores) for name, scores in students_scores.items()}
print("معدل دانش‌آموزان:", averages)

چطور کار می‌کند؟

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

sum(scores) مجموع نمره‌ها را حساب می‌کند.

len(scores) تعداد نمره‌ها را می‌دهد.

تقسیم این دو، معدل می‌شود.


✔️ خروجی:
ali: 18.0
sara: 18.8
omid: 17.75


---

🔹 سوال 4 : فاکتوریل بازگشتی

def factorial(n):
if n <= 1:
return 1
return n * factorial(n - 1)

print("فاکتوریل 5:", factorial(5))

چطور کار می‌کند؟

فاکتوریل یعنی:


در بازگشتی:

اگر n=1 یا n=0 باشد → جواب 1 است (شرط پایان).

در غیر این صورت n ضربدر فاکتوریل (n-1) می‌شود.



برای n=5:

factorial(5) → 5 × factorial(4)
factorial(4) → 4 × factorial(3)
factorial(3) → 3 × factorial(2)
factorial(2) → 2 × factorial(1)
factorial(1) → 1

در نهایت: 5×4×3×2×1 = 120

✔️ خروجی: 120


---

🔹 سوال 5 : بررسی عدد اول

def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True

print("آیا 29 عدد اول است؟", is_prime(29))

چطور کار می‌کند؟

عدد اول باید فقط بر 1 و خودش بخش‌پذیر باشد.

کافی است تا ریشه دوم عدد را چک کنیم (برای سرعت).

اگر هیچ مقسومی پیدا نشد → عدد اول است.


✔️ خروجی: True


---

🔹 سوال 6 : حذف حروف تکراری

text = "programming"
unique_chars = "".join(dict.fromkeys(text))
print("حروف بدون تکرار:", unique_chars)

چطور کار می‌کند؟

dict.fromkeys(text) همه کاراکترها را کلید دیکشنری می‌کند → تکراری‌ها حذف می‌شوند.

چون دیکشنری ترتیب را حفظ می‌کند، فقط اولین بار هر کاراکتر نگه داشته می‌شود.

در آخر دوباره با "".join() رشته ساخته می‌شود.


✔️ خروجی: progamin


---

🔹 سوال 7 : مجموع اعداد زوج

n = 8
sum_even = sum(i for i in range(2, n+1) if i % 2 == 0)
print("مجموع اعداد زوج تا", n, "=", sum_even)

چطور کار می‌کند؟

range(2, n+1) همه اعداد از 2 تا n را می‌سازد.

شرط if i % 2 == 0 فقط زوج‌ها را نگه می‌دارد.

sum(...) مجموع آن‌ها را می‌گیرد.


✔️ خروجی:
مجموع اعداد زوج تا 8 = 20
آموزش برنامه‌نویسی پایتون و هوش مصنوعی
🔹 سوال 1 : بزرگ‌ترین عدد فرد در لیست numbers = [10, 23, 4, 5, 6, 78, 65, 45, 78, 5685, 90, 765, 77776, 432, 56, 102] max_odd = None for num in numbers: if num % 2 != 0: if max_odd is None or num > max_odd: max_odd = num print("بزرگ‌ترین…
# ================================
# سوال 1 : پیدا کردن بزرگ‌ترین عدد فرد در یک لیست
# روش: با حلقه بررسی می‌کنیم و اگر عدد فرد بود و بزرگ‌تر از بیشترین مقدار قبلی بود، نگه می‌داریم.
numbers = [10, 23, 4, 5, 6, 78, 65, 45, 78, 5685, 90, 765, 77776, 432, 56, 102]

max_odd = None
for num in numbers:
    if num % 2 != 0:  # اگر فرد بود
        if max_odd is None or num > max_odd:  # مقایسه با بیشترین مقدار قبلی
            max_odd = num

print("بزرگ‌ترین عدد فرد:", max_odd)
print("="*50)

# ================================
# سوال 2 : شمارش تعداد حروف بزرگ و کوچک در یک رشته
# روش: با استفاده از isupper و islower شمارش انجام می‌دهیم.
text = 'Hello world PYTHON!'

upper_count = sum(1 for c in text if c.isupper())
lower_count = sum(1 for c in text if c.islower())

print("تعداد حروف بزرگ:", upper_count)
print("تعداد حروف کوچک:", lower_count)
print("="*50)

# ================================
# سوال 3 : محاسبه معدل نمرات دانش‌آموزان
# روش: میانگین هر لیست نمره حساب می‌شود.
students_scores = {
    "ali": [18, 20, 19, 16, 15, 20],
    "sara": [19, 20, 18, 20, 17],
    "omid": [16, 20, 18, 17]
}

averages = {name: sum(scores)/len(scores) for name, scores in students_scores.items()}

print("معدل دانش‌آموزان:", averages)
print("="*50)

# ================================
# سوال 4 : محاسبه فاکتوریل با استفاده از تابع بازگشتی
# روش: n! = n * (n-1)!  و حالت پایه n=1 یا n=0 است.
def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)

print("فاکتوریل 5:", factorial(5))
print("="*50)

# ================================
# سوال 5 : بررسی اول بودن یک عدد
# روش: عدد اول فقط بر خودش و 1 بخش‌پذیر است.
def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5)+1):  # فقط تا ریشه دوم کافی است
        if num % i == 0:
            return False
    return True

print("آیا 29 عدد اول است؟", is_prime(29))
print("="*50)

# ================================
# سوال 6 : حذف حروف تکراری از رشته و حفظ ترتیب
# روش: از dict.fromkeys استفاده می‌کنیم چون ترتیب را حفظ می‌کند.
text = "programming"
unique_chars = "".join(dict.fromkeys(text))

print("حروف بدون تکرار:", unique_chars)
print("="*50)

# ================================
# سوال 7 : محاسبه مجموع اعداد زوج تا n
# روش: با حلقه یا sum و شرط زوج بودن.
n = 8  # مثال: 2+4+6+8 = 20
sum_even = sum(i for i in range(2, n+1) if i % 2 == 0)

print("مجموع اعداد زوج تا", n, "=", sum_even)
print("="*50)
# پیدا کردن اولین عدد فرد
numbers = [2, 4, 6, 8, 7, 9, 12]
for num in numbers:
if num % 2 != 0: # بررسی عدد فرد
print("اولین عدد فرد پیدا شد :", num)
break # خروج از حلقه

# پیدا کردن اولین عدد زوج
numbers = [21, 43, 6, 8, 3, 1, 7, 9, 12, 45, 13, 67]
for num in numbers:
if num % 2 == 0: # بررسی عدد زوج
print("اولین عدد زوج پیدا شد :", num)
break # خروج از حلقه
Media is too big
VIEW IN TELEGRAM
چطور میشه اولین عدد فرد یا اولین عدد زوج رو از داخل یک لیست پیدا کرد.

🔹 توضیح کد اول (پیدا کردن اولین عدد فرد):
یک لیست از اعداد داریم: numbers = [2, 4, 6, 8, 7, 9, 12]
با استفاده از یک حلقه for، هر عدد (num) رو یکی‌یکی بررسی می‌کنیم.
شرط می‌ذاریم: if num % 2 != 0: یعنی اگر باقی‌مانده تقسیم عدد بر ۲ برابر با صفر نبود ⇒ عدد فرده.
وقتی اولین عدد فرد پیدا شد، چاپش می‌کنیم و با دستور break از حلقه خارج می‌شیم.
خروجی این کد میشه:
اولین عدد فرد پیدا شد : 7
🔹 توضیح کد دوم (پیدا کردن اولین عدد زوج):
لیست جدید داریم: numbers = [21, 43, 6, 8, 3, 1, 7, 9, 12, 45, 13, 67]
دوباره حلقه for می‌ذاریم و تک‌تک اعداد بررسی میشن.
این بار شرط می‌ذاریم: if num % 2 == 0: یعنی اگر باقی‌مانده تقسیم عدد بر ۲ برابر با صفر بود ⇒ عدد زوجه.
اولین عدد زوج پیدا بشه چاپ می‌کنیم و با break از حلقه خارج میشیم.
خروجی این کد میشه:
اولین عدد زوج پیدا شد : 6
🔹 نسخه کامل کد
This media is not supported in your browser
VIEW IN TELEGRAM
# اتوماسیون ساده با کتابخانه schedule

# وارد کردن کتابخانه‌های لازم
import schedule
import time

# تعریف تابعی که قرار است به‌صورت زمان‌بندی‌شده اجرا شود
def greet():
    print("👋 Hello! Time to learn Python!")

# زمان‌بندی اجرای تابع greet هر ۵ ثانیه
schedule.every(5).seconds.do(greet)

# حلقه بی‌نهایت برای بررسی و اجرای وظایف زمان‌بندی‌شده
while True:
    schedule.run_pending()   # اجرای وظایف در صف
    time.sleep(1)            # مکث ۱ ثانیه‌ای برای جلوگیری از مصرف زیاد منابع
اتوماسیون ساده در پایتون با کتابخانه schedule
گاهی وقت‌ها دوست داریم بعضی کارها به‌صورت خودکار و زمان‌بندی‌شده انجام بشن. مثلاً:
هر روز صبح یک پیام خوش‌آمد چاپ بشه
هر چند ثانیه یک کار تستی اجرا بشه
یا حتی بکاپ گرفتن از فایل‌ها و ارسال گزارش
در پایتون، یکی از ساده‌ترین ابزارها برای این کار، کتابخانه‌ی schedule هست.
نصب کتابخانه
pip install schedule
نمونه‌ی ساده
import schedule import time # تابعی که قراره به‌صورت زمان‌بندی‌شده اجرا بشه def greet(): print("👋 Hello! Time to learn Python!") # اجرای تابع هر ۵ ثانیه schedule.every(5).seconds.do(greet) # حلقه‌ی اصلی برای اجرای وظایف while True: schedule.run_pending() # اجرای کارهای آماده time.sleep(1) # مکث برای مصرف کمتر CPU
🔹 خروجی: هر ۵ ثانیه یک بار پیام چاپ می‌شه.
مثال پیشرفته‌تر
import schedule import time def daily_task(): print("☀️ صبح بخیر! آماده‌ی شروع یک روز پایتونی باش!") def test_task(): print(" تست هر ۱۰ ثانیه") # اجرای روزانه ساعت ۸ صبح schedule.every().day.at("08:00").do(daily_task) # اجرای هر ۱۰ ثانیه schedule.every(10).seconds.do(test_task) while True: schedule.run_pending() time.sleep(1)
مزایا
سادگی و خوانایی بالا (نیاز به پیچیدگی نداره)
🛠 انعطاف‌پذیری (ثانیه‌ای، دقیقه‌ای، روزانه، یا حتی روز خاص هفته)
💡 جایگزین سبک برای cron مخصوصاً در ویندوز یا پروژه‌های کوچک
🔗 قابل ترکیب با هر اسکریپت پایتونی (مثلاً ارسال ایمیل، اسکرپینگ، بکاپ و …)
⚠️ محدودیت‌ها
مناسب پروژه‌های کوچک یا شخصی هست
در سطح production بهتره از ابزارهایی مثل APScheduler یا Celery استفاده بشه
اسکریپت باید همیشه در حال اجرا باشه (در غیر این صورت کارها متوقف می‌شن)
با همین چند خط کد می‌تونی اتوماسیون سبک و سریع برای کارهای روزمره‌ات داشته باشی.
import schedule
import time

# تابعی که قراره به‌صورت زمان‌بندی‌شده اجرا بشه
def greet():
print("👋 Hello! Time to learn Python!")

# اجرای تابع هر ۵ ثانیه
schedule.every(5).seconds.do(greet)

# حلقه‌ی اصلی برای اجرای وظایف
while True:
schedule.run_pending() # اجرای کارهای آماده
time.sleep(1) # مکث برای مصرف کمتر CPU
import schedule
import time

def daily_task():
print("☀️ صبح بخیر! آماده‌ی شروع یک روز پایتونی باش!")

def test_task():
print(" تست هر ۱۰ ثانیه")

# اجرای روزانه ساعت ۸ صبح
schedule.every().day.at("08:00").do(daily_task)

# اجرای هر ۱۰ ثانیه
schedule.every(10).seconds.do(test_task)

while True:
schedule.run_pending()
time.sleep(1)
هوش مصنوعی در برنامه‌نویسی چطور کمک می‌کند؟

1. تولید و تکمیل خودکار کد

- هوش مصنوعی خطوط کد را بر اساس زمینه و الگوهای رایج پیشنهاد می‌دهد.
- ابزارهایی مثل GitHub Copilot و TabNine هنگام تایپ، ادامه‌ی کد را با دقت بالا تکمیل می‌کنند.
- این قابلیت سرعت پیاده‌سازی توابع ساده و تکراری را تا ۳–۵ برابر افزایش می‌دهد.

2. کشف و رفع خودکار باگ و آسیب‌پذیری

- سیستم‌های تحلیل استاتیک مثل DeepCode (تحت Snyk) کد را برای باگ‌های منطقی و ایرادات رایج بررسی می‌کنند.
- پیشنهادهای اصلاح خودکار برای رفع باگ یا جلوگیری از رخداد آن ارائه می‌شود.
- بسیاری از آسیب‌پذیری‌های امنیتی مشهور (SQL Injection، XSS و…) در این مرحله شناسایی می‌شوند.

3. خودکارسازی تست و تضمین کیفیت

- AI قادر است تست‌های واحد (unit tests) و تست‌های یکپارچه (integration tests) را بر اساس رفتار تابعی به‌صورت خودکار بسازد.
- پوشش (coverage) تست را ارزیابی و نقاط ضعف را برای اضافه کردن تست جدید پیشنهاد می‌دهد.
- کاهش بار ذهنی توسعه‌دهنده روی نوشتن و نگهداری تست‌ها.

4. مستندسازی هوشمند و ترجمه کد

- توضیحات توابع، کلاس‌ها و APIها را به‌صورت خودکار تولید می‌کند.
- قابلیت ترجمه‌ی داکیومنت از یک زبان به زبان دیگر (مثلاً انگلیسی به فارسی) بدون افت کیفیت.
- تولید خلاصه‌ی تغییرات (changelog) و مستندات توسعه مداوم.

5. بازسازی و بهینه‌سازی کد (Refactoring)

- پیشنهاد نام‌گذاری معنادار برای متغیرها و توابع با توجه به استانداردهای پروژه.
- شناسایی و حذف بخش‌های زائد یا تکراری در کد.
- کمک به تبدیل کد از یک زبان به زبان دیگر یا به ورژن جدیدتر چارچوب‌ها.

6. همکاری تیمی، مدیریت و پیش‌بینی پروژه

- اولویت‌بندی خودکار issueها بر اساس پیچیدگی و تأثیرشان روی کارفرما.
- پیش‌بینی مدت‌زمان تقریبی انجام هر تسک با دقت تحلیل تاریخی پروژه‌های مشابه.
- تحلیل احساسات کامنت‌ها و PR reviews برای شناسایی نقاط اختلاف و بهبود ارتباط تیم.

نمونه‌ی ابزارها به‌صورت تعریف

- GitHub Copilot
ابزاری برای تکمیل خودکار کد و ارائه پیشنهادهای لحظه‌ای هنگام نوشتن، به‌گونه‌ای که سرعت پیاده‌سازی توابع ساده و تکراری را تا چند برابر افزایش می‌دهد.

- Amazon CodeWhisperer
سیستمی که بر اساس توصیف‌های زبانی ساده، قطعات کد تولید می‌کند و به شما کمک می‌کند بدون نوشتن جزئیات زیاد، بخش‌های ابتدایی پروژه را سریع‌تر آماده کنید.

- DeepCode (Snyk)
پلتفرمی برای تحلیل استاتیک کد، کشف باگ‌ها و آسیب‌پذیری‌های