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

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

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
✔️ 5 خطای پرکاربرد پایتون که همه می‌بینن!

1️⃣ NameError: 
"وقتی از متغیری استفاده کنی که تعریفش نکردی!"
print(undefined_var) # خطا!

2️⃣ IndentationError:
"فراموش کردن تو رفتگی یا فاصله‌های نادرست"
if True:
print("Hello") # خطا!

3️⃣ TypeError:
"انجام عملیات روی نوع‌های ناسازگار"
"10" + 5 # خطا!

4️⃣ IndexError:
"دسترسی به خونه‌ای از لیست که وجود نداره"
lst = [1, 2]
print(lst[10]) # خطا!

5️⃣ KeyError:
"درخواست کلیدی که توی دیکشنری نیست"
data = {"name": "Ali"}
print(data["age"]) # خطا!


#error | #خطا | @learnpythonicy | #codeBites


> *برای مشاهده کامل خطاها: dir(__builtins__)*
✔️ توضیح کد پردازش تصویر با OpenCV:

این کد سه عملیات اصلی روی تصاویر انجام می‌دهد:

1. خواندن تصویر از فایل:

   image = cv2.imread('photo.jpg')  # بارگذاری تصویر از مسیر مشخص


2. تغییر اندازه تصویر به 300×300 پیکسل:

   resized = cv2.resize(image, (300, 300))  # تغییر ابعاد با حفظ نسبت


3. برش قسمتی از تصویر (مستطیل با مختصات مشخص):

   cropped = image[100:400, 200:500]  # ارتفاع: 100-400px، عرض: 200-500px


4. نمایش نتیجه در پنجره جدید:

   cv2.imshow('Result', resized)  # نمایش تصویر تغییرسایز شده
cv2.waitKey(0) # توقف برنامه تا فشار کلید توسط کاربر


🔅 نکات کاربردی:
- اگر تصویر بارگذاری نشود، image برابر None خواهد بود

- برای ذخیره تصویر پردازش شده از cv2.imwrite() استفاده کنید

- اعداد در برش تصویر به صورت [Y_start:Y_end, X_start:X_end] هستند

#cv2 | @learnpythonicy

> *این کد پایه‌ای برای پروژه‌های بینایی ماشین و ویرایش تصویر است!*
✔️ تولید نقاشی دیجیتال با پایتون (ترکیب OpenCV + تصادفی‌سازی)

ویژگی‌ها
1. تولید هنر دیجیتال کاملاً تصادفی
2. ترکیب رنگ‌های رندوم در هر اجرا
3. خروجی منحصر به فرد در هر بار اجرا
4. ذخیره خودکار اثر تولیدی

نحوه کار
- ساخت بوم سفید 500x500 پیکسلی
- رسم 50 دایره با رنگ و موقعیت تصادفی
- اضافه کردن امضای "Python Art"
- نمایش و ذخیره نتیجه

#cv2 | #numpy | @learnpythonicy

> *برای اثر پیچیده‌تر، می‌توانید خطوط/مثلث‌های رندوم هم اضافه کنید!*
4
آموزش پایتون
✔️ تولید نقاشی دیجیتال با پایتون (ترکیب OpenCV + تصادفی‌سازی) ویژگی‌ها 1. تولید هنر دیجیتال کاملاً تصادفی 2. ترکیب رنگ‌های رندوم در هر اجرا 3. خروجی منحصر به فرد در هر بار اجرا 4. ذخیره خودکار اثر تولیدی نحوه کار - ساخت بوم سفید 500x500 پیکسلی - رسم 50…
import cv2
import numpy as np

# ایجاد بوم سفید
canvas = np.ones((500, 500, 3), dtype=np.uint8) * 255

# تولید 50 دایره رندوم
for _ in range(50):
color = np.random.randint(0, 256, 3).tolist()
center = (np.random.randint(50, 450), np.random.randint(50, 450))
radius = np.random.randint(10, 50)
cv2.circle(canvas, center, radius, color, -1) # -1 یعنی دایره پررنگ

# اضافه کردن متن هنری
font = cv2.FONT_HERSHEY_SCRIPT_COMPLEX
cv2.putText(canvas, 'Python Art', (150, 250), font, 2, (0, 0, 0), 2)

# نمایش اثر هنری
cv2.imshow('Digital Painting', canvas)
cv2.waitKey(0)
cv2.imwrite('python_art.jpg', canvas) # ذخیره اثر
3
✔️ سیستم تشخیص حرکت با 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