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

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

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
⚡️ معکوس کردن یک رشته در پایتون با روشی نوآورانه!

برای معکوس کردن یک رشته در پایتون، معمولاً از حلقه‌ها یا متدهای خاص استفاده می‌کنیم:
reversed_string = ""
for char in my_string:
reversed_string = char + reversed_string

اما یک روش ساده‌تر و سریع‌تر وجود دارد که می‌تواند کار ما را به‌راحتی انجام دهد:
reversed_string = my_string[::-1]

در اینجا، با استفاده از اسلایسینگ (slicing) می‌توانیم رشته را به‌سادگی از انتها به ابتدا بخوانیم. با قرار دادن ::-1 در انتهای رشته، به پایتون می‌گوییم که هر کاراکتر را با گام منفی یک انتخاب کند و بدین ترتیب رشته را معکوس می‌کند.

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

#pythonMagic | learnpythonicy | آموزش پایتون
🔥 محاسبه فاکتوریل در پایتون با ۳ روش مختلف!

برای محاسبه فاکتوریل (n!) در پایتون، می‌توانید از این روش‌ها استفاده کنید:

1. روش کلاسیک با حلقه:
factorial = 1
for i in range(1, n+1):
factorial *= i


2. روش بازگشتی (Recursive):
def factorial(n):
return 1 if n == 0 else n * factorial(n-1)



3. روش یکخطی با math (بهینه و سریع!):
from math import factorial
result = factorial(n)



#pythonMagic | @learnpythonicy | آموزش پایتون
🔥 محاسبه توان اعداد در پایتون با ۵ روش جادویی!

برای محاسبه a^b در پایتون، این روش‌های خلاقانه را امتحان کنید:

1️⃣ روش ساده با عملگر
result = a ** b

2️⃣ روش ریاضی با pow()
result = pow(a, b)  # بهینه‌تر از ** برای اعداد بزرگ

3️⃣ روش حلقه‌ای (بدون عملگر)
result = 1
for _ in range(b):
result *= a

4️⃣ روش بازگشتی خلاقانه
def power(a, b):
return 1 if b == 0 else a * power(a, b-1)

5️⃣ روش نمایی با لگاریتم (برای اعداد اعشاری)
import math
result = math.exp(b * math.log(a))

💎 روش ویژه: محاسبه توان با بیت‌ها (روش برنامه‌نویسی سیستمی)
def bit_power(a, b):
result = 1
while b > 0:
if b & 1:
result *= a
a *= a
b >>= 1
return result

🎯 نکات طلایی:
- روش ** برای استفاده عمومی مناسب است
- دستور pow() برای محاسبات مدولار بهتر عمل می‌کند (pow(a,b,mod))
- روش بیتی سریع‌ترین روش برای توان‌های بزرگ است

چالش: می‌توانید تابعی بنویسید که همه این روش‌ها را با هم مقایسه کند؟

#PythonMagic | learnpythonicy | آموزش پایتون
🔥 محاسبه میانگین در پایتون با ۷ روش حرفه‌ای!

برای محاسبه میانگین اعداد در پایتون، این تکنیک‌های جالب را امتحان کنید:

1️⃣ روش ساده با sum و len
numbers = [1, 2, 3, 4, 5]
average = sum(numbers) / len(numbers)

2️⃣ روش شیءگرا با کلاس
class AverageCalculator:
def __init__(self, numbers):
self.numbers = numbers

def calculate(self):
return sum(self.numbers) / len(self.numbers)

avg = AverageCalculator([1, 2, 3, 4, 5]).calculate()

3️⃣ روش فانکشنال با reduce
from functools import reduce
average = reduce(lambda x, y: x + y, numbers) / len(numbers)

4️⃣ روش کتابخانه‌ای با statistics
from statistics import mean
average = mean(numbers)

5️⃣ روش numpy (بهینه برای آرایه‌های بزرگ)
import numpy as np
average = np.mean(numbers)

6️⃣ روش بازگشتی (حلقه‌ای پنهان)
def recursive_avg(nums, n=None, total=None):
if n is None:
return recursive_avg(nums, len(nums), 0)
if n == 0:
return total / len(nums)
return recursive_avg(nums, n-1, total+nums[n-1])

7️⃣ روش مولد (Generator)
def generate_average(nums):
total = 0
count = 0
for num in nums:
total += num
count += 1
yield total / count

# استفاده:
avg_gen = generate_average([1, 2, 3, 4, 5])
last_avg = [avg for avg in avg_gen][-1]

🎯 نکات کلیدی:
- روش statistics برای داده‌های آماری ایده‌آل است
- روش numpy بهترین انتخاب برای آرایه‌های بزرگ عددی
- روش مولد برای محاسبه میانگین متحرک عالی است

چالش:
تابعی بنویسید که میانگین وزنی محاسبه کند...

def weighted_avg(values, weights):
return sum(v * w for v, w in zip(values, weights)) / sum(weights)

#PythonMagic | @learnpythonicy
👍2
✔️ تولید اعداد تصادفی در پایتون با ۷ روش حرفه‌ای!

برای تولید اعداد تصادفی در پایتون، این تکنیک‌های کاربردی را امتحان کنید:

1️⃣ ماژول random پایه
import random
print(random.random()) # عدد اعشاری بین 0 تا 1


2️⃣ محدوده عددی
print(random.randint(1, 100))  # عدد صحیح بین 1 تا 100


3️⃣ انتخاب تصادفی از لیست
items = ['a', 'b', 'c']
print(random.choice(items)) # انتخاب یک آیتم


4️⃣ نمونه‌گیری بدون جایگزینی
print(random.sample(range(100), 5))  # 5 عدد منحصر بفرد


5️⃣ توزیع نرمال
print(random.gauss(0, 1))  # توزیع گاوسی


6️⃣ برای نتایج تکرارپذیر
random.seed(42)  # ثابت کردن نتایج تصادفی


7️⃣ ماژول secrets برای امنیت
import secrets
print(secrets.randbelow(100)) # ایمن برای رمزنگاری


🗝 روش ویژه: NumPy برای آرایه‌های تصادفی
import numpy as np
print(np.random.rand(3,3)) # ماتریس 3x3 تصادفی


نکات طلایی
- برای امنیت از secrets استفاده کنید
- برای علم داده از numpy.random استفاده شود
- دستور seed برای دیباگ مفید است


#PythonMagic | #random | #seed | #secrets | #numpy | learnpythonicy

> *برای بازی‌ها، شبیه‌سازی‌ها و رمزنگاری کاربرد دارد*
🤓2
✔️ ۵ ترفند جادویی در پردازش تصویر با پایتون (OpenCV + PIL)

پردازش تصویر یکی از جذاب‌ترین بخش‌های برنامه‌نویسی است. در اینجا تکنیک‌های کاربردی را با کتابخانه‌های محبوب پایتون بررسی می‌کنیم:


1️⃣چرخش تصویر با حاشیه‌های هوشمند

import cv2
import numpy as np

img = cv2.imread('image.jpg')
assert img is not None, "تصویر یافت نشد!" # بررسی وجود فایل
rows, cols = img.shape[:2]

M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
rotated = cv2.warpAffine(img, M, (cols, rows), borderMode=cv2.BORDER_REFLECT)
cv2.imwrite('rotated.jpg', rotated)

بهینه‌سازی:
- اضافه کردن assert برای بررسی وجود فایل.
- ذخیره خودکار خروجی با imwrite.


2️⃣ فیلتر ترکیبی (Edge Detection + Blur)

from PIL import Image, ImageFilter

image = Image.open('image.jpg')
edges = image.filter(ImageFilter.FIND_EDGES()) # تابع باید با حروف کوچک باشد: FIND_EDGES → FIND_EDGES
blurred_edges = edges.filter(ImageFilter.GaussianBlur(radius=2))
blurred_edges.save('edges_blurred.jpg')


3️⃣ تغییر رنگ‌های خاص با HSV

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
mask = cv2.inRange(hsv, lower_red, upper_red)
img[mask > 0] = [0, 255, 0] # تغییر رنگ قرمز به سبز
cv2.imwrite('color_changed.jpg', img)

نکته:
- برای تشخیص بهتر قرمز، محدوده [170, 100, 100] تا [180, 255, 255] را نیز اضافه کنید.


4️⃣ تصحیح خودکار نور

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
equalized = cv2.equalizeHist(gray)
cv2.imwrite('equalized_gray.jpg', equalized)

# نسخه رنگی:
yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV)
yuv[:,:,0] = cv2.equalizeHist(yuv[:,:,0])
equalized_color = cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR)
cv2.imwrite('equalized_color.jpg', equalized_color)



5️⃣ تشخیص چهره + تار کردن پس‌زمینه

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)

mask = np.zeros_like(img)
for (x,y,w,h) in faces:
mask[y:y+h, x:x+w] = img[y:y+h, x:x+w] # حفظ چهره
blurred_bg = cv2.GaussianBlur(img, (25,25), 0)
result = np.where(mask==0, blurred_bg, mask) # ترکیب با ماسک
cv2.imwrite('blurred_bg.jpg', result)


📚 کتابخانه‌های پیشنهادی
- OpenCV: برای پردازش حرفه‌ای تصویر.
- Pillow: برای عملیات ساده‌تر.
- scikit-image: برای الگوریتم‌های پیشرفته (مثل exposure.equalize_adapthist).
- matplotlib: برای نمایش گرافیکی نتایج.

#PythonMagic | #بینایی_ماشین |@LearnPythonicy
🔍 راهنمای #هشتگ‌ها برای دسترسی سریع‌تر به مطالب کانال

برای اینکه راحت‌تر به مطالب دلخواهتون برسید، از هشتگ‌های زیر استفاده کنید:

---

### 😂 #طنز

مطالب فان و خنده‌دار برای فاصله گرفتن از دنیای کدنویسی.

### 🧪 #تست_تایم

تست‌ها و تمرین‌هایی که باید برای تقویت مهارت‌های برنامه‌نویسی بزنید.

### 📘 #بدانیم

نکات مهم و کاربردی درباره‌ی برنامه‌نویسی و پایتون.

### 📚 #بخوانیم

دانستنی‌ها و مقالاتی که پیشنهاد می‌کنم حتما مطالعه کنید.

### 📖 #معرفی_کتاب / #بوک_تایم

کتاب‌های پیشنهادی برای یادگیری اصولی‌تر.

### 🔥 #موتیو_تایم

پست‌های انگیزشی و انرژی‌بخش برای ادامه‌ی مسیر یادگیری.

### 📚 #کتابخانه

کتابخانه‌هایی که در کانال معرفی شده‌اند.

### 📃 #برگه_تقلب و #Cheat_Sheet

خلاصه و نکات کلیدی
---
### 🎮 #game

بازی های ساخته شده با پایتون

### 🛣 #roadmap

نقشه‌راه یادگیری پایتون و مهارت‌های لازم.

### 🧩 #project_time

پروژه‌های تمرینی برای افزایش تجربه و تسلط.

### 📄 #paper

مقالات علمی و تخصصی معرفی‌شده.

---

### ⚡️ #PythonTricks

میانبرها و ترفندهای کاربردی پایتون.

### #Pythonmagic

رفتارهای خاص و جالب پایتون که کمتر کسی می‌داند.

### 🧰 #functools

ابزارها و تکنیک‌های مرتبط با توابع.

### 🧱 #codeBites

خلاصه‌ی یک دستور همراه با نمونه‌کد کوتاه.

### ❗️ #error

خطاهای رایج پایتون و روش رفع آن‌ها.

### 📰 #news

اخبار روز پایتون و دنیای تکنولوژی.

### 🖼 #carousel

پست‌های اسلایدری برای آموزش موضوعات مختلف.

---

### 🤖 #AI

هوش مصنوعی

### 📊 #ML

یادگیری ماشین

### 🧠 #DL

یادگیری عمیق (ژرف)

---

## 🔎 جستجوی سریع دستورات و کتابخانه‌ها

هر دستور یا کتابخانه‌ای که لازم دارید کافیست هشتگش را جستجو کنید:

#split
#while
#class
#for
#dict
#list
#opencv
#cv2
#numpy
#matplotlib
#tkinter
و …

---

## 🎯 دوره‌ها و تمرین‌ها

📘 دوره آموزش مقدماتی پایتون

🧪 حل ۳۰ سؤال کاربردی برای تقویت مهارت‌های دوره مقدماتی

🎖چالش ۳۰ روزه Python for AI
✔️ مدیریت فایل‌ها در پایتون با ۷ روش حرفه‌ای!

برای کار با فایل‌ها در پایتون، این تکنیک‌های کاربردی را امتحان کنید:

1️⃣ باز کردن و خواندن فایل

with open('file.txt', 'r') as f:
content = f.read()
print(content)


2️⃣ نوشتن در فایل

with open('file.txt', 'w') as f:
f.write("سلام دنیا!")


3️⃣ افزودن به فایل

with open('file.txt', 'a') as f:
f.write("\nخط جدید")


4️⃣ خواندن خط به خط

with open('file.txt', 'r') as f:
for line in f:
print(line.strip())


5️⃣ بررسی وجود فایل

import os
print(os.path.exists('file.txt')) # True یا False


6️⃣ حذف فایل

import os
os.remove('file.txt')


7️⃣ مدیریت مسیرها با pathlib

from pathlib import Path
path = Path('file.txt')
print(path.exists())
print(path.read_text())


🗝 روش ویژه: خواندن و نوشتن فایل‌های CSV با pandas

import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
df.to_csv('output.csv', index=False)


نکات طلایی


* همیشه از with برای مدیریت فایل استفاده کنید
* برای مسیرهای پیچیده از pathlib کمک بگیرید
* برای داده‌های جدولی از pandas بهره ببرید

#PythonMagic | #FileHandling | #pathlib | #pandas | @learnpythonic

> *برای ذخیره‌سازی، تحلیل داده و اتوماسیون کاربرد دارد*
✔️ کار با لیست‌ها در پایتون با ۷ روش حرفه‌ای!

برای مدیریت لیست‌ها و داده‌های متوالی، این تکنیک‌های کاربردی را امتحان کنید:

1️⃣ ایجاد لیست

fruits = ['apple', 'banana', 'cherry']
print(fruits)


2️⃣ اضافه کردن عنصر

fruits.append('orange')
print(fruits)


3️⃣ درج عنصر در موقعیت خاص

fruits.insert(1, 'kiwi')
print(fruits)


4️⃣ حذف عنصر

fruits.remove('banana')
print(fruits)


5️⃣ دسترسی به عناصر با ایندکس

print(fruits[0])  # اولین عنصر
print(fruits[-1]) # آخرین عنصر


6️⃣ مرتب‌سازی لیست

numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)


7️⃣ لیست‌ها با فهم لیست (List Comprehension)

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


🗝 روش ویژه: تبدیل لیست به آرایه NumPy

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr * 2)


نکات طلایی

* برای اضافه و حذف عنصر از append و remove استفاده کنید
* List comprehension کد شما را کوتاه و خواناتر می‌کند
* برای محاسبات عددی بزرگ، لیست‌ها را به NumPy array تبدیل کنید

#PythonMagic | #NumPy | #List | @learnpythonicy
1
✔️ کار با لیست‌ها در پایتون با ۷ روش حرفه‌ای!

برای مدیریت لیست‌ها و داده‌های متوالی، این تکنیک‌های کاربردی را امتحان کنید:

1️⃣ ایجاد لیست

fruits = ['apple', 'banana', 'cherry']
print(fruits)

2️⃣ اضافه کردن عنصر

fruits.append('orange')
print(fruits)

3️⃣ درج عنصر در موقعیت خاص

fruits.insert(1, 'kiwi')
print(fruits)

4️⃣ حذف عنصر

fruits.remove('banana')
print(fruits)

5️⃣ دسترسی به عناصر با ایندکس

print(fruits[0]) # اولین عنصر
print(fruits[-1]) # آخرین عنصر

6️⃣ مرتب‌سازی لیست

numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)

7️⃣ لیست‌ها با فهم لیست (List Comprehension)

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

🗝 روش ویژه: تبدیل لیست به آرایه NumPy

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr * 2)

#PythonMagic | #NumPy | #list | @learnpythonicy