آموزش پایتون
88 subscribers
281 photos
21 videos
81 files
178 links
ارتباط با ما:
@learnpythonicyBot

لینک گروه چت:
https://t.me/learnpythonicychat

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
✔️ سیستم تشخیص حرکت با OpenCV در پایتون

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 در پایتون

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️⃣ 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)
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
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️⃣ اجرای سرور تست سریع
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

پایتون یه سیستم مدیریت حافظه‌ی خودکار داره که یکی از کار هاش اینه که مثلا وقتی یه متغیر دیگه استفاده نشه، این سیستم میاد و اون رو از حافظه پاک می‌کنه. اینطوری حافظه هدر نمی‌ره.
---

جمع‌بندی

کدهای پایتون مستقیم اجرا نمی‌شن. پشت‌صحنه چند مرحله‌ی مهم اتفاق می‌افته:

.py → AST → Bytecode اجرای بایت‌کد → خروجی


اگه با این فرآیند آشنا باشی، بهتر می‌تونی دیباگ کنی، خطاها رو درک کنی و حتی عملکرد کدت رو بهینه کنی.

📌 نکته جالب: بعضی نسخه‌های پایتون مثل PyPy به‌جای تفسیر بایت‌کد، از JIT Compiler استفاده می‌کنن که سرعت رو چند برابر می‌کنه.

منبع | #بدانیم
👍3
The Quick Python Book, 4th Edition (Naomi Ceder).pdf
66.7 MB
📚 «The Quick Python Book»

📚 کتاب "سریع و کاربردی پایتون"

به دنبال یادگیری پایتون به‌صورت جامع و سریع هستید؟

مختصر، مفید و پروژه‌محور | پوشش مفاهیم پایه آشنا کردن شما با ویژگی‌های پیشرفته پایتون

چرا این کتاب را بخوانیم؟
یادگیری سریع بدون حاشیه‌پردازی‌های غیرضروری
تمرین‌های کاربردی برای تسلط بر مفاهیم
منبعی معتبر برای توسعه‌دهندگان پایتون

ویژگی‌های کلیدی کتاب
- آموزش پایتون ۳ از مقدماتی تا پیشرفته
- تمرکز بر کاربردهای واقعی و مثال‌های عملی
- پوشش مفاهیم کلیدی مثل شیءگرایی، مدیریت خطاها، ماژول‌ها و کتابخانه‌های استاندارد
- مناسب برای همه سطوح (از مبتدی تا حرفه‌ای)


#معرفی_کتاب | #بوک_تایم | منبع | آموزش پایتون
👍3
چخبر
🤓4
✔️ 10 Python One-Liners That Will Blow Your Mind!


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. کارهای تکراری: اتوماسیون عملیات روزمره

🛠 ماژول‌های موردنیاز
pip install pyautogui keyboard


@LearnPythonIcy
3
فشار روانی از خود جنگ، آسیب‌زا تره!
سعی کنید حداقل یکبار هم که شده در طول روز، تخلیه روانی بشید

کافیه به جای امن توی خونه بشینید
چشم ها بسته و برید برای ۵ دقیقه تنفس

چه مدلی نفس بکشیم؟
🌱 ۴ ثانیه دم
🌱 ۷ ثانیه نفس نگه دار
🌱 ۸ ثانیه بازدم

@Green_Genius
👍3
✔️ Create a PDF file

#reportlab | @LearnPythonIcy
✔️String Methods in python

#string | @LearnPythonIcy
دوستان،
در این شرایط خاص، مراقب خودتان باشید.❤️

- اگر انرژی کم دارید، طبیعی است:)
- اگر تمرکز ندارید، تقصیر شما نیست=)
- اگر کارایی سابق را ندارید، خودتان را سرزنش نکنید;)

به یاد داشته باشید:
"این روزها هم گذراست...
و شما تنها نیستید."

#مراقب_همدیگر_باشیم
3
✔️ ساختار داده درخت به زبان ساده

درخت چیست؟
یک ساختار داده سلسله مراتبی شبیه درخت واقعی است که از:
- گره‌ها (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
✔️ نمایش سلسله مراتب داده‌ها به صورت درخت

#anytree | #tree | @LearnaPythonIcy
✔️ ماژول typer (برای ساخت CLI حرفهای)

📌 هدف ماژول typer:
- ساخت ابزارهای Command Line (CLI) به سادگی و با Type Hints.
- جایگزین مدرن و آسان برای argparse و click.
- مناسب برای اتوماسیون، اسکریپتنویسی و برنامههای کاربردی.

هدف مثال:
- نشان میدهد چطور با ۴ خط کد یک CLI تعاملی بسازید!
- آموزش استفاده از آرگومانهای اجباری/اختیاری و Type Hints.

#typer | @LearnPythonIcy
👍2
✔️ مثال کاربردی با ماژول toml

🔹 کاربرد اصلی ماژول toml
ماژول toml در پایتون برای کار با فایل‌های پیکربندی با فرمت TOML طراحی شده است.
فرمت TOML (مخفف *Tom's Obvious Minimal Language*) یک فرمت خوانا برای انسان و ماشین است که مخصوصاً برای فایل‌های تنظیمات محبوب است.

🔸 مقایسه با JSON/YAML:
- خوانایی بالاتر نسبت به JSON (مخصوصاً برای داده‌های پیچیده).
- ساده‌تر از YAML (بدان پیچیدگی‌های فاصله و تو رفتگی).
- استاندارد جدید پایتون برای تنظیمات پروژه‌ها.

🔹 چرا TOML بهتر از JSON برای تنظیمات؟
- پشتیبانی از کامنت (برخلاف JSON).
- نیاز به کوتیشن کمتر (مثلاً برای کلیدها).
- خوانایی نزدیک به زبان طبیعی.
1