آموزش برنامه‌نویسی پایتون و هوش مصنوعی
140 subscribers
358 photos
190 videos
41 files
172 links
🎯 یادگیری پایتون با رویکردی متفاوت
🚀 آموزش‌های کاملاً عملی و پروژه‌محور
💻 مسیر تبدیل شدن به یک برنامه‌نویس حرفه‌ای
🌟 فرقی نداره مبتدی هستی یا پیشرفته، از هر سطحی شروع کن و پایتون رو اصولی یاد بگیر
📩 ارتباط با ادمین: @YMahmoodian
09156519984
Download Telegram
تحقیق کامل درباره Dynamic Typing در پایتون

1. مقدمه

زبان‌های برنامه‌نویسی بر اساس نحوه‌ی مدیریت نوع داده‌ها (Type System) به دو دسته کلی تقسیم می‌شوند:

Static Typing (ایستا)

Dynamic Typing (پویا)


پایتون یک زبان Dynamic Typed است. یعنی نوع متغیرها در زمان اجرای برنامه (Runtime) تعیین می‌شود، نه در زمان کامپایل (Compile-time). این ویژگی باعث انعطاف‌پذیری بالای پایتون می‌شود اما در عین حال چالش‌هایی هم به همراه دارد.


---

2. تعریف Dynamic Typing

در زبان‌های داینامیک تایپ مثل پایتون:

هنگام تعریف یک متغیر، نیازی به مشخص کردن نوع آن نیست.

نوع متغیر بر اساس مقداری که در آن قرار می‌گیرد به صورت خودکار تعیین می‌شود.

یک متغیر می‌تواند در طول اجرای برنامه چندین بار نوعش تغییر کند.


مثال:

x = 10 # x یک int است
print(type(x))

x = "hello" # حالا x یک str شده
print(type(x))

x = [1, 2, 3] # و حالا x یک list است
print(type(x))


---

3. مقایسه با Static Typing

در زبان‌های Static Typed مثل Java یا C++، شما باید نوع متغیر را از ابتدا مشخص کنید و بعداً نمی‌توانید آن را تغییر دهید.

مثال در جاوا:

int x = 10;
x = "hello"; // خطا: نمی‌توان رشته را به int نسبت داد

در پایتون، چنین محدودیتی وجود ندارد.


---

4. مزایای Dynamic Typing در پایتون

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

مثال:

def add(a, b):
return a + b

print(add(5, 10)) # جمع دو عدد
print(add("hi ", "py")) # الحاق دو رشته


---

5. معایب Dynamic Typing

بروز خطا در زمان اجرا: چون نوع متغیرها در زمان اجرا تعیین می‌شود، ممکن است خطاهای تایپی دیرتر آشکار شوند.
کاهش کارایی: بررسی نوع متغیرها در زمان اجرا سرعت کمتری نسبت به زبان‌های ایستا دارد.
کدهای بزرگ سخت‌تر مدیریت می‌شوند: چون نوع متغیر مشخص نیست، ردیابی باگ‌ها سخت‌تر است.

مثال خطا:

def divide(a, b):
return a / b

print(divide(10, 2)) # درست
print(divide("10", 2)) # خطا در زمان اجرا


---

6. نقش Duck Typing در پایتون

پایتون از مفهومی به نام Duck Typing استفاده می‌کند:

> اگر چیزی مثل اردک راه می‌رود و مثل اردک صدا می‌کند، پس اردک است!



یعنی پایتون کمتر به نوع داده‌ها اهمیت می‌دهد و بیشتر به رفتار آن‌ها (متدها و عملگرهای پشتیبانی‌شده) توجه دارد.

مثال:

class Duck:
def quack(self):
print("Quack!")

class Person:
def quack(self):
print("I’m pretending to be a duck!")

def make_it_quack(duck_like):
duck_like.quack()

make_it_quack(Duck()) # Quack!
make_it_quack(Person()) # I’m pretending to be a duck!


---

7. Type Hinting (اشاره‌گر نوع) در پایتون

از نسخه Python 3.5 به بعد، امکان Type Hints اضافه شد.
این قابلیت اجازه می‌دهد نوع متغیرها را مشخص کنید اما همچنان اجباری نیست و در زمان اجرا بررسی نمی‌شود؛ فقط ابزارهایی مثل mypy یا IDE می‌توانند آن را بررسی کنند.

مثال با Type Hint:

def greet(name: str) -> str:
return "Hello, " + name

print(greet("Ali")) # درست
print(greet(123)) # خطا در mypy (ولی پایتون اجرا می‌کند!)


---

8. کارایی (Performance)

از آنجایی که پایتون باید در زمان اجرا نوع هر متغیر را بررسی کند، سرعت آن نسبت به زبان‌های استاتیک تایپ کمتر است.
با این حال، انعطاف‌پذیری بالای آن باعث شده برای توسعه سریع (Rapid Development) بسیار محبوب باشد.


---

9. جمع‌بندی

پایتون یک زبان داینامیک تایپ است.

نوع متغیرها در زمان اجرا مشخص می‌شود و می‌تواند تغییر کند.

این ویژگی باعث سادگی، انعطاف‌پذیری و سرعت در توسعه می‌شود.

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

برای رفع برخی از این مشکلات، می‌توان از Type Hinting استفاده کرد.
1. انواع حلقه‌ها در پایتون

الف) حلقه for

برای تکرار روی لیست، رشته، دیکشنری، تاپل یا هر iterable استفاده می‌شود.

مثال روی لیست:


fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)

ب) حلقه while

تا وقتی شرط True باشد، تکرار می‌کند.


i = 0
while i < 5:
print(i)
i += 1


---

2. روش‌های حلقه زدن روی داده‌ها

2.1 روی لیست

numbers = [1, 2, 3, 4, 5]
for n in numbers:
print(n)

2.2 روی رشته

word = "Python"
for letter in word:
print(letter)

2.3 روی دیکشنری

person = {"name": "Ali", "age": 25}
for key in person:
print(key, person[key])

# یا
for key, value in person.items():
print(key, value)

2.4 با تابع range()

برای تکرار به تعداد مشخص:


for i in range(5):
print(i)


---

3. روش‌های پیشرفته‌تر

3.1 حلقه‌های تو در تو (Nested Loops)

matrix = [[1,2,3],[4,5,6]]
for row in matrix:
for item in row:
print(item)

3.2 حلقه با شرط (List Comprehension)

روشی کوتاه و پایتونیک برای حلقه:


squares = [x**2 for x in range(5)]
print(squares)

3.3 استفاده از enumerate

برای دسترسی به اندیس و مقدار همزمان:


fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)

3.4 استفاده از zip

برای حلقه زدن روی چند لیست همزمان:


names = ["Ali", "Sara"]
ages = [25, 30]
for name, age in zip(names, ages):
print(name, age)


---

4. دستورات کنترلی در حلقه‌ها

break: خروج از حلقه

continue: رد کردن تکرار فعلی

else در حلقه: وقتی حلقه بدون break تمام شود


for i in range(5):
if i == 3:
break
print(i)
else:
print("تمام شد!") # اجرا نمی‌شود چون break اتفاق افتاد
🔹 یادگیری برنامه‌نویسی یعنی تمرین، تجربه و چالش 🔹

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

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

پس آماده باشید برای یک مسیر پر از تمرین، خلاقیت و یادگیری عمیق 🚀
سلام بچه‌ها 🌹

نمونه‌سوالات خیلی خوبی برامون ارسال شده.
ما ۲۰ سؤال مطابق دروس تدریس‌شده آماده کردیم که می‌تونید از هر سطح ساده، متوسط و سخت انتخاب کنید و حل کنید:
🔗 لینک سوالات
https://eitaa.com/85334588/1160

لطفاً وقتی می‌خواید روی یک سؤال کار کنید:

1. شماره سؤال رو بنویسید.


2. کد تایپی جواب رو داخل گروه بذارید.


3. ۲ تا ۳ عکس یا یک فیلم کوتاه از اجرای کد و خروجی هم بذارید تا مطمئن بشیم درست اجرا شده.



📌 مثال:
سؤال: پیدا کردن بزرگترین عدد
کد تایپی + عکس/فیلم اجرای خروجی

این کار باعث میشه:

بقیه دوستان همون سؤال رو تکراری نفرستن.

همه روش‌های مختلف حل رو ببینیم و یاد بگیریم.

مطمئن بشیم کد اجرا میشه و جواب درست داده.


🙏 همچنین از همه دوستانی که تا الان تمرین‌ها رو ارسال کردند تشکر می‌کنیم.

۱. آقای محمدصالح قادریان
۲.آقای جعفرزاده

توجه و تلاش شما نشون میده آموزش‌ها رو جدی دنبال می‌کنید.
✔️ یادتون باشه حل همین سوالات بیشترین تأثیر رو در تثبیت و درک عمیق مفاهیم داره.

👏 خسته نباشید به همه شما و همین‌طور پرقدرت ادامه بدید 🚀
بهار ماه‏‌ ها، ربیع الاول است
چرا که آثار رحمت الهی و ذخایر برکات خداوندی در این ماه پدیدار می‏‌شود
و انوار جمال الهی بر زمین و زمینیان می‏‌تابد.
حلول ماه ربیع الاول، ماه جشن و سرور اهل بیت (ع) مبارک باد.
پیام تبریک 🌸🏆🥇

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

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

🥇 علی نادری

🥇 حسین معصومی

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

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

🥇 حسین سلطانی


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

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

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

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

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



---

🔹 بخش دوم: کار با لیست‌ها (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