⚡️ معکوس کردن یک رشته در پایتون با روشی نوآورانه!
برای معکوس کردن یک رشته در پایتون، معمولاً از حلقهها یا متدهای خاص استفاده میکنیم:
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️⃣ ماژول 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
> *برای بازیها، شبیهسازیها و رمزنگاری کاربرد دارد*
✔️ ۵ ترفند جادویی در پردازش تصویر با پایتون (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
✔️ مدیریت فایلها در پایتون با ۷ روش حرفهای!
برای کار با فایلها در پایتون، این تکنیکهای کاربردی را امتحان کنید:
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 یا False6️⃣ حذف فایل
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 | #ListHandling | #NumPy | #ListComprehension | @learnpythonicy > *برای ذخیره داده، محاسبات و پردازش اطلاعات کاربرد دارد*