✔️ سیستم تشخیص حرکت با OpenCV در پایتون
▪️ ویژگیهای پروژه
- تشخیص حرکت در زمان واقعی
- فیلتر نویز با گوسیبلور
- مستطیل سبز حول ناحیه متحرک
- هشدار متنی هنگام تشخیص حرکت
▪️ کاربردها
1. سیستمهای امنیتی
2. نظارت بر حیوانات خانگی
3. شمارش افراد
4. تعامل حرکتی با کامپیوتر
▪️ ایده توسعه
- اضافه کردن ذخیره خودکار ویدئو هنگام حرکت
- ارسال نوتیفیکیشن از طریق تلگرام
- حساسیت قابل تنظیم با اسلایدر
#cv2 | @learnpythonicy
import cv2
# باز کردن دوربین
cap = cv2.VideoCapture(0)
# خواندن اولین فریم (برای مقایسه بعدی)
ret, frame1 = cap.read()
frame1 = cv2.flip(frame1, 1)
gray1 = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)
gray1 = cv2.GaussianBlur(gray1, (21, 21), 0)
while True:
ret, frame2 = cap.read()
if not ret:
break
frame2 = cv2.flip(frame2, 1)
gray2 = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)
gray2 = cv2.GaussianBlur(gray2, (21, 21), 0)
# محاسبه تفاوت بین دو فریم
diff = cv2.absdiff(gray1, gray2)
thresh = cv2.threshold(diff, 25, 255, cv2.THRESH_BINARY)[1]
thresh = cv2.dilate(thresh, None, iterations=2)
# پیدا کردن کانتور حرکتها
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
motion_detected = False
for contour in contours:
if cv2.contourArea(contour) < 1000:
continue
motion_detected = True
(x, y, w, h) = cv2.boundingRect(contour)
cv2.rectangle(frame2, (x, y), (x+w, y+h), (0, 255, 0), 2)
if motion_detected:
cv2.putText(frame2, "Motion Detected!", (10, 30), cv2.FONT_HERSHEY_SIMPLEX,
1, (0, 0, 255), 2)
cv2.imshow("Motion Detector", frame2)
# بروزرسانی فریم مرجع
gray1 = gray2
if cv2.waitKey(1) == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
▪️ ویژگیهای پروژه
- تشخیص حرکت در زمان واقعی
- فیلتر نویز با گوسیبلور
- مستطیل سبز حول ناحیه متحرک
- هشدار متنی هنگام تشخیص حرکت
▪️ کاربردها
1. سیستمهای امنیتی
2. نظارت بر حیوانات خانگی
3. شمارش افراد
4. تعامل حرکتی با کامپیوتر
▪️ ایده توسعه
- اضافه کردن ذخیره خودکار ویدئو هنگام حرکت
- ارسال نوتیفیکیشن از طریق تلگرام
- حساسیت قابل تنظیم با اسلایدر
#cv2 | @learnpythonicy
✔️ مثال ساده با ماژول
خروجی نمونه:
کاربرد
- ساخت بازیهای ساده
- نمونهگیری تصادفی از دادهها
- تست نرمافزار با مقادیر تصادفی
#random | @learnpython
> *برای اعداد اعشاری از
random در پایتون import random
# تولید عدد تصادفی بین 1 تا 10
random_number = random.randint(1, 10)
print("عدد تصادفی:", random_number)
# انتخاب تصادفی از لیست
fruits = ["سیب", "موز", "پرتقال", "انگور"]
random_fruit = random.choice(fruits)
print("میوه تصادفی:", random_fruit)
# ترکیب تصادفی لیست
random.shuffle(fruits)
print("لیست ترکیب شده:", fruits)
خروجی نمونه:
عدد تصادفی: 7
میوه تصادفی: پرتقال
لیست ترکیب شده: ['موز', 'انگور', 'سیب', 'پرتقال']
کاربرد
- ساخت بازیهای ساده
- نمونهگیری تصادفی از دادهها
- تست نرمافزار با مقادیر تصادفی
#random | @learnpython
> *برای اعداد اعشاری از
random.uniform(a, b) استفاده کنید!*✔️ تفاوت return و yield در پایتون
🔹 دستور
- عملکرد: تابع را تمام میکند و مقدار را برمیگرداند
- حافظه: فقط یک مقدار را برمیگرداند
- مثال
🔸 دستور
- عملکرد: تابع را موقتاً متوقف میکند و مقدار را برمیگرداند (حالت را حفظ میکند)
- حافظه: مقادیر را یکبهیک تولید میکند (بهینه برای دادههای حجیم)
- مثال
مقایسه کلیدی
| ویژگی |
| تعداد خروجی | یک بار | چندین بار |
| حالت تابع | پاک میشود | حفظ میشود |
| مصرف حافظه | معمولی | بهینه |
| کاربرد | محاسبات ساده | پردازش دادههای حجیم |
#بدانیم | آموزش پایتون
> *از
🔹 دستور
return (خروج معمولی)- عملکرد: تابع را تمام میکند و مقدار را برمیگرداند
- حافظه: فقط یک مقدار را برمیگرداند
- مثال
def sum_numbers(a, b):
return a + b # تابع پایان مییابد
result = sum_numbers(3, 5) # 8
🔸 دستور
yield (تابع مولد - Generator)- عملکرد: تابع را موقتاً متوقف میکند و مقدار را برمیگرداند (حالت را حفظ میکند)
- حافظه: مقادیر را یکبهیک تولید میکند (بهینه برای دادههای حجیم)
- مثال
def count_up_to(n):
i = 1
while i <= n:
yield i # هر بار یک عدد تولید میکند
i += 1
for num in count_up_to(5):
print(num) # چاپ اعداد 1 تا 5
مقایسه کلیدی
| ویژگی |
return | yield || تعداد خروجی | یک بار | چندین بار |
| حالت تابع | پاک میشود | حفظ میشود |
| مصرف حافظه | معمولی | بهینه |
| کاربرد | محاسبات ساده | پردازش دادههای حجیم |
#بدانیم | آموزش پایتون
> *از
yield برای ساخت جریان داده (Data Stream) استفاده میشود!*🤓3
✔️ مقایسه ۴ دستور کلیدی پایتون در یک نگاه
1️⃣
2️⃣
▪️ مقایسه کلی
| Command | نوع مقایسه | کاربرد اصلی |
A. | break | کنترل حلقه | خروج زودرس از حلقه |
B. | continue | کنترل حلقه | رد کردن یک تکرار خاص |
C. | is | هویت شیء | بررسی اشتراک حافظه |
D. | == | مقدار | مقایسه محتوای اشیا |
#continue | #break | #is | Learnpythonicy
1️⃣
break vs continue (حلقهها)# مثال با break (خروج کامل از حلقه)
for i in range(5):
if i == 3:
break # حلقه در i=3 پایان مییابد
print(i)
# خروجی: 0 1 2
# مثال با continue (رد شدن یک تکرار)
for i in range(5):
if i == 3:
continue # i=3 رد میشود
print(i)
# خروجی: 0 1 2 4
2️⃣
is vs == (مقایسه اشیا)a = [1, 2]
b = [1, 2]
c = a
# == مقایسه مقدار
print(a == b) # True (مقادیر یکسان)
# is مقایسه هویت (آدرس حافظه)
print(a is b) # False (دو شیء متفاوت)
print(a is c) # True (اشارهگر به یک شیء)
▪️ مقایسه کلی
| Command | نوع مقایسه | کاربرد اصلی |
A. | break | کنترل حلقه | خروج زودرس از حلقه |
B. | continue | کنترل حلقه | رد کردن یک تکرار خاص |
C. | is | هویت شیء | بررسی اشتراک حافظه |
D. | == | مقدار | مقایسه محتوای اشیا |
#continue | #break | #is | Learnpythonicy
✔️ ۵ تفاوت کلیدی در پایتون که هر برنامهنویسی باید بداند!
لیست (List) VS تاپل (Tuple)
کپی سطحی (Shallow Copy) VS کپی عمیق (Deep Copy)
متغیرهای کلاس (Class) VS متغیرهای نمونه (Instance)
متدهای معمولی (Instance Method) VS متدهای استاتیک (Static Method)
ژنراتورها (Generator) VS لیستها (List Comprehension)
▪️نکات طلایی
- از تاپل برای دادههای ثابت استفاده کنید
- برای کپی ساختارهای تو در تو حتما از
- متدهای استاتیک برای توابع کمکی مناسبند
- ژنراتورها برای پردازش دادههای حجیم ایدهآل هستند
#بدانیم | @learnpythonicy
> *این تفاوتها را در مصاحبههای شغلی هم میپرسند!* 💼
لیست (List) VS تاپل (Tuple)
لیست = [۱, ۲, ۳] # قابل تغییر
لیست[۰] = ۱۰ # مجاز
تاپل = (۱, ۲, ۳) # تغییرناپذیر
تاپل[۰] = ۱۰ # خطا!
کپی سطحی (Shallow Copy) VS کپی عمیق (Deep Copy)
import copy
لیست_اصلی = [[۱, ۲], [۳, ۴]]
کپی_سطحی = copy.copy(لیست_اصلی) # فقط اشیا سطح اول کپی میشوند
کپی_عمیق = copy.deepcopy(لیست_اصلی) # تمام سطوح کپی میشوند
متغیرهای کلاس (Class) VS متغیرهای نمونه (Instance)
class مثال:
متغیر_کلاس = "مشترک" # بین همه نمونهها
def __init__(self):
self.متغیر_نمونه = "اختصاصی" # برای هر نمونه جداگانه
متدهای معمولی (Instance Method) VS متدهای استاتیک (Static Method)
class مثال:
@staticmethod
def متد_استاتیک(): # بدون self
print("نیاز به نمونه ندارد")
def متد_معمولی(self): # نیاز به self
print("نیاز به نمونه دارد")
ژنراتورها (Generator) VS لیستها (List Comprehension)
# لیستکامپرینشن (تمام محاسبات یکجا)
لیست = [x**2 for x in range(1000000)] # مصرف حافظه بالا
# ژنراتور (مصرف بهینه حافظه)
ژنراتور = (x**2 for x in range(1000000)) # مقادیر یک به یک
▪️نکات طلایی
- از تاپل برای دادههای ثابت استفاده کنید
- برای کپی ساختارهای تو در تو حتما از
deepcopy استفاده کنید - متدهای استاتیک برای توابع کمکی مناسبند
- ژنراتورها برای پردازش دادههای حجیم ایدهآل هستند
#بدانیم | @learnpythonicy
> *این تفاوتها را در مصاحبههای شغلی هم میپرسند!* 💼
✔️ 10 Python One-Liners That Will Blow Your Mind!
1️⃣ Swap Variables
2️⃣ List Comprehension
3️⃣ Lambda Function
4️⃣ Read File
5️⃣ Factorial
6️⃣ Fibonacci Sequence
7️⃣ Reverse String
8️⃣ Flatten List
9️⃣ Check Prime
🔟 Web Server
> *Warning: Don't overuse them in production code!*
#PythonTricks | #codeBites | @LearnPythonIcy
Which one is your favorite? Drop a comment! ⤵️
1️⃣ Swap Variables
a, b = 10, 5; a, b = b, a
2️⃣ List Comprehension
squares = [x**2 for x in range(10)]
3️⃣ Lambda Function
add = lambda x, y: x + y
4️⃣ Read File
lines = [line.strip() for line in open('file.txt')]5️⃣ Factorial
import math; fact = math.factorial(5)
6️⃣ Fibonacci Sequence
fib = lambda n: n if n <= 1 else fib(n-1) + fib(n-2)
7️⃣ Reverse String
reverse = "hello"[::-1]
8️⃣ Flatten List
flat_list = [item for sublist in [[1,2],[3,4]] for item in sublist]
9️⃣ Check Prime
is_prime = lambda n: all(n % i != 0 for i in range(2, int(n**0.5)+1))
🔟 Web Server
python -m http.server 8000
> *Warning: Don't overuse them in production code!*
#PythonTricks | #codeBites | @LearnPythonIcy
Which one is your favorite? Drop a comment! ⤵️
✔️ 5 دستور پایتون که مثل کلید میانبر عمل میکنند!
1️⃣ اجرای سرور تست سریع
📌 کاربرد: راهاندازی فوری یک سرور محلی برای تست فایلهای HTML/JS
2️⃣ تبدیل لیست به رشته
📌 کاربرد: اتصال آیتمهای لیست با جداکننده دلخواه
3️⃣ معکوس کردن لیست/رشته
📌 کاربرد: برعکس کردن هر دنبالهای بدون تابع
4️⃣ خواندن فایل در یک خط
📌 کاربرد: پردازش سریع خطوط فایل بدون
5️⃣ تعویض مقادیر متغیرها
📌 کاربرد: جابجایی مقادیر بدون متغیر موقت
#بدانیم | @learnpythonicy
#codeBites
1️⃣ اجرای سرور تست سریع
python -m http.server 8000
📌 کاربرد: راهاندازی فوری یک سرور محلی برای تست فایلهای HTML/JS
2️⃣ تبدیل لیست به رشته
words = ['Python', 'is', 'awesome']
sentence = ' '.join(words) # 'Python is awesome'
📌 کاربرد: اتصال آیتمهای لیست با جداکننده دلخواه
3️⃣ معکوس کردن لیست/رشته
my_list = [1, 2, 3]
reversed_list = my_list[::-1] # [3, 2, 1]
📌 کاربرد: برعکس کردن هر دنبالهای بدون تابع
4️⃣ خواندن فایل در یک خط
content = [line.strip() for line in open('data.txt')]📌 کاربرد: پردازش سریع خطوط فایل بدون
.close() (پایتون خودش مدیریت میکند) 5️⃣ تعویض مقادیر متغیرها
a, b = 10, 5
a, b = b, a
📌 کاربرد: جابجایی مقادیر بدون متغیر موقت
#بدانیم | @learnpythonicy
#codeBites
👍2
⚙️ کدهای پایتون چجوری اجرا میشن؟ پشتصحنهای که خیلیا نمیدونن!
وقتی یه فایل .py رو با Python اجرا میکنی، همهچیز به همین سادگی که فکر میکنی نیست. پشتصحنه، مراحل مختلفی طی میشن تا اون کد به خروجی تبدیل بشه
بیاین قدمبهقدم ببینیم چه اتفاقی میافته:
---
🧩 مرحله اول: تجزیه ساختاری یا Parsing
اول از همه، کد بررسی میشه تا از نظر دستوری (Syntax) مشکلی نداشته باشه پایتون ساختار کد رو به یه چیزی بهنام AST (درخت نحوی انتزاعی) تبدیل میکنه
---
🧱 مرحله دوم: ساخت بایتکد (Bytecode)
تو این مرحله، AST به مجموعهای از دستورالعملهای سادهتر بهنام بایتکد تبدیل میشه. این بایتکد معمولاً تو پوشهی pycache ذخیره میشه تا اجراهای بعدی سریعتر باشه
---
⚙️ مرحله سوم: اجرای بایتکد توسط ماشین مجازی پایتون
الان وقتشه که ماشین مجازی پایتون وارد عمل بشه. این موتور، دستورالعملهای بایتکد رو خطبهخط اجرا میکنه.
توی این مرحله همهچیز اتفاق میافته:
✔ اجرای توابع
✔ اختصاص حافظه
✔ هندل کردن ارورها
✔ پردازش متغیرها و عملگرها
---
🧹 مرحله چهارم: مدیریت حافظه و Garbage Collection
پایتون یه سیستم مدیریت حافظهی خودکار داره که یکی از کار هاش اینه که مثلا وقتی یه متغیر دیگه استفاده نشه، این سیستم میاد و اون رو از حافظه پاک میکنه. اینطوری حافظه هدر نمیره.
---
✨ جمعبندی
کدهای پایتون مستقیم اجرا نمیشن. پشتصحنه چند مرحلهی مهم اتفاق میافته:
اگه با این فرآیند آشنا باشی، بهتر میتونی دیباگ کنی، خطاها رو درک کنی و حتی عملکرد کدت رو بهینه کنی.
📌 نکته جالب: بعضی نسخههای پایتون مثل PyPy بهجای تفسیر بایتکد، از JIT Compiler استفاده میکنن که سرعت رو چند برابر میکنه.
منبع | #بدانیم
وقتی یه فایل .py رو با Python اجرا میکنی، همهچیز به همین سادگی که فکر میکنی نیست. پشتصحنه، مراحل مختلفی طی میشن تا اون کد به خروجی تبدیل بشه
بیاین قدمبهقدم ببینیم چه اتفاقی میافته:
---
🧩 مرحله اول: تجزیه ساختاری یا Parsing
اول از همه، کد بررسی میشه تا از نظر دستوری (Syntax) مشکلی نداشته باشه پایتون ساختار کد رو به یه چیزی بهنام AST (درخت نحوی انتزاعی) تبدیل میکنه
---
🧱 مرحله دوم: ساخت بایتکد (Bytecode)
تو این مرحله، AST به مجموعهای از دستورالعملهای سادهتر بهنام بایتکد تبدیل میشه. این بایتکد معمولاً تو پوشهی pycache ذخیره میشه تا اجراهای بعدی سریعتر باشه
---
⚙️ مرحله سوم: اجرای بایتکد توسط ماشین مجازی پایتون
الان وقتشه که ماشین مجازی پایتون وارد عمل بشه. این موتور، دستورالعملهای بایتکد رو خطبهخط اجرا میکنه.
توی این مرحله همهچیز اتفاق میافته:
✔ اجرای توابع
✔ اختصاص حافظه
✔ هندل کردن ارورها
✔ پردازش متغیرها و عملگرها
---
🧹 مرحله چهارم: مدیریت حافظه و Garbage Collection
پایتون یه سیستم مدیریت حافظهی خودکار داره که یکی از کار هاش اینه که مثلا وقتی یه متغیر دیگه استفاده نشه، این سیستم میاد و اون رو از حافظه پاک میکنه. اینطوری حافظه هدر نمیره.
---
✨ جمعبندی
کدهای پایتون مستقیم اجرا نمیشن. پشتصحنه چند مرحلهی مهم اتفاق میافته:
.py → AST → Bytecode اجرای بایتکد → خروجی
اگه با این فرآیند آشنا باشی، بهتر میتونی دیباگ کنی، خطاها رو درک کنی و حتی عملکرد کدت رو بهینه کنی.
📌 نکته جالب: بعضی نسخههای پایتون مثل PyPy بهجای تفسیر بایتکد، از JIT Compiler استفاده میکنن که سرعت رو چند برابر میکنه.
منبع | #بدانیم
👍3
The Quick Python Book, 4th Edition (Naomi Ceder).pdf
66.7 MB
📚 «The Quick Python Book»
📚 کتاب "سریع و کاربردی پایتون"
✅ به دنبال یادگیری پایتون بهصورت جامع و سریع هستید؟
✅ مختصر، مفید و پروژهمحور | پوشش مفاهیم پایه آشنا کردن شما با ویژگیهای پیشرفته پایتون
✅ چرا این کتاب را بخوانیم؟
یادگیری سریع بدون حاشیهپردازیهای غیرضروری
تمرینهای کاربردی برای تسلط بر مفاهیم
منبعی معتبر برای توسعهدهندگان پایتون
#معرفی_کتاب | #بوک_تایم | منبع | آموزش پایتون
📚 کتاب "سریع و کاربردی پایتون"
✅ به دنبال یادگیری پایتون بهصورت جامع و سریع هستید؟
✅ مختصر، مفید و پروژهمحور | پوشش مفاهیم پایه آشنا کردن شما با ویژگیهای پیشرفته پایتون
✅ چرا این کتاب را بخوانیم؟
یادگیری سریع بدون حاشیهپردازیهای غیرضروری
تمرینهای کاربردی برای تسلط بر مفاهیم
منبعی معتبر برای توسعهدهندگان پایتون
ویژگیهای کلیدی کتاب
- آموزش پایتون ۳ از مقدماتی تا پیشرفته
- تمرکز بر کاربردهای واقعی و مثالهای عملی
- پوشش مفاهیم کلیدی مثل شیءگرایی، مدیریت خطاها، ماژولها و کتابخانههای استاندارد
- مناسب برای همه سطوح (از مبتدی تا حرفهای)
#معرفی_کتاب | #بوک_تایم | منبع | آموزش پایتون
👍3
✔️ 10 Python One-Liners That Will Blow Your Mind!
1️⃣ Swap Variables
2️⃣ List Comprehension
3️⃣ Lambda Function
4️⃣ Read File
5️⃣ Factorial
6️⃣ Fibonacci Sequence
7️⃣ Reverse String
8️⃣ Flatten List
9️⃣ Check Prime
🔟 Web Server
> *Warning: Don't overuse them in production code!*
#PythonTricks | #codeBites | @LearnPythonIcy
Which one is your favorite? Drop a comment! ⤵️
1️⃣ Swap Variables
a, b = 10, 5; a, b = b, a
2️⃣ List Comprehension
squares = [x**2 for x in range(10)]
3️⃣ Lambda Function
add = lambda x, y: x + y
4️⃣ Read File
lines = [line.strip() for line in open('file.txt')]5️⃣ Factorial
import math; fact = math.factorial(5)
6️⃣ Fibonacci Sequence
fib = lambda n: n if n <= 1 else fib(n-1) + fib(n-2)
7️⃣ Reverse String
reverse = "hello"[::-1]
8️⃣ Flatten List
flat_list = [item for sublist in [[1,2],[3,4]] for item in sublist]
9️⃣ Check Prime
is_prime = lambda n: all(n % i != 0 for i in range(2, int(n**0.5)+1))
🔟 Web Server
python -m http.server 8000
> *Warning: Don't overuse them in production code!*
#PythonTricks | #codeBites | @LearnPythonIcy
Which one is your favorite? Drop a comment! ⤵️
❤4
✔️ ساخت ربات اتوکلیکر هوشمند با پایتون
🔻 ویژگیهای جذاب این ربات
- فعالیت هوشمند بر اساس رنگ پیکسلها
- توقف آسان با کلید F1
- لاگ عملیات برای بررسی عملکرد
- حافظت از اجرای بینظم با تایمر
🔻 کاربردهای عملی
1. بازیها: اتوماسیون کلیک در بازیهای ساده
2. تست نرمافزار: شبیهسازی کلیک کاربر
3. کارهای تکراری: اتوماسیون عملیات روزمره
🛠 ماژولهای موردنیاز
@LearnPythonIcy
🔻 ویژگیهای جذاب این ربات
- فعالیت هوشمند بر اساس رنگ پیکسلها
- توقف آسان با کلید F1
- لاگ عملیات برای بررسی عملکرد
- حافظت از اجرای بینظم با تایمر
🔻 کاربردهای عملی
1. بازیها: اتوماسیون کلیک در بازیهای ساده
2. تست نرمافزار: شبیهسازی کلیک کاربر
3. کارهای تکراری: اتوماسیون عملیات روزمره
🛠 ماژولهای موردنیاز
pip install pyautogui keyboard
@LearnPythonIcy
❤3
Forwarded from روانشناسی | نبوغ سبز
فشار روانی از خود جنگ، آسیبزا تره!
سعی کنید حداقل یکبار هم که شده در طول روز، تخلیه روانی بشید
کافیه به جای امن توی خونه بشینید
چشم ها بسته و برید برای ۵ دقیقه تنفس
چه مدلی نفس بکشیم؟
🌱 ۴ ثانیه دم
🌱 ۷ ثانیه نفس نگه دار
🌱 ۸ ثانیه بازدم
@Green_Genius
سعی کنید حداقل یکبار هم که شده در طول روز، تخلیه روانی بشید
کافیه به جای امن توی خونه بشینید
چشم ها بسته و برید برای ۵ دقیقه تنفس
چه مدلی نفس بکشیم؟
🌱 ۴ ثانیه دم
🌱 ۷ ثانیه نفس نگه دار
🌱 ۸ ثانیه بازدم
@Green_Genius
👍3
دوستان،
در این شرایط خاص، مراقب خودتان باشید.❤️
- اگر انرژی کم دارید، طبیعی است:)
- اگر تمرکز ندارید، تقصیر شما نیست=)
- اگر کارایی سابق را ندارید، خودتان را سرزنش نکنید;)
به یاد داشته باشید:
"این روزها هم گذراست...
و شما تنها نیستید."
#مراقب_همدیگر_باشیم
در این شرایط خاص، مراقب خودتان باشید.❤️
- اگر انرژی کم دارید، طبیعی است:)
- اگر تمرکز ندارید، تقصیر شما نیست=)
- اگر کارایی سابق را ندارید، خودتان را سرزنش نکنید;)
به یاد داشته باشید:
"این روزها هم گذراست...
و شما تنها نیستید."
#مراقب_همدیگر_باشیم
❤3
✔️ ساختار داده درخت به زبان ساده
درخت چیست؟
یک ساختار داده سلسله مراتبی شبیه درخت واقعی است که از:
- گرهها (Nodes): خانههای حاوی داده
- یالها (Edges): خطوط اتصال بین گرهها
چرا درخت مهمه؟
- نمایش دادههای سلسله مراتبی مثل:
- ساختار فایلها در کامپیوتر 📂
- نمودار سازمانی شرکت 👨💼
- رابطه والد-فرزند در دیتابیس 🗄
- پایهی الگوریتمهای پیشرفته
- سرعت بالا در جستجو و مرتبسازی
انواع اصلی درخت
1️⃣ درخت دودویی (Binary Tree)
- هر گره حداکثر ۲ فرزند: چپ و راست
2️⃣ درخت جستجوی دودویی (BST)
- مقدار فرزند چپ < والد < فرزند راست
- جستجو مثل بازی "حدس عدد":
3️⃣ درخت AVL
- نسخهی متعادلشدهی BST
- خودش رو با چرخشها متعادل میکنه ⚖️
مثال کاربردی: سیستم فایل
چه زمانی از درخت استفاده کنیم؟
- وقتی دادهها رابطهی سلسله مراتبی دارن
- نیاز به جستجوی سریع دارید (مثل دیکشنری)
- میخواین دادهها رو به صورت مرتبشده نگه دارید
> "درختها پل بین ساختارهای خطی ساده و پایگاهدادههای پیشرفته هستند!"
#tree | @LearnPythonIcy
درخت چیست؟
یک ساختار داده سلسله مراتبی شبیه درخت واقعی است که از:
- گرهها (Nodes): خانههای حاوی داده
- یالها (Edges): خطوط اتصال بین گرهها
چرا درخت مهمه؟
- نمایش دادههای سلسله مراتبی مثل:
- ساختار فایلها در کامپیوتر 📂
- نمودار سازمانی شرکت 👨💼
- رابطه والد-فرزند در دیتابیس 🗄
- پایهی الگوریتمهای پیشرفته
- سرعت بالا در جستجو و مرتبسازی
انواع اصلی درخت
1️⃣ درخت دودویی (Binary Tree)
- هر گره حداکثر ۲ فرزند: چپ و راست
class Node:
def __init__(self, data):
self.left = None
self.right = None
self.data = data
2️⃣ درخت جستجوی دودویی (BST)
- مقدار فرزند چپ < والد < فرزند راست
- جستجو مثل بازی "حدس عدد":
def search(root, target):
if not root: return False
if root.data == target: return True
if target < root.data:
return search(root.left, target)
return search(root.right, target)
3️⃣ درخت AVL
- نسخهی متعادلشدهی BST
- خودش رو با چرخشها متعادل میکنه ⚖️
مثال کاربردی: سیستم فایل
📁 Documents/
├── 📁 Projects/
│ ├── 📄 report.pdf
│ └── 📁 Code/
├── 📁 Images/
│ └── 🖼 photo1.jpg
└── 📄 notes.txt
چه زمانی از درخت استفاده کنیم؟
- وقتی دادهها رابطهی سلسله مراتبی دارن
- نیاز به جستجوی سریع دارید (مثل دیکشنری)
- میخواین دادهها رو به صورت مرتبشده نگه دارید
> "درختها پل بین ساختارهای خطی ساده و پایگاهدادههای پیشرفته هستند!"
#tree | @LearnPythonIcy
👍1
✔️ ماژول typer (برای ساخت CLI حرفهای)
📌 هدف ماژول typer:
- ساخت ابزارهای Command Line (CLI) به سادگی و با Type Hints.
- جایگزین مدرن و آسان برای
- مناسب برای اتوماسیون، اسکریپتنویسی و برنامههای کاربردی.
هدف مثال:
- نشان میدهد چطور با ۴ خط کد یک CLI تعاملی بسازید!
- آموزش استفاده از آرگومانهای اجباری/اختیاری و Type Hints.
#typer | @LearnPythonIcy
📌 هدف ماژول typer:
- ساخت ابزارهای Command Line (CLI) به سادگی و با Type Hints.
- جایگزین مدرن و آسان برای
argparse و click. - مناسب برای اتوماسیون، اسکریپتنویسی و برنامههای کاربردی.
هدف مثال:
- نشان میدهد چطور با ۴ خط کد یک CLI تعاملی بسازید!
- آموزش استفاده از آرگومانهای اجباری/اختیاری و Type Hints.
#typer | @LearnPythonIcy
👍2
✔️ مثال کاربردی با ماژول
🔹 کاربرد اصلی ماژول
ماژول
فرمت TOML (مخفف *Tom's Obvious Minimal Language*) یک فرمت خوانا برای انسان و ماشین است که مخصوصاً برای فایلهای تنظیمات محبوب است.
🔸 مقایسه با JSON/YAML:
- خوانایی بالاتر نسبت به JSON (مخصوصاً برای دادههای پیچیده).
- سادهتر از YAML (بدان پیچیدگیهای فاصله و تو رفتگی).
- استاندارد جدید پایتون برای تنظیمات پروژهها.
🔹 چرا TOML بهتر از JSON برای تنظیمات؟
- پشتیبانی از کامنت (برخلاف JSON).
- نیاز به کوتیشن کمتر (مثلاً برای کلیدها).
- خوانایی نزدیک به زبان طبیعی.
toml 🔹 کاربرد اصلی ماژول
tomlماژول
toml در پایتون برای کار با فایلهای پیکربندی با فرمت TOML طراحی شده است. فرمت TOML (مخفف *Tom's Obvious Minimal Language*) یک فرمت خوانا برای انسان و ماشین است که مخصوصاً برای فایلهای تنظیمات محبوب است.
🔸 مقایسه با JSON/YAML:
- خوانایی بالاتر نسبت به JSON (مخصوصاً برای دادههای پیچیده).
- سادهتر از YAML (بدان پیچیدگیهای فاصله و تو رفتگی).
- استاندارد جدید پایتون برای تنظیمات پروژهها.
🔹 چرا TOML بهتر از JSON برای تنظیمات؟
- پشتیبانی از کامنت (برخلاف JSON).
- نیاز به کوتیشن کمتر (مثلاً برای کلیدها).
- خوانایی نزدیک به زبان طبیعی.
❤1