🔆 استفاده از تابع
برای ترکیب دو لیست بهطوریکه هر عنصر از لیست اول با عنصر معادل خود در لیست دوم جفت شود، معمولاً از حلقهها استفاده میکنیم:
اما پایتون یک روش سادهتر و بهینهتر به نام تابع
در اینجا، تابع
این روش نه تنها کد را تمیز و مختصر میکند، بلکه باعث افزایش کارایی نیز میشود. همچنین، میتوانیم از تابع
این قابلیتهای جذاب
#zip | @learnpythonicy
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
سبک و سریع: پیادهسازی بهینهشده در خود پایتون
خطایابی آسان اگر گراف دور داشته باشد به خوبی تشخیص میده
انعطافپذیر: هم با دیکشنری و هم با گرافهای دیگر کار میکند
#graphlib | آموزش پایتون
مثال کاربردی
graphlib برای زمانبندی کارها:from graphlib import TopologicalSorter
# تعریف گراف کارها و وابستگیها
tasks = {
'پوشیدن کفش': {'پوشیدن جوراب'},
'پوشیدن جوراب': {'لباس پوشیدن'},
'لباس پوشیدن': {'دوش گرفتن'},
'دوش گرفتن': set(),
'خوردن صبحانه': {'مسواک زدن'},
'مسواک زدن': {'بیدار شدن'},
'بیدار شدن': set()
}
# ایجاد یک مرتبساز توپولوژیک
ts = TopologicalSorter(tasks)
# انجام مرتبسازی و چاپ ترتیب صحیح کارها
print("ترتیب بهینه انجام کارها:")
for task in ts.static_order():
print(f"→ {task}")
خروجی مثال:
ترتیب بهینه انجام کارها:
→ بیدار شدن
→ دوش گرفتن
→ لباس پوشیدن
→ پوشیدن جوراب
→ پوشیدن کفش
→ مسواک زدن
→ خوردن صبحانه
✔️ مزایای graphlib
سبک و سریع: پیادهسازی بهینهشده در خود پایتون
خطایابی آسان اگر گراف دور داشته باشد به خوبی تشخیص میده
انعطافپذیر: هم با دیکشنری و هم با گرافهای دیگر کار میکند
#graphlib | آموزش پایتون
🔆 تا حالا به این فکر کردی که بشه کد پایتون رو از داخل یه رشته اجرا کرد؟
با
دستور exec() میتونه هر رشتهای که شامل کد پایتونه رو در لحظه اجرا کنه.
⚠️ نکته مهم امنیتی
😱همین یک خط کد میتونه کل سیستم رو پاک کنه. نگید نگفتم!!
تجزیه و تحلیل کد
- خط دستوری
- دستور
- تابع
🔒 پس هیچوقت از exec برای اجرای ورودیهای غیرقابل اعتماد استفاده نکن.( نکن این کار بده! )
#security | #os | #exec | learnpythonicy
با
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️⃣ روش ساده با عملگر
2️⃣ روش ریاضی با pow()
3️⃣ روش حلقهای (بدون عملگر)
4️⃣ روش بازگشتی خلاقانه
5️⃣ روش نمایی با لگاریتم (برای اعداد اعشاری)
💎 روش ویژه: محاسبه توان با بیتها (روش برنامهنویسی سیستمی)
🎯 نکات طلایی:
- روش ** برای استفاده عمومی مناسب است
- دستور pow() برای محاسبات مدولار بهتر عمل میکند (pow(a,b,mod))
- روش بیتی سریعترین روش برای توانهای بزرگ است
✨ چالش: میتوانید تابعی بنویسید که همه این روشها را با هم مقایسه کند؟
#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 | آموزش پایتون
🔥 تشخیص زوج یا فرد یک عدد در یک خط کد!
این کد هوشمندانه با استفاده از باقیمانده تقسیم (
- اگر باقیمانده ۰ شود (عدد زوج)، ایندکس
- اگر باقیمانده ۱ شود (عدد فرد)، ایندکس
💡 کاربرد اصلی:
- جایگزین زیبا و فشرده برای
- مناسب برای کدهای کوتاه و خوانا
- کارآمد در پردازش لیستهای عددی و فیلتر کردن دادهها
#بدانیم | آموزش پایتون
(این الگو برای هر نوع تصمیمگیری دو حالته قابل استفاده است!)
این کد هوشمندانه با استفاده از باقیمانده تقسیم (
number % 2) و لیست ایندکسینگ، بدون نیاز به دستورات شرطی، تشخیص میدهد عدد زوج است یا فرد: - اگر باقیمانده ۰ شود (عدد زوج)، ایندکس
0 که متن 'Even' است انتخاب میشود.- اگر باقیمانده ۱ شود (عدد فرد)، ایندکس
1 که متن 'Odd' است انتخاب میشود.💡 کاربرد اصلی:
- جایگزین زیبا و فشرده برای
if/else در شرایط ساده - مناسب برای کدهای کوتاه و خوانا
- کارآمد در پردازش لیستهای عددی و فیلتر کردن دادهها
#بدانیم | آموزش پایتون
(این الگو برای هر نوع تصمیمگیری دو حالته قابل استفاده است!)
❤4👍1
🤖 لطفاً _ممنونم؛ کلماتی کوچک با هزینههای هنگفت!
طبق گزارشها، ادب کاربران در گفتگو با هوش مصنوعی، مثل گفتن «لطفاً» و «ممنونم»، سالانه دهها میلیون دلار به OpenAI تحمیل میکند! سم آلتمن تأیید کرده که این پیامهای مؤدبانه، پردازش بیشتری میطلبند و در مقیاس جهانی، رقم قابل توجهی از منابع را مصرف میکنند.
📌 آیا شما هم هنگام چت با رباتها مؤدب هستید؟ نظرتان را بنویسید! 👇
#news | @learnpythonicy
طبق گزارشها، ادب کاربران در گفتگو با هوش مصنوعی، مثل گفتن «لطفاً» و «ممنونم»، سالانه دهها میلیون دلار به OpenAI تحمیل میکند! سم آلتمن تأیید کرده که این پیامهای مؤدبانه، پردازش بیشتری میطلبند و در مقیاس جهانی، رقم قابل توجهی از منابع را مصرف میکنند.
📌 آیا شما هم هنگام چت با رباتها مؤدب هستید؟ نظرتان را بنویسید! 👇
#news | @learnpythonicy
❤4
"این کد نمونهای عملی از تبدیل مقادیر بولی به عدد است، که در محاسبات منطقی، کاهش پیچیدگی کد و کاربردهای مختلف در تحلیل دادهها بسیار مفید است. برنامهنویسی موثر با رویکردی ساده!" 🚀
#بدانیم | آمورش پایتون
#بدانیم | آمورش پایتون
❤4
🎨 تشخیص هوشمند رنگ با ترفند بولی!
✨ چرا این کد جذابه؟
- تبدیل شرایط عددی به انتخاب رنگ در یک خط!
- مکانیزم هوشمندانه:
-
-
- جمع این دو مقدار ایندکس لیست را مشخص میکند:
- 0 = قرمز (مقدار کمتر از 50)
- 1 = زرد (مقدار بین 50 تا 79)
- 2 = سبز (مقدار 80 به بالا)
💡 کاربردهای عملی:
- سیستمهای پایش وضعیت (مثل سلامت باتری، کیفیت هوا)
- نمایش سطح پیشرفت در برنامهها
- داشبوردهای آنالیتیک بدون کدنویسی پیچیده
🚀 توسعهی خلاقانه:
🔥 چالش برنامهنویسی:
- میتوانید این کد را برای ۵ سطح مختلف گسترش دهید؟
آموزش پایتون
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
🚦 تشخیص رابطه ارثبری کلاسها در پایتون
این کد با استفاده از تابع
- ابزار مفید برای بررسی سلسله مراتب کلاسها
- کاربرد اصلی در طراحی سیستمهای شیءگرا و اعتبارسنجی نوع داده
- خروجی بولی (True/False) براساس رابطه ارثبری
مثال:
- کلاس
- کلاس
#issubclass | @learnpythonicy
این کد با استفاده از تابع
issubclass() بررسی میکند که آیا یک کلاس، زیرمجموعه کلاس دیگر است یا نه. - ابزار مفید برای بررسی سلسله مراتب کلاسها
- کاربرد اصلی در طراحی سیستمهای شیءگرا و اعتبارسنجی نوع داده
- خروجی بولی (True/False) براساس رابطه ارثبری
مثال:
- کلاس
Car و Bike هر دو از Vehicle ارث میبرند 🔚 True - کلاس
Car از Bike ارث میبرد 🔚 False #issubclass | @learnpythonicy
❤3
🔥 مدیریت خطاها در پایتون: از ساده تا حرفهای!
آیا میدانستید پایتون ۷ روش مختلف برای مدیریت خطا دارد؟
در این پست همهی آنها را بررسی میکنیم:
1️⃣ سادهترین روش (try/except)
2️⃣ چندین خطا در یک بلاک
3️⃣ وقتی خطایی نباشد (else)
4️⃣ همیشه اجرا میشود (finally)
5️⃣ پرتاب خطای سفارشی (raise)
6️⃣ ایجاد خطاهای سفارشی
7️⃣ مدیریت خطا با contextlib (حرفهای)
💎 نکات طلایی:
- از
- دستور
- دستور
#بدانیم | #مدیریت_خطا | آموزش پایتون
آیا میدانستید پایتون ۷ روش مختلف برای مدیریت خطا دارد؟
در این پست همهی آنها را بررسی میکنیم:
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
2️⃣ روش شیءگرا با کلاس
3️⃣ روش فانکشنال با reduce
4️⃣ روش کتابخانهای با statistics
5️⃣ روش numpy (بهینه برای آرایههای بزرگ)
6️⃣ روش بازگشتی (حلقهای پنهان)
7️⃣ روش مولد (Generator)
🎯 نکات کلیدی:
- روش statistics برای دادههای آماری ایدهآل است
- روش numpy بهترین انتخاب برای آرایههای بزرگ عددی
- روش مولد برای محاسبه میانگین متحرک عالی است
چالش:
تابعی بنویسید که میانگین وزنی محاسبه کند...
#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
✔️ ماژول
در این مثال، از
اینطور کدها معمولاً برای تازهکارها به اندازه کافی توجهبرانگیز نیستند، ولی برای کاربران پیشرفتهتر، خیلی مفید و کاربردی میتونن باشن!
#بدانیم
pathlib در پایتون برای مدیریت مسیرها و فایلها کاربرد زیادی داره، ولی خیلی وقتها کمتر ازش استفاده میشه.در این مثال، از
Path برای ساخت و مدیریت مسیر استفاده میکنیم. این ماژول خوانا بودن کد رو بالا میبره و کار با فایلها رو سادهتر میکنه. مخصوصاً توی پروژههای بزرگ، میتونه کمک کنه که مسیرها به راحتی مدیریت بشن.اینطور کدها معمولاً برای تازهکارها به اندازه کافی توجهبرانگیز نیستند، ولی برای کاربران پیشرفتهتر، خیلی مفید و کاربردی میتونن باشن!
#بدانیم
آیا تا حالا نیاز داشتید بفهمید که توی یک لیست یا متن چه چیزهایی بیشتر تکرار شدن؟ 🤔
✔️ با
در اینجا،
#بدانیم | #collections
✔️ با
Counter میتونید به راحتی تکرار هر عنصر رو بشمارید و دادهها رو تحلیل کنید! در اینجا،
Counter به راحتی به ما نشون میده که هر کدام از آیتمها چقدر تکرار شدهاند. این ویژگی خیلی کاربردیه وقتی بخواهیم دادههای بزرگ رو تجزیه و تحلیل کنیم.#بدانیم | #collections
👍5
✔️ طراحی گل با ماژول Turtle در پایتون!
ویژگیهای کد:
- ایجاد یک طرح گل با ۳۶ دایره چرخان
- استفاده از ماژول turtle برای گرافیک برداری
- مناسب برای آشنایی با مفاهیم برنامهنویسی و هندسه
From: Nginoo
#بدانیم | #turtle | آموزش پایتون
ویژگیهای کد:
- ایجاد یک طرح گل با ۳۶ دایره چرخان
- استفاده از ماژول turtle برای گرافیک برداری
- مناسب برای آشنایی با مفاهیم برنامهنویسی و هندسه
From: Nginoo
#بدانیم | #turtle | آموزش پایتون
✔️ محاسبه هوشمندانه فاصله بین نقاط
با استفاده از توابع
#math | @learnpythonicy
با استفاده از توابع
math.dist و math.isclose. این روش برای تشخیص نقاط تقریبا یکسان در محاسبات علمی و پردازش دادههای مکانی عالی هست. با تنظیم tolerance میتونید دقت مقایسه رو کنترل کنید. #math | @learnpythonicy