الگوریتم Time-Interval Sorting در پایتون 🚀
این الگوریتم به شما کمک میکنه تا دادهها رو بر اساس بازههای زمانی مرتب کنید. 📅⏳ این برای زمانی که دارید با دادههای رویدادی (مثل رویدادهای تقویمی، لاگهای سرور و...) کار میکنید خیلی مفیده. 💡
مثال 📝
بیایید این کد رو خط به خط بررسی کنیم:
1. تعریف تابع: در ابتدا، ما یک تابع به نام
2. مرتبسازی: داخل تابع، ما از تابع
3. برگشت نتیجه: در نهایت، لیست مرتبشده را برمیگردانیم. 🏁
4. مثال کاربردی: حالا یک مثال از بازههای زمانی داریم و از تابع استفاده میکنیم تا آنها را مرتب کنیم. 📝
اجرای کد 💻
با اجرای این کد، خروجی به صورت زیر خواهد بود:
بیایید نگاه دقیقتری به عملکرد این الگوریتم بندازیم:
- Lambda Function: تابع
- Sorted Function: تابع
- Complexity: زمان اجرای این الگوریتم
کاربردهای عملی 🌟
این الگوریتم در بسیاری از موارد کاربرد دارد:
- مدیریت زمانبندی: مرتبسازی جلسات، وظایف، یا هر نوع رویداد دیگری که دارای زمان شروع و پایان هستند.
- تحلیل لاگها: مرتبسازی لاگهای سرور برای تحلیل بهتر.
- تجزیه و تحلیل دادهها: مرتبسازی دادههای زمانی برای تحلیل روندها و الگوها.
[اموزش های بیشتر کانال ما]
#Python #Programming #CodingTips #LearnPython
این الگوریتم به شما کمک میکنه تا دادهها رو بر اساس بازههای زمانی مرتب کنید. 📅⏳ این برای زمانی که دارید با دادههای رویدادی (مثل رویدادهای تقویمی، لاگهای سرور و...) کار میکنید خیلی مفیده. 💡
مثال 📝
def time_interval_sorting(intervals):
# مرتبسازی بر اساس زمان شروع
sorted_intervals = sorted(intervals, key=lambda x: x[0])
return sorted_intervals
# مثال
intervals = [(5, 10), (1, 3), (4, 8), (2, 6)]
sorted_intervals = time_interval_sorting(intervals)
print("بازههای زمانی مرتبشده:", sorted_intervals)
بیایید این کد رو خط به خط بررسی کنیم:
1. تعریف تابع: در ابتدا، ما یک تابع به نام
time_interval_sorting
تعریف میکنیم که یک لیست از بازههای زمانی را به عنوان ورودی میگیرد. هر بازه زمانی به صورت یک جفت عدد (زمان شروع و زمان پایان) تعریف میشود. 🛠️def time_interval_sorting(intervals):
2. مرتبسازی: داخل تابع، ما از تابع
sorted
برای مرتبسازی لیست بازههای زمانی استفاده میکنیم. کلید مرتبسازی بر اساس زمان شروع هر بازه تنظیم شده است. برای این کار، از یک تابع لامبدا استفاده میکنیم که عنصر اول (زمان شروع) هر بازه را برمیگرداند. 🔄sorted_intervals = sorted(intervals, key=lambda x: x[0])
3. برگشت نتیجه: در نهایت، لیست مرتبشده را برمیگردانیم. 🏁
return sorted_intervals
4. مثال کاربردی: حالا یک مثال از بازههای زمانی داریم و از تابع استفاده میکنیم تا آنها را مرتب کنیم. 📝
intervals = [(5, 10), (1, 3), (4, 8), (2, 6)]
sorted_intervals = time_interval_sorting(intervals)
print("بازههای زمانی مرتبشده:", sorted_intervals)
اجرای کد 💻
با اجرای این کد، خروجی به صورت زیر خواهد بود:
بازههای زمانی مرتبشده: [(1, 3), (2, 6), (4, 8), (5, 10)]
بیایید نگاه دقیقتری به عملکرد این الگوریتم بندازیم:
- Lambda Function: تابع
lambda x: x[0]
یک تابع ناشناس (بدون نام) است که به عنوان کلید مرتبسازی استفاده میشود. این تابع عنصر اول هر بازه (زمان شروع) را برمیگرداند تا بر اساس آن مرتبسازی انجام شود. 🗝️- Sorted Function: تابع
sorted
یک تابع داخلی پایتون است که یک لیست را گرفته و آن را مرتب میکند. میتوانید از پارامتر key
برای تعیین کلید مرتبسازی استفاده کنید. 🔧- Complexity: زمان اجرای این الگوریتم
O(n log n)
است که بهینهترین حالت برای مرتبسازی عمومی است. ⏱️کاربردهای عملی 🌟
این الگوریتم در بسیاری از موارد کاربرد دارد:
- مدیریت زمانبندی: مرتبسازی جلسات، وظایف، یا هر نوع رویداد دیگری که دارای زمان شروع و پایان هستند.
- تحلیل لاگها: مرتبسازی لاگهای سرور برای تحلیل بهتر.
- تجزیه و تحلیل دادهها: مرتبسازی دادههای زمانی برای تحلیل روندها و الگوها.
[اموزش های بیشتر کانال ما]
#Python #Programming #CodingTips #LearnPython
👍2❤1
ساخت یک مفسر ساده در پایتون 🚀
مرحله ۱: تعریف زبان برنامهنویسی 📜
ابتدا باید قواعد و دستورات زبان برنامهنویسی خودتون رو تعریف کنید. برای این آموزش، ما یک زبان ساده به نام "MiniLang" با دستورات پایهای تعریف میکنیم:
1. دستور
2. دستور
3. دستور
مرحله ۲: نوشتن Lexer 🔍
Lexer یا تجزیهکننده لغوی، متن برنامه را به توکنها (قطعات کوچکتر) تقسیم میکند.
مرحله ۳: نوشتن Parser 🔍
Parser یا تجزیهکننده نحوی، توکنها را به دستورات قابل اجرا تبدیل میکند.
مرحله ۴: اجرای دستورات 🏃♂️
Interpreter یا مفسر، دستورات را اجرا میکند.
مرحله ۵: استفاده از مفسر 📟
حالا کد کامل برای مفسر خودمون رو داریم. میتونیم یک برنامه MiniLang رو اجرا کنیم.
این کد مقدار ۱۵ را چاپ خواهد کرد چون ابتدا مقدار ۵ به متغیر
[آموزش ساخت مفسر]
#Python #Programming #CodingTips #LearnPython #Interpreter #MiniLang
مرحله ۱: تعریف زبان برنامهنویسی 📜
ابتدا باید قواعد و دستورات زبان برنامهنویسی خودتون رو تعریف کنید. برای این آموزش، ما یک زبان ساده به نام "MiniLang" با دستورات پایهای تعریف میکنیم:
1. دستور
PRINT
برای چاپ متن.2. دستور
SET
برای تعریف متغیرها.3. دستور
ADD
برای جمع کردن مقادیر.مرحله ۲: نوشتن Lexer 🔍
Lexer یا تجزیهکننده لغوی، متن برنامه را به توکنها (قطعات کوچکتر) تقسیم میکند.
import re
def lexer(code):
tokens = []
for line in code.splitlines():
line = line.strip()
if line:
if line.startswith("PRINT"):
tokens.append(("PRINT", line[6:]))
elif line.startswith("SET"):
match = re.match(r"SET (\w+) (.+)", line)
if match:
tokens.append(("SET", match.group(1), match.group(2)))
elif line.startswith("ADD"):
match = re.match(r"ADD (\w+) (\w+)", line)
if match:
tokens.append(("ADD", match.group(1), match.group(2)))
return tokens
مرحله ۳: نوشتن Parser 🔍
Parser یا تجزیهکننده نحوی، توکنها را به دستورات قابل اجرا تبدیل میکند.
def parser(tokens):
commands = []
for token in tokens:
if token[0] == "PRINT":
commands.append(("PRINT", token[1]))
elif token[0] == "SET":
commands.append(("SET", token[1], token[2]))
elif token[0] == "ADD":
commands.append(("ADD", token[1], token[2]))
return commands
مرحله ۴: اجرای دستورات 🏃♂️
Interpreter یا مفسر، دستورات را اجرا میکند.
def interpreter(commands):
variables = {}
for command in commands:
if command[0] == "PRINT":
print(command[1])
elif command[0] == "SET":
variables[command[1]] = eval(command[2], {}, variables)
elif command[0] == "ADD":
if command[1] in variables and command[2] in variables:
variables[command[1]] += variables[command[2]]
return variables
مرحله ۵: استفاده از مفسر 📟
حالا کد کامل برای مفسر خودمون رو داریم. میتونیم یک برنامه MiniLang رو اجرا کنیم.
code = """
SET x 5
SET y 10
ADD x y
PRINT x
"""
tokens = lexer(code)
commands = parser(tokens)
interpreter(commands)
این کد مقدار ۱۵ را چاپ خواهد کرد چون ابتدا مقدار ۵ به متغیر
x
و مقدار ۱۰ به متغیر y
اختصاص داده شده و سپس این دو مقدار با هم جمع شده و نتیجه چاپ میشود.[آموزش ساخت مفسر]
#Python #Programming #CodingTips #LearnPython #Interpreter #MiniLang
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍2
دانستی مخفی درباره پایتون 🐍
صبح بخیر دوستان! 🌞 آیا میدانستید که در پایتون، میتوانید از توابعی استفاده کنید که درون خودشان صدا زده میشوند، به این حالت توابع بازگشتی میگویند (Recursion)!؟ شاید این ویژگی برای بسیاری ناشناخته باشد، اما با استفاده از این روش، میتوانید مسائل پیچیده را به سادگی حل کنید.
یک مثال ساده از توابع بازگشتی، محاسبه فاکتوریل یک عدد است:
روز خوبی داشته باشید! ☀️
[اینم لینک کانال ما ]
#Python #Recursion #CodingTips #ProgrammingSecrets #صبح_بخیر #پایتون #نکته_پایتون
صبح بخیر دوستان! 🌞 آیا میدانستید که در پایتون، میتوانید از توابعی استفاده کنید که درون خودشان صدا زده میشوند، به این حالت توابع بازگشتی میگویند (Recursion)!؟ شاید این ویژگی برای بسیاری ناشناخته باشد، اما با استفاده از این روش، میتوانید مسائل پیچیده را به سادگی حل کنید.
یک مثال ساده از توابع بازگشتی، محاسبه فاکتوریل یک عدد است:
def factorial(n):در این مثال، تابع factorial خودش را برای مقدارهای کوچکتر از n صدا میزند تا به مقدار نهایی برسد. این نکته کوچک میتواند برای بسیاری از مسائل ریاضی و الگوریتمی، کد شما را بسیار کوتاهتر و کارآمدتر کند. 🌟
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # خروجی: 120
روز خوبی داشته باشید! ☀️
[اینم لینک کانال ما ]
#Python #Recursion #CodingTips #ProgrammingSecrets #صبح_بخیر #پایتون #نکته_پایتون
👍1
نکته مهم در پایتون: استفاده از Decorators
در پایتون، Decorators یا دکوراتورها یکی از ابزارهای قدرتمند و پرکاربرد هستند که به شما این امکان را میدهند تا عملکرد یک تابع یا متد را بدون تغییر در کد اصلی آن، تغییر دهید یا گسترش دهید. 🌟
دکوراتور چیست؟
دکوراتور یک تابع است که یک تابع دیگر را به عنوان ورودی میگیرد و یک تابع جدید را برمیگرداند که معمولاً عملکردی اضافی به تابع اصلی اضافه میکند. 🎩✨
مثال:
فرض کنید میخواهید زمان اجرای یک تابع را اندازهگیری کنید. با استفاده از دکوراتور، میتوانید این کار را به سادگی انجام دهید.
در این مثال:
1. دکوراتور
2. با استفاده از
3. هر بار که
کاربردهای دکوراتورها:
- ورود و خروج: برای ثبت ورود و خروج به توابع.
- کنترل دسترسی: برای مدیریت دسترسی به توابع.
- مدیریت منابع: برای مدیریت منابع مانند باز و بسته کردن فایلها.
- ارزیابی عملکرد: برای اندازهگیری عملکرد توابع.
به یاد داشته باشید: دکوراتورها میتوانند خوانایی و مدیریت کد را بهبود بخشند، به شرطی که به درستی و با دقت استفاده شوند. 🎯📈
🔻بیا اینجا تا بیشتر یاد بگیری
#Python #CodingTips #Decorators #Programming #PythonTips #PythonTricks #LearnPython
در پایتون، Decorators یا دکوراتورها یکی از ابزارهای قدرتمند و پرکاربرد هستند که به شما این امکان را میدهند تا عملکرد یک تابع یا متد را بدون تغییر در کد اصلی آن، تغییر دهید یا گسترش دهید. 🌟
دکوراتور چیست؟
دکوراتور یک تابع است که یک تابع دیگر را به عنوان ورودی میگیرد و یک تابع جدید را برمیگرداند که معمولاً عملکردی اضافی به تابع اصلی اضافه میکند. 🎩✨
مثال:
فرض کنید میخواهید زمان اجرای یک تابع را اندازهگیری کنید. با استفاده از دکوراتور، میتوانید این کار را به سادگی انجام دهید.
import time
def timing_decorator(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"Elapsed time: {end_time - start_time:.4f} seconds")
return result
return wrapper
@timing_decorator
def my_function():
for _ in range(1000000):
pass
my_function()
در این مثال:
1. دکوراتور
timing_decorator
تعریف شده است که زمان اجرای تابع را اندازهگیری میکند.2. با استفاده از
@timing_decorator
، تابع my_function
با دکوراتور زمانبندی تزئین شده است.3. هر بار که
my_function
اجرا میشود، زمان اجرای آن اندازهگیری و چاپ میشود. 🕒💡کاربردهای دکوراتورها:
- ورود و خروج: برای ثبت ورود و خروج به توابع.
- کنترل دسترسی: برای مدیریت دسترسی به توابع.
- مدیریت منابع: برای مدیریت منابع مانند باز و بسته کردن فایلها.
- ارزیابی عملکرد: برای اندازهگیری عملکرد توابع.
به یاد داشته باشید: دکوراتورها میتوانند خوانایی و مدیریت کد را بهبود بخشند، به شرطی که به درستی و با دقت استفاده شوند. 🎯📈
🔻بیا اینجا تا بیشتر یاد بگیری
#Python #CodingTips #Decorators #Programming #PythonTips #PythonTricks #LearnPython
👍3