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

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

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
🔆 استفاده از تابع zip() برای ترکیب لیست‌ها در پایتون!

برای ترکیب دو لیست به‌طوری‌که هر عنصر از لیست اول با عنصر معادل خود در لیست دوم جفت شود، معمولاً از حلقه‌ها استفاده می‌کنیم:
combined = []
for i in range(len(list1)):
combined.append((list1[i], list2[i]))

اما پایتون یک روش ساده‌تر و بهینه‌تر به نام تابع zip() ارائه می‌دهد که این کار را به آسانی انجام می‌دهد:
combined = list(zip(list1, list2))

در اینجا، تابع zip() به صورت جفتی عناصر دو لیست را ترکیب می‌کند و نتیجه را به‌صورت یک لیست از tuple‌ها برمی‌گرداند. به عنوان مثال، اگر list1 = [1, 2, 3] و list2 = ['a', 'b', 'c'] باشد، خروجی combined به صورت زیر خواهد بود:
[(1, 'a'), (2, 'b'), (3, 'c')]

این روش نه تنها کد را تمیز و مختصر می‌کند، بلکه باعث افزایش کارایی نیز می‌شود. همچنین، می‌توانیم از تابع zip() برای ترکیب چند لیست به‌طور همزمان استفاده کنیم:
combined = list(zip(list1, list2, list3))

این قابلیت‌های جذاب zip() می‌تواند به شما کمک کند تا دستکاری‌های مختلفی روی لیست‌ها و داده‌ها انجام دهید!

#zip | @learnpythonicy
☀️ یکی از ماژول‌های جدید و جذاب پایتون، graphlib است که در پایتون ۳.۹ معرفی شد. این ماژول برای انجام توپولوژیکال سورت (مرتب‌سازی توپولوژیکی) روی گراف‌های بدون دور (DAG) بسیار مفید است.

مثال کاربردی graphlib برای زمان‌بندی کارها:

from graphlib import TopologicalSorter

# تعریف گراف کارها و وابستگی‌ها
tasks = {
'پوشیدن کفش': {'پوشیدن جوراب'},
'پوشیدن جوراب': {'لباس پوشیدن'},
'لباس پوشیدن': {'دوش گرفتن'},
'دوش گرفتن': set(),
'خوردن صبحانه': {'مسواک زدن'},
'مسواک زدن': {'بیدار شدن'},
'بیدار شدن': set()
}

# ایجاد یک مرتب‌ساز توپولوژیک
ts = TopologicalSorter(tasks)

# انجام مرتب‌سازی و چاپ ترتیب صحیح کارها
print("ترتیب بهینه انجام کارها:")
for task in ts.static_order():
print(f"→ {task}")

خروجی مثال:
ترتیب بهینه انجام کارها:
→ بیدار شدن
→ دوش گرفتن
→ لباس پوشیدن
→ پوشیدن جوراب
→ پوشیدن کفش
→ مسواک زدن
→ خوردن صبحانه


✔️ مزایای graphlib

سبک و سریع:
پیاده‌سازی بهینه‌شده در خود پایتون
خطایابی آسان اگر گراف دور داشته باشد به خوبی تشخیص می‌ده
انعطاف‌پذیر: هم با دیکشنری و هم با گراف‌های دیگر کار می‌کند

#graphlib | آموزش پایتون
🔆 تا حالا به این فکر کردی که بشه کد پایتون رو از داخل یه رشته اجرا کرد؟
با
exec() ممکنه!

code = "print('moz')"
exec(code) # خروجی: moz

دستور exec() می‌تونه هر رشته‌ای که شامل کد پایتونه رو در لحظه اجرا کنه.

⚠️ نکته مهم امنیتی

😱همین یک خط کد می‌تونه کل سیستم رو پاک کنه. نگید نگفتم!!

exec("import os; os.system('rm -rf /')")


تجزیه و تحلیل کد

- خط دستوری import os: این خط ماژول os را وارد می‌کند که امکان تعامل با سیستم عامل را فراهم می‌کند.
- دستور os.system('rm -rf /'): این فرمان سعی می‌کد تمام فایل‌ها و پوشه‌ها را از دایرکتوری روت (/) در سیستم‌های عامل شبه یونیکس حذف کند( پارامتر -r به معنای حذف بازگشتی و f به معنای حذف بدون درخواست تأیید است).
- تابع exec() برای اجرای کد پایتون موجود در رشته استفاده می‌شود.

🔒 پس هیچ‌وقت از exec برای اجرای ورودی‌های غیرقابل اعتماد استفاده نکن.( نکن این کار بده! )

#security | #os | #exec | 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 | آموزش پایتون
🔥 تشخیص زوج یا فرد یک عدد در یک خط کد!

این کد هوشمندانه با استفاده از باقیمانده تقسیم (number % 2) و لیست ایندکسینگ، بدون نیاز به دستورات شرطی، تشخیص میدهد عدد زوج است یا فرد:
- اگر باقیمانده ۰ شود (عدد زوج)، ایندکس 0 که متن 'Even' است انتخاب میشود.
- اگر باقیمانده ۱ شود (عدد فرد)، ایندکس 1 که متن 'Odd' است انتخاب میشود.

💡 کاربرد اصلی:
- جایگزین زیبا و فشرده برای if/else در شرایط ساده
- مناسب برای کدهای کوتاه و خوانا
- کارآمد در پردازش لیستهای عددی و فیلتر کردن دادهها

#بدانیم | آموزش پایتون

(این الگو برای هر نوع تصمیم‌گیری دو حالته قابل استفاده است!)
4👍1
🤖 لطفاً _ممنونم؛ کلماتی کوچک با هزینه‌های هنگفت!

طبق گزارش‌ها، ادب کاربران در گفتگو با هوش مصنوعی، مثل گفتن «لطفاً» و «ممنونم»، سالانه ده‌ها میلیون دلار به OpenAI تحمیل می‌کند! سم آلتمن تأیید کرده که این پیام‌های مؤدبانه، پردازش بیشتری می‌طلبند و در مقیاس جهانی، رقم قابل توجهی از منابع را مصرف می‌کنند.


📌 آیا شما هم هنگام چت با ربات‌ها مؤدب هستید؟ نظرتان را بنویسید! 👇

#news | @learnpythonicy
4
"این کد نمونه‌ای عملی از تبدیل مقادیر بولی به عدد است، که در محاسبات منطقی، کاهش پیچیدگی کد و کاربردهای مختلف در تحلیل داده‌ها بسیار مفید است. برنامه‌نویسی موثر با رویکردی ساده!" 🚀

#بدانیم | آمورش پایتون
4
🎨 تشخیص هوشمند رنگ با ترفند بولی!

value = 5
color = ['red', 'yellow', 'green'][(value >= 50) + (value >= 80)]
print(color) # خروجی: red

چرا این کد جذابه؟
- تبدیل شرایط عددی به انتخاب رنگ در یک خط!
- مکانیزم هوشمندانه:
- (value >= 50) → اگر True باشد 1، اگر نه 0
- (value >= 80) → اگر True باشد 1، اگر نه 0
- جمع این دو مقدار ایندکس لیست را مشخص میکند:
- 0 = قرمز (مقدار کمتر از 50)
- 1 = زرد (مقدار بین 50 تا 79)
- 2 = سبز (مقدار 80 به بالا)

💡 کاربردهای عملی:
- سیستم‌های پایش وضعیت (مثل سلامت باتری، کیفیت هوا)
- نمایش سطح پیشرفت در برنامه‌ها
- داشبوردهای آنالیتیک بدون کدنویسی پیچیده

🚀 توسعه‌ی خلاقانه:
# اضافه کردن سطح جدید (مثلاً آبی برای مقادیر بالای 100)
color = ['red', 'yellow', 'green', 'blue'][(value >= 50) + (value >= 80) + (value >= 100)]


🔥 چالش برنامه‌نویسی:

- می‌توانید این کد را برای ۵ سطح مختلف گسترش دهید؟

آموزش پایتون
3
🚦 تشخیص رابطه ارث‌بری کلاس‌ها در پایتون

این کد با استفاده از تابع issubclass() بررسی می‌کند که آیا یک کلاس، زیرمجموعه کلاس دیگر است یا نه.
- ابزار مفید برای بررسی سلسله مراتب کلاس‌ها
- کاربرد اصلی در طراحی سیستم‌های شیءگرا و اعتبارسنجی نوع داده
- خروجی بولی (True/False) براساس رابطه ارث‌بری

مثال:
- کلاس Car و Bike هر دو از Vehicle ارث می‌برند 🔚 True
- کلاس Car از Bike ارث می‌برد 🔚 False

#issubclass | @learnpythonicy
3
🔥 مدیریت خطاها در پایتون: از ساده تا حرفه‌ای!

آیا می‌دانستید پایتون ۷ روش مختلف برای مدیریت خطا دارد؟
در این پست همه‌ی آنها را بررسی می‌کنیم:

1️⃣ ساده‌ترین روش (try/except)
try:
print(10 / 0)
except ZeroDivisionError:
print("خطا: تقسیم بر صفر!")


2️⃣ چندین خطا در یک بلاک
try:
# کد پرخطا
except (TypeError, ValueError) as e:
print(f"خطای نوع داده: {e}")


3️⃣ وقتی خطایی نباشد (else)
try:
result = 10 / 2
except:
print("خطا!")
else:
print(f"نتیجه: {result}") # 5.0


4️⃣ همیشه اجرا می‌شود (finally)
try:
file = open('data.txt')
except:
print("خطا در باز کردن فایل")
finally:
file.close() # مهم برای آزادسازی منابع


5️⃣ پرتاب خطای سفارشی (raise)
if age < 0:
raise ValueError("سن نمی‌تواند منفی باشد!")


6️⃣ ایجاد خطاهای سفارشی
class MyCustomError(Exception):
pass

raise MyCustomError("این یک خطای سفارشی است!")


7️⃣ مدیریت خطا با contextlib (حرفه‌ای)
from contextlib import suppress

with suppress(FileNotFoundError):
os.remove('temp.txt') # اگر فایل نبود، خطا نگیر!


💎 نکات طلایی:
- از try/except برای خطاهای قابل پیش‌بینی استفاده کنید
- دستور else برای کدهایی که فقط وقتی خطایی نباشد باید اجرا شوند
- دستور finally برای تمیزکاری منابع (مثل بستن فایل/اتصال دیتابیس)

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

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

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
چطوری مهندس👀؟؟
👨‍💻4
✔️ ماژول pathlib در پایتون برای مدیریت مسیرها و فایل‌ها کاربرد زیادی داره، ولی خیلی وقت‌ها کمتر ازش استفاده میشه.

در این مثال، از Path برای ساخت و مدیریت مسیر استفاده می‌کنیم. این ماژول خوانا بودن کد رو بالا می‌بره و کار با فایل‌ها رو ساده‌تر می‌کنه. مخصوصاً توی پروژه‌های بزرگ، می‌تونه کمک کنه که مسیرها به راحتی مدیریت بشن.

اینطور کدها معمولاً برای تازه‌کارها به اندازه کافی توجه‌برانگیز نیستند، ولی برای کاربران پیشرفته‌تر، خیلی مفید و کاربردی می‌تونن باشن!

#بدانیم
آیا تا حالا نیاز داشتید بفهمید که توی یک لیست یا متن چه چیزهایی بیشتر تکرار شدن؟ 🤔

✔️ با Counter می‌تونید به راحتی تکرار هر عنصر رو بشمارید و داده‌ها رو تحلیل کنید!

در اینجا، Counter به راحتی به ما نشون می‌ده که هر کدام از آیتم‌ها چقدر تکرار شده‌اند. این ویژگی خیلی کاربردیه وقتی بخواهیم داده‌های بزرگ رو تجزیه و تحلیل کنیم.

#بدانیم | #collections
👍5