درود دوستان! 👋
امروز میخوایم درباره دو تا از مهمترین الگوریتمهای برنامهنویسی صحبت کنیم: مرتبسازی سریع (Quick Sort) و الگوریتمهای جستوجو (Search Algorithms). بریم که با این الگوریتمها بیشتر آشنا بشیم! 🚀
📌 الگوریتم مرتبسازی سریع (Quick Sort)
الگوریتم Quick Sort یکی از کارآمدترین الگوریتمهای مرتبسازی هست که از روش تقسیم و حل (Divide and Conquer) استفاده میکنه. این الگوریتم به صورت زیر کار میکنه:
1. انتخاب محور (Pivot): یک عنصر رو به عنوان محور انتخاب میکنیم.
2. تقسیمبندی: آرایه رو به دو بخش تقسیم میکنیم، طوری که عناصر کمتر از محور در یک بخش و عناصر بزرگتر در بخش دیگر قرار بگیرن.
3. بازگشت (Recursion): برای هر دو بخش به صورت بازگشتی همین کار رو انجام میدیم تا آرایه کاملاً مرتب بشه.
مزیت Quick Sort سرعت بالا و کارایی خوبش در اکثر موارده، هر چند که در بدترین حالت میتونه O(n^2) باشه. ولی با انتخاب مناسب محور، معمولاً کارایی اون به O(n log n) میرسه.
نمونه کد Quick Sort :
📌 الگوریتمهای جستوجو (Search Algorithms)
الگوریتمهای جستوجو برای پیدا کردن یک عنصر خاص در یک مجموعه داده استفاده میشن. دو تا از پرکاربردترین این الگوریتمها عبارتند از:
1. جستوجوی خطی (Linear Search):
- سادهترین روش جستوجو هست.
- به ترتیب هر عنصر مجموعه رو بررسی میکنه تا عنصر مورد نظر رو پیدا کنه.
- زمان اجرای این الگوریتم O(n) هست.
نمونه کد جستوجوی خطی :
2. جستوجوی دودویی (Binary Search):
- این الگوریتم برای آرایههای مرتبشده مناسبه.
- به این صورت کار میکنه که عنصر وسط رو بررسی میکنه. اگر عنصر مورد نظر بزرگتر یا کوچکتر از عنصر وسط باشه، جستوجو رو در نیمه مناسب ادامه میده.
- زمان اجرای این الگوریتم O(log n) هست که خیلی سریعتر از جستوجوی خطیه.
نمونه کد جستوجوی دودویی :
استفاده از این الگوریتمها به شما کمک میکنه تا برنامههاتون بهینهتر و سریعتر عمل کنن.
📢 به دوستانتون هم بگین بیاین اینجا تا با هم بیشتر یاد بگیریم! 🌟
[اینم کانال منه]
#برنامه_نویسی #آموزش #الگوریتم #مرتب_سازی #جستجو #یادگیری #QuickSort #SearchAlgorithms
امروز میخوایم درباره دو تا از مهمترین الگوریتمهای برنامهنویسی صحبت کنیم: مرتبسازی سریع (Quick Sort) و الگوریتمهای جستوجو (Search Algorithms). بریم که با این الگوریتمها بیشتر آشنا بشیم! 🚀
📌 الگوریتم مرتبسازی سریع (Quick Sort)
الگوریتم Quick Sort یکی از کارآمدترین الگوریتمهای مرتبسازی هست که از روش تقسیم و حل (Divide and Conquer) استفاده میکنه. این الگوریتم به صورت زیر کار میکنه:
1. انتخاب محور (Pivot): یک عنصر رو به عنوان محور انتخاب میکنیم.
2. تقسیمبندی: آرایه رو به دو بخش تقسیم میکنیم، طوری که عناصر کمتر از محور در یک بخش و عناصر بزرگتر در بخش دیگر قرار بگیرن.
3. بازگشت (Recursion): برای هر دو بخش به صورت بازگشتی همین کار رو انجام میدیم تا آرایه کاملاً مرتب بشه.
مزیت Quick Sort سرعت بالا و کارایی خوبش در اکثر موارده، هر چند که در بدترین حالت میتونه O(n^2) باشه. ولی با انتخاب مناسب محور، معمولاً کارایی اون به O(n log n) میرسه.
نمونه کد Quick Sort :
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
# استفاده
arr = [3, 6, 8, 10, 1, 2, 1]
print("Sorted array:", quick_sort(arr))
📌 الگوریتمهای جستوجو (Search Algorithms)
الگوریتمهای جستوجو برای پیدا کردن یک عنصر خاص در یک مجموعه داده استفاده میشن. دو تا از پرکاربردترین این الگوریتمها عبارتند از:
1. جستوجوی خطی (Linear Search):
- سادهترین روش جستوجو هست.
- به ترتیب هر عنصر مجموعه رو بررسی میکنه تا عنصر مورد نظر رو پیدا کنه.
- زمان اجرای این الگوریتم O(n) هست.
نمونه کد جستوجوی خطی :
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
# استفاده
arr = [3, 6, 8, 10, 1, 2, 1]
target = 10
print("Element found at index:", linear_search(arr, target))
2. جستوجوی دودویی (Binary Search):
- این الگوریتم برای آرایههای مرتبشده مناسبه.
- به این صورت کار میکنه که عنصر وسط رو بررسی میکنه. اگر عنصر مورد نظر بزرگتر یا کوچکتر از عنصر وسط باشه، جستوجو رو در نیمه مناسب ادامه میده.
- زمان اجرای این الگوریتم O(log n) هست که خیلی سریعتر از جستوجوی خطیه.
نمونه کد جستوجوی دودویی :
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# استفاده
arr = sorted([3, 6, 8, 10, 1, 2, 1])
target = 10
print("Element found at index:", binary_search(arr, target))
استفاده از این الگوریتمها به شما کمک میکنه تا برنامههاتون بهینهتر و سریعتر عمل کنن.
📢 به دوستانتون هم بگین بیاین اینجا تا با هم بیشتر یاد بگیریم! 🌟
[اینم کانال منه]
#برنامه_نویسی #آموزش #الگوریتم #مرتب_سازی #جستجو #یادگیری #QuickSort #SearchAlgorithms
❤1👍1
درود دوستان! 👋
امروز میخوایم درباره یکی از مهمترین الگوریتمهای جستوجو صحبت کنیم: الگوریتم جستوجوی دودویی (Binary Search). این الگوریتم برای پیدا کردن سریع یک عنصر در یک آرایه مرتبشده استفاده میشه. بریم که با این الگوریتم بیشتر آشنا بشیم! 🚀
📌 الگوریتم جستوجوی دودویی (Binary Search)
الگوریتم جستوجوی دودویی یکی از سریعترین الگوریتمهای جستوجو هست که زمان اجرای اون O(log n) هست. این الگوریتم به صورت زیر کار میکنه:
1. بررسی عنصر وسط: ابتدا عنصر وسط آرایه رو پیدا میکنیم.
2. مقایسه: اگر عنصر وسط برابر با عنصر مورد نظر باشه، جستوجو تموم میشه.
3. تقسیمبندی: اگر عنصر مورد نظر کوچکتر از عنصر وسط باشه، جستوجو رو در نیمه چپ آرایه ادامه میدیم؛ اگر بزرگتر باشه، در نیمه راست آرایه ادامه میدیم.
4. تکرار: این مراحل رو تا زمانی که عنصر مورد نظر پیدا بشه یا محدوده جستوجو به صفر برسه، تکرار میکنیم.
نمونه کد جستوجوی دودویی به زبان پایتون:
در این مثال، ابتدا آرایه رو مرتب میکنیم و سپس از الگوریتم جستوجوی دودویی برای پیدا کردن عنصر مورد نظر استفاده میکنیم. اگر عنصر پیدا بشه، اندکس اون برگردونده میشه؛ در غیر این صورت، -1 برگردونده میشه.
استفاده از جستوجوی دودویی باعث میشه تا در آرایههای بزرگتر، زمان جستوجو به طور قابل توجهی کاهش پیدا کنه.
📢 به دوستانتون هم بگین بیاین اینجا تا با هم بیشتر یاد بگیریم! 🌟
[اینم کانال ماست]
#برنامه_نویسی #آموزش #الگوریتم #جستجو #یادگیری #BinarySearch #الگوریتم_دودویی
امروز میخوایم درباره یکی از مهمترین الگوریتمهای جستوجو صحبت کنیم: الگوریتم جستوجوی دودویی (Binary Search). این الگوریتم برای پیدا کردن سریع یک عنصر در یک آرایه مرتبشده استفاده میشه. بریم که با این الگوریتم بیشتر آشنا بشیم! 🚀
📌 الگوریتم جستوجوی دودویی (Binary Search)
الگوریتم جستوجوی دودویی یکی از سریعترین الگوریتمهای جستوجو هست که زمان اجرای اون O(log n) هست. این الگوریتم به صورت زیر کار میکنه:
1. بررسی عنصر وسط: ابتدا عنصر وسط آرایه رو پیدا میکنیم.
2. مقایسه: اگر عنصر وسط برابر با عنصر مورد نظر باشه، جستوجو تموم میشه.
3. تقسیمبندی: اگر عنصر مورد نظر کوچکتر از عنصر وسط باشه، جستوجو رو در نیمه چپ آرایه ادامه میدیم؛ اگر بزرگتر باشه، در نیمه راست آرایه ادامه میدیم.
4. تکرار: این مراحل رو تا زمانی که عنصر مورد نظر پیدا بشه یا محدوده جستوجو به صفر برسه، تکرار میکنیم.
نمونه کد جستوجوی دودویی به زبان پایتون:
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# استفاده
arr = sorted([3, 6, 8, 10, 1, 2, 1]) # آرایه مرتبشده
target = 10
print("Element found at index:", binary_search(arr, target))
در این مثال، ابتدا آرایه رو مرتب میکنیم و سپس از الگوریتم جستوجوی دودویی برای پیدا کردن عنصر مورد نظر استفاده میکنیم. اگر عنصر پیدا بشه، اندکس اون برگردونده میشه؛ در غیر این صورت، -1 برگردونده میشه.
استفاده از جستوجوی دودویی باعث میشه تا در آرایههای بزرگتر، زمان جستوجو به طور قابل توجهی کاهش پیدا کنه.
📢 به دوستانتون هم بگین بیاین اینجا تا با هم بیشتر یاد بگیریم! 🌟
[اینم کانال ماست]
#برنامه_نویسی #آموزش #الگوریتم #جستجو #یادگیری #BinarySearch #الگوریتم_دودویی
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
❗️🆕️یه کد کار بردی جدید
👇این یکی آپدیت اون کدی هست که CPU رو اسکن میکرد این یکی یه جدول درست میکنه و اطلاعات سخت افزاری دستگاه نشون میده 👇
🟥البته که این کد روی همه سیستم عامل ها و سخت افزار ها کار میکنه ❗️
[اینم کانال منه]
❗️ری اکشن یادتون نره😉
#cpu #پایتون #کاربردی
👇این یکی آپدیت اون کدی هست که CPU رو اسکن میکرد این یکی یه جدول درست میکنه و اطلاعات سخت افزاری دستگاه نشون میده 👇
🟥البته که این کد روی همه سیستم عامل ها و سخت افزار ها کار میکنه ❗️
import psutil
import GPUtil
def get_cpu_specs():
cpu_freq = psutil.cpu_freq().current
return f"{cpu_freq / 1000:.2f} GHz"
def get_ram_specs():
ram = psutil.virtual_memory().total
return f"{ram / (1024**3):.2f} GB"
def get_gpu_specs():
gpus = GPUtil.getGPUs()
if gpus:
gpu = gpus[0]
return f"{gpu.name}, {gpu.memoryTotal} MB"
else:
return "No GPU found"
def get_ssd_specs():
disk_info = psutil.disk_usage('/')
return f"{disk_info.total / (1024**3):.2f} GB"
def draw_specs_table():
components = {
'CPU': get_cpu_specs(),
'RAM': get_ram_specs(),
'GPU': get_gpu_specs(),
'SSD': get_ssd_specs()
}
header = "| Component | Specs |"
separator = "+" + "-" * (len(header) - 2) + "+"
print(separator)
print(header)
print(separator)
for component, specs in components.items():
line = f"| {component.ljust(9)} | {specs.ljust(13)} |"
print(line)
print(separator)
draw_specs_table()
[اینم کانال منه]
❗️ری اکشن یادتون نره😉
#cpu #پایتون #کاربردی
👍3🐳1
📰 #اخبار_امروز_پایتون 🐍 | ۹ ژوئن ۲۰۲۴
سلام به همه دوستان عزیز برنامهنویس! 🌟
امروز با شش خبر مهم از دنیای پایتون در خدمت شما هستیم:
1️⃣ پایتون 3.12.0 منتشر شد! 🎉
نسخه جدید پایتون با ویژگیهای جدید و بهبود عملکرد منتشر شده است. این نسخه شامل بهبودهای بسیاری در زمینه سرعت و بهینهسازی حافظه است. حتماً آن را امتحان کنید! 💻
2️⃣ کتابخانه Pandas بهروز شد! 📊
نسخه جدید کتابخانه Pandas با قابلیتهای جدید برای تجزیه و تحلیل دادهها ارائه شده است. این بهروزرسانی شامل بهبودهای زیادی در پردازش دادهها و عملکرد بهتر است. 📈
3️⃣ کنفرانس PyCon 2024 🌐
برنامه کنفرانس PyCon 2024 اعلام شد. این کنفرانس در ماه سپتامبر برگزار میشود و شامل سخنرانیها و ورکشاپهای متنوعی است. برای ثبتنام زودتر اقدام کنید! 🗓️
4️⃣ چالش کدنویسی پایتون 🚀
یک چالش جدید برای برنامهنویسان پایتون آغاز شده است. این چالش فرصت خوبی برای تست مهارتهای کدنویسی و یادگیری تکنیکهای جدید است. در این چالش شرکت کنید و برنده جوایز ارزنده شوید! 🏆
5️⃣ انتشار Django 4.2 🌟
نسخه جدید فریمورک وب محبوب Django منتشر شده است. این نسخه با قابلیتهای جدید و بهبودهای امنیتی همراه است. اگر توسعهدهنده وب هستید، این بهروزرسانی را از دست ندهید! 🌐
6️⃣ کتابخانه TensorFlow 2.10.0 🤖
کتابخانه TensorFlow نیز نسخه جدیدی را ارائه کرده است که شامل ابزارهای بهبود یافته برای یادگیری ماشین و هوش مصنوعی است. این نسخه به توسعهدهندگان کمک میکند تا مدلهای پیچیدهتری بسازند. 📊
با ما همراه باشید تا همیشه از آخرین اخبار و بهروزرسانیهای دنیای پایتون مطلع شوید! 🌐
[اخبار روز پایتون رو تو این کانال ببینید]
#پایتون #برنامهنویسی #تکنولوژی #اخبار #کنفرانس #کدنویسی #چالش #جنگو #یادگیری_ماشین #هوش_مصنوعی
سلام به همه دوستان عزیز برنامهنویس! 🌟
امروز با شش خبر مهم از دنیای پایتون در خدمت شما هستیم:
1️⃣ پایتون 3.12.0 منتشر شد! 🎉
نسخه جدید پایتون با ویژگیهای جدید و بهبود عملکرد منتشر شده است. این نسخه شامل بهبودهای بسیاری در زمینه سرعت و بهینهسازی حافظه است. حتماً آن را امتحان کنید! 💻
2️⃣ کتابخانه Pandas بهروز شد! 📊
نسخه جدید کتابخانه Pandas با قابلیتهای جدید برای تجزیه و تحلیل دادهها ارائه شده است. این بهروزرسانی شامل بهبودهای زیادی در پردازش دادهها و عملکرد بهتر است. 📈
3️⃣ کنفرانس PyCon 2024 🌐
برنامه کنفرانس PyCon 2024 اعلام شد. این کنفرانس در ماه سپتامبر برگزار میشود و شامل سخنرانیها و ورکشاپهای متنوعی است. برای ثبتنام زودتر اقدام کنید! 🗓️
4️⃣ چالش کدنویسی پایتون 🚀
یک چالش جدید برای برنامهنویسان پایتون آغاز شده است. این چالش فرصت خوبی برای تست مهارتهای کدنویسی و یادگیری تکنیکهای جدید است. در این چالش شرکت کنید و برنده جوایز ارزنده شوید! 🏆
5️⃣ انتشار Django 4.2 🌟
نسخه جدید فریمورک وب محبوب Django منتشر شده است. این نسخه با قابلیتهای جدید و بهبودهای امنیتی همراه است. اگر توسعهدهنده وب هستید، این بهروزرسانی را از دست ندهید! 🌐
6️⃣ کتابخانه TensorFlow 2.10.0 🤖
کتابخانه TensorFlow نیز نسخه جدیدی را ارائه کرده است که شامل ابزارهای بهبود یافته برای یادگیری ماشین و هوش مصنوعی است. این نسخه به توسعهدهندگان کمک میکند تا مدلهای پیچیدهتری بسازند. 📊
با ما همراه باشید تا همیشه از آخرین اخبار و بهروزرسانیهای دنیای پایتون مطلع شوید! 🌐
[اخبار روز پایتون رو تو این کانال ببینید]
#پایتون #برنامهنویسی #تکنولوژی #اخبار #کنفرانس #کدنویسی #چالش #جنگو #یادگیری_ماشین #هوش_مصنوعی
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
❤1👍1
Python3
درود دوستان! 👋 امروز میخوایم درباره دو تا از مهمترین الگوریتمهای برنامهنویسی صحبت کنیم: مرتبسازی سریع (Quick Sort) و الگوریتمهای جستوجو (Search Algorithms). بریم که با این الگوریتمها بیشتر آشنا بشیم! 🚀 📌 الگوریتم مرتبسازی سریع (Quick Sort) الگوریتم…
الگوریتم مرتب سازی سریع(Quick sort)
👍2
📊 آموزش رگرسیون خطی با Python 📊
تعریف رگرسیون خطی
رگرسیون خطی یکی از روشهای پایهای و پرکاربرد در یادگیری ماشین است که برای مدلسازی رابطه بین یک متغیر مستقل (ورودی) و یک متغیر وابسته (خروجی) استفاده میشود. هدف اصلی رگرسیون خطی پیدا کردن بهترین خطی است که دادهها را به خوبی توضیح دهد.
مراحل پیادهسازی
1. وارد کردن کتابخانهها 📚
2. آمادهسازی دادهها 📋
3. ایجاد و آموزش مدل 🏋️♂️
4. پیشبینی و ارزیابی مدل 🧮
5. نمایش گرافیکی نتایج 📈
کد پایتون 🐍
توضیحات کد
- وارد کردن کتابخانهها: کتابخانههای
- آمادهسازی دادهها: دادههای نمونه شامل ساعتهای مطالعه و نمرات در یک DataFrame ذخیره میشوند.
- تقسیم دادهها: دادهها به دو دسته آموزش (80%) و آزمون (20%) تقسیم میشوند.
- ایجاد مدل: مدل رگرسیون خطی ایجاد و با دادههای آموزشی آموزش داده میشود.
- پیشبینی و ارزیابی: مدل با دادههای آزمون پیشبینی انجام میدهد و با استفاده از معیارهای
- نمایش گرافیکی: نتایج پیشبینی و دادههای واقعی به صورت گرافیکی نمایش داده میشوند.
[اینم لینک کانال ما]
#یادگیری_ماشین #رگرسیون_خطی #آموزش_پایتون #تحلیل_داده #هوش_مصنوعی
تعریف رگرسیون خطی
رگرسیون خطی یکی از روشهای پایهای و پرکاربرد در یادگیری ماشین است که برای مدلسازی رابطه بین یک متغیر مستقل (ورودی) و یک متغیر وابسته (خروجی) استفاده میشود. هدف اصلی رگرسیون خطی پیدا کردن بهترین خطی است که دادهها را به خوبی توضیح دهد.
مراحل پیادهسازی
1. وارد کردن کتابخانهها 📚
2. آمادهسازی دادهها 📋
3. ایجاد و آموزش مدل 🏋️♂️
4. پیشبینی و ارزیابی مدل 🧮
5. نمایش گرافیکی نتایج 📈
کد پایتون 🐍
# وارد کردن کتابخانههای مورد نیاز
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# آمادهسازی دادهها
data = {
'ساعت_مطالعه': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'نمره': [2, 3, 6, 8, 11, 12, 15, 16, 18, 20]
}
df = pd.DataFrame(data)
# تقسیم دادهها به دو دسته آموزش و آزمون
X = df[['ساعت_مطالعه']]
y = df['نمره']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# ایجاد مدل رگرسیون خطی
model = LinearRegression()
model.fit(X_train, y_train)
# پیشبینی و ارزیابی مدل
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# نمایش نتایج
print(f"Mean Squared Error: {mse}")
print(f"R2 Score: {r2}")
# نمایش گرافیکی نتایج
plt.scatter(X_test, y_test, color='blue', label='Actual')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicted')
plt.xlabel('ساعت مطالعه')
plt.ylabel('نمره')
plt.legend()
plt.show()
توضیحات کد
- وارد کردن کتابخانهها: کتابخانههای
numpy
، pandas
، matplotlib
و scikit-learn
برای پردازش دادهها و ایجاد مدل رگرسیون خطی وارد میشوند.- آمادهسازی دادهها: دادههای نمونه شامل ساعتهای مطالعه و نمرات در یک DataFrame ذخیره میشوند.
- تقسیم دادهها: دادهها به دو دسته آموزش (80%) و آزمون (20%) تقسیم میشوند.
- ایجاد مدل: مدل رگرسیون خطی ایجاد و با دادههای آموزشی آموزش داده میشود.
- پیشبینی و ارزیابی: مدل با دادههای آزمون پیشبینی انجام میدهد و با استفاده از معیارهای
Mean Squared Error
و R2 Score
ارزیابی میشود.- نمایش گرافیکی: نتایج پیشبینی و دادههای واقعی به صورت گرافیکی نمایش داده میشوند.
[اینم لینک کانال ما]
#یادگیری_ماشین #رگرسیون_خطی #آموزش_پایتون #تحلیل_داده #هوش_مصنوعی
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
❤2
📊 آموزش ساخت ماشین حساب گرافیکی با Python 📊
در این آموزش، قصد داریم یک ماشین حساب گرافیکی ساده با استفاده از کتابخانه
مراحل پیادهسازی
1. وارد کردن کتابخانهها 📚
2. ایجاد و پیکربندی پنجره اصلی 🏠
3. تعریف و تنظیم نمایشگر و دکمهها 🖲️
4. تعریف توابع عملیات و جلوگیری از ارور 🚫
5. راهاندازی برنامه 🚀
کد پایتون 🐍
توضیحات کد
- وارد کردن کتابخانهها: از کتابخانه
- ایجاد و پیکربندی پنجره اصلی: پنجره اصلی با عنوان "ماشین حساب" و اندازه 600x400 پیکربندی میشود.
- تعریف نمایشگر: نمایشگر با استفاده از ویجت
- تعریف توابع عملیات: توابعی برای مدیریت کلیک دکمهها، پاک کردن نمایشگر و محاسبه نتیجه تعریف میشوند. تابع
- تعریف دکمهها: دکمههای ماشین حساب به صورت یک لیست تعریف شده و در پنجره اصلی قرار میگیرند. هر دکمه با توجه به عملکرد خود (کلیک، پاک کردن، برابر) به توابع مربوطه متصل میشود.
- راهاندازی برنامه: برنامه با فراخوانی
[اینم کانال ماست]
#یادگیری_پایتون #ماشین_حساب_گرافیکی #آموزش_برنامه_نویسی #tkinter
در این آموزش، قصد داریم یک ماشین حساب گرافیکی ساده با استفاده از کتابخانه
tkinter
در پایتون بسازیم که قابلیت انجام عملیات ساده ریاضی را دارد و از وقوع ارور جلوگیری میکند.مراحل پیادهسازی
1. وارد کردن کتابخانهها 📚
2. ایجاد و پیکربندی پنجره اصلی 🏠
3. تعریف و تنظیم نمایشگر و دکمهها 🖲️
4. تعریف توابع عملیات و جلوگیری از ارور 🚫
5. راهاندازی برنامه 🚀
کد پایتون 🐍
# وارد کردن کتابخانههای مورد نیاز
from tkinter import *
# ایجاد و پیکربندی پنجره اصلی
root = Tk()
root.title("ماشین حساب")
root.geometry("400x600")
# تعریف نمایشگر
display = Entry(root, font=('Arial', 24), borderwidth=2, relief="solid", justify='right')
display.grid(row=0, column=0, columnspan=4, pady=20)
# تعریف توابع عملیات
def button_click(value):
current_text = display.get()
display.delete(0, END)
display.insert(0, current_text + value)
def button_clear():
display.delete(0, END)
def button_equal():
try:
result = eval(display.get())
display.delete(0, END)
display.insert(0, str(result))
except:
display.delete(0, END)
display.insert(0, "خطا")
# تعریف دکمهها
buttons = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+'
]
row_val = 1
col_val = 0
for button in buttons:
if button == '=':
btn = Button(root, text=button, font=('Arial', 18), command=button_equal)
elif button == 'C':
btn = Button(root, text=button, font=('Arial', 18), command=button_clear)
else:
btn = Button(root, text=button, font=('Arial', 18), command=lambda b=button: button_click(b))
btn.grid(row=row_val, column=col_val, ipadx=10, ipady=10, padx=5, pady=5, sticky="nsew")
col_val += 1
if col_val > 3:
col_val = 0
row_val += 1
# دکمه پاک کردن
btn_clear = Button(root, text='C', font=('Arial', 18), command=button_clear)
btn_clear.grid(row=row_val, column=col_val, ipadx=10, ipady=10, padx=5, pady=5, sticky="nsew")
# راهاندازی برنامه
root.mainloop()
توضیحات کد
- وارد کردن کتابخانهها: از کتابخانه
tkinter
برای ایجاد رابط گرافیکی استفاده میشود.- ایجاد و پیکربندی پنجره اصلی: پنجره اصلی با عنوان "ماشین حساب" و اندازه 600x400 پیکربندی میشود.
- تعریف نمایشگر: نمایشگر با استفاده از ویجت
Entry
ایجاد شده و تنظیمات آن انجام میشود.- تعریف توابع عملیات: توابعی برای مدیریت کلیک دکمهها، پاک کردن نمایشگر و محاسبه نتیجه تعریف میشوند. تابع
eval
برای ارزیابی عبارات ریاضی استفاده شده و از وقوع ارور جلوگیری میشود.- تعریف دکمهها: دکمههای ماشین حساب به صورت یک لیست تعریف شده و در پنجره اصلی قرار میگیرند. هر دکمه با توجه به عملکرد خود (کلیک، پاک کردن، برابر) به توابع مربوطه متصل میشود.
- راهاندازی برنامه: برنامه با فراخوانی
root.mainloop()
راهاندازی میشود.[اینم کانال ماست]
#یادگیری_پایتون #ماشین_حساب_گرافیکی #آموزش_برنامه_نویسی #tkinter
👍2
🌟 بهینهسازی کد با استفاده از memoization 🌟
🔍 توضیحات:
روش memoization یک تکنیک بهینهسازی است که با ذخیرهسازی نتایج محاسبات تکراری، باعث افزایش سرعت اجرای برنامه میشود. این روش به خصوص در مواردی که محاسبات سنگین و تکراری داریم، بسیار مفید است. در اینجا یک کد نمونه به زبان پایتون آورده شده که از این تکنیک استفاده میکند:
🔧 توضیح کد:
1. 🌐 تابع memoize: این تابع یک دیکشنری به نام
2. 💡 تابع helper: این تابع چک میکند که آیا نتیجه محاسبه قبلاً در
3. 🚀 استفاده از memoization: با استفاده از دکوراتور
🔗 [اینم کانال ماست]
#بهینه_سازی #پایتون #Memoization #برنامه_نویسی #توسعه_دهنده
🔍 توضیحات:
روش memoization یک تکنیک بهینهسازی است که با ذخیرهسازی نتایج محاسبات تکراری، باعث افزایش سرعت اجرای برنامه میشود. این روش به خصوص در مواردی که محاسبات سنگین و تکراری داریم، بسیار مفید است. در اینجا یک کد نمونه به زبان پایتون آورده شده که از این تکنیک استفاده میکند:
def memoize(f):
memo = {}
def helper(x):
if x not in memo:
memo[x] = f(x)
return memo[x]
return helper
@memoize
def some_expensive_computation(x):
# اینجا محاسبات پرهزینهای که نیاز به بهینهسازی دارد قرار میگیرد
pass
🔧 توضیح کد:
1. 🌐 تابع memoize: این تابع یک دیکشنری به نام
memo
ایجاد میکند که نتایج محاسبات را ذخیره میکند.2. 💡 تابع helper: این تابع چک میکند که آیا نتیجه محاسبه قبلاً در
memo
ذخیره شده است یا نه. اگر ذخیره نشده باشد، محاسبه انجام شده و نتیجه آن ذخیره میشود.3. 🚀 استفاده از memoization: با استفاده از دکوراتور
@memoize
، تابع some_expensive_computation
بهینهسازی میشود و نتایج محاسبات تکراری ذخیره و بازیابی میشوند.🔗 [اینم کانال ماست]
#بهینه_سازی #پایتون #Memoization #برنامه_نویسی #توسعه_دهنده
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍4
🌟🔍 #اخبار_پایتون امروز – ۷ خبر مهم برای جامعه پایتون 🔍🌟
1. رشد ابزار جدید بستهبندی به نام UV:
شرکت Astral، ابزار جدیدی به نام UV را معرفی کرده است که به عنوان جایگزینی سریعتر و کارآمدتر برای pip و سایر مدیریتکنندههای وابستگی عمل میکند. UV به زبان Rust نوشته شده و سرعت بالایی دارد. 🚀📦
2. پیشرفتهای امنیتی در پایتون:
Seth Larson، توسعهدهندهی امنیتی جدیدی که توسط بنیاد نرمافزار پایتون (PSF) استخدام شده است، در حال کار بر روی بهبودهای امنیتی در اکوسیستم پایتون است. این بهبودها شامل تقویت پروتکلهای امنیتی و رفع اشکالات موجود میباشد. 🔒🐍
3. NumPy 2.0 به زودی منتشر میشود:
NumPy 2.0 که یک بروزرسانی بزرگ و مهم برای کتابخانه محبوب محاسبات عددی است، در 16 ژوئن 2024 منتشر خواهد شد. این نسخه شامل بهبودهای کارایی و ویژگیهای جدید است. 🔢✨
4. ویژگیهای جدید در پایتون 3.13:
نسخه بتا پایتون 3.13 منتشر شده و ویژگیهای جدیدی مانند Interpreter جدید با ویرایش چند خطی و پشتیبانی از رنگ، و یک حالت experimental بدون GIL (Global Interpreter Lock) ارائه شده است. توسعهدهندگان تشویق میشوند که این نسخه را تست کنند و بازخوردهای خود را ارائه دهند. 💻🐍
5. افزونه جدید Pytest برای غیرفعال کردن تستها:
یک افزونه جدید برای Pytest معرفی شده است که به کاربران اجازه میدهد تستها را در فایلهای خاص غیرفعال کنند. این افزونه میتواند برای بهینهسازی و مدیریت بهتر تستها مفید باشد. 🧪⚙️
6. ملاقاتهای پایتون در سراسر جهان:
جامعه پایتون در هفتههای آینده میزبان چندین رویداد مهم است، از جمله DjangoCon Europe 2024، PyCon Colombia 2024، و Canberra Python Meetup. این رویدادها فرصتی عالی برای شبکهسازی و یادگیری هستند. 🌐🎉
7. آموزشهای جدید در Real Python:
وبسایت Real Python آموزشهای جدیدی درباره طراحی اصول شیءگرایی در پایتون و استفاده از اینترفیسها منتشر کرده است. این آموزشها به توسعهدهندگان کمک میکند تا کدهای تمیزتر و قابل نگهداریتری بنویسند. 📚💡
🔗 برای اطلاعات بیشتر و جزئیات کامل به منابع زیر مراجعه کنید:
- [Python Insider]
- [Real Python]
- [Planet Python]
🌹کانال مونو هم یه نگاه بندازین🌹
[این لینکشه]
#پایتون #اخبار_فناوری #برنامهنویسی #امنیت #پیشرفت #ابزارهای_توسعه
1. رشد ابزار جدید بستهبندی به نام UV:
شرکت Astral، ابزار جدیدی به نام UV را معرفی کرده است که به عنوان جایگزینی سریعتر و کارآمدتر برای pip و سایر مدیریتکنندههای وابستگی عمل میکند. UV به زبان Rust نوشته شده و سرعت بالایی دارد. 🚀📦
2. پیشرفتهای امنیتی در پایتون:
Seth Larson، توسعهدهندهی امنیتی جدیدی که توسط بنیاد نرمافزار پایتون (PSF) استخدام شده است، در حال کار بر روی بهبودهای امنیتی در اکوسیستم پایتون است. این بهبودها شامل تقویت پروتکلهای امنیتی و رفع اشکالات موجود میباشد. 🔒🐍
3. NumPy 2.0 به زودی منتشر میشود:
NumPy 2.0 که یک بروزرسانی بزرگ و مهم برای کتابخانه محبوب محاسبات عددی است، در 16 ژوئن 2024 منتشر خواهد شد. این نسخه شامل بهبودهای کارایی و ویژگیهای جدید است. 🔢✨
4. ویژگیهای جدید در پایتون 3.13:
نسخه بتا پایتون 3.13 منتشر شده و ویژگیهای جدیدی مانند Interpreter جدید با ویرایش چند خطی و پشتیبانی از رنگ، و یک حالت experimental بدون GIL (Global Interpreter Lock) ارائه شده است. توسعهدهندگان تشویق میشوند که این نسخه را تست کنند و بازخوردهای خود را ارائه دهند. 💻🐍
5. افزونه جدید Pytest برای غیرفعال کردن تستها:
یک افزونه جدید برای Pytest معرفی شده است که به کاربران اجازه میدهد تستها را در فایلهای خاص غیرفعال کنند. این افزونه میتواند برای بهینهسازی و مدیریت بهتر تستها مفید باشد. 🧪⚙️
6. ملاقاتهای پایتون در سراسر جهان:
جامعه پایتون در هفتههای آینده میزبان چندین رویداد مهم است، از جمله DjangoCon Europe 2024، PyCon Colombia 2024، و Canberra Python Meetup. این رویدادها فرصتی عالی برای شبکهسازی و یادگیری هستند. 🌐🎉
7. آموزشهای جدید در Real Python:
وبسایت Real Python آموزشهای جدیدی درباره طراحی اصول شیءگرایی در پایتون و استفاده از اینترفیسها منتشر کرده است. این آموزشها به توسعهدهندگان کمک میکند تا کدهای تمیزتر و قابل نگهداریتری بنویسند. 📚💡
🔗 برای اطلاعات بیشتر و جزئیات کامل به منابع زیر مراجعه کنید:
- [Python Insider]
- [Real Python]
- [Planet Python]
🌹کانال مونو هم یه نگاه بندازین🌹
[این لینکشه]
#پایتون #اخبار_فناوری #برنامهنویسی #امنیت #پیشرفت #ابزارهای_توسعه
blog.python.org
Python Insider
👍1
👇خلاصه الگوریتم فلوچارت👇
مراحل الگوریتم:
تحلیل ایستا (Static Analysis)
شناسایی و حذف کدهای بلااستفاده
بهینهسازی و سادهسازی منطق کد
مستندسازی و نظافت کد
بررسی و تست نهایی
فلوچارت الگوریتم:
در ادامه فلوچارت این مراحل را رسم خواهیم کرد:
شروع (Start)
تحلیل ایستا (Static Analysis)
از ابزارهای تحلیل ایستا استفاده کنید.
مشکلات و کدهای غیرفعال را شناسایی کنید.
شناسایی و حذف کدهای بلااستفاده (Identify and Remove Unused Code)
یافتن توابع و کلاسهای بلااستفاده
حذف متغیرهای بلااستفاده
بهینهسازی و سادهسازی منطق کد (Optimize and Simplify Code Logic)
حذف شرطهای غیرضروری
ادغام کدهای مشابه
مستندسازی و نظافت کد (Document and Clean Up Code)
اضافه کردن توضیحات و مستندات
استفاده از کنوانسیونهای کدنویسی
بررسی و تست نهایی (Final Review and Testing)
انجام تستهای خودکار
بررسی عملکرد
پایان (End)
[الگوریتم هارو تو این کانال پیدا کنید]
مراحل الگوریتم:
تحلیل ایستا (Static Analysis)
شناسایی و حذف کدهای بلااستفاده
بهینهسازی و سادهسازی منطق کد
مستندسازی و نظافت کد
بررسی و تست نهایی
فلوچارت الگوریتم:
در ادامه فلوچارت این مراحل را رسم خواهیم کرد:
شروع (Start)
تحلیل ایستا (Static Analysis)
از ابزارهای تحلیل ایستا استفاده کنید.
مشکلات و کدهای غیرفعال را شناسایی کنید.
شناسایی و حذف کدهای بلااستفاده (Identify and Remove Unused Code)
یافتن توابع و کلاسهای بلااستفاده
حذف متغیرهای بلااستفاده
بهینهسازی و سادهسازی منطق کد (Optimize and Simplify Code Logic)
حذف شرطهای غیرضروری
ادغام کدهای مشابه
مستندسازی و نظافت کد (Document and Clean Up Code)
اضافه کردن توضیحات و مستندات
استفاده از کنوانسیونهای کدنویسی
بررسی و تست نهایی (Final Review and Testing)
انجام تستهای خودکار
بررسی عملکرد
پایان (End)
[الگوریتم هارو تو این کانال پیدا کنید]
👍1👎1
📚 استفاده از کتابخانههای پایتون برای کنترل سختافزار
کنترل سختافزار با پایتون یکی از جذابترین و مفیدترین کاربردهای این زبان محبوب است. با استفاده از کتابخانههای مختلف پایتون، میتونید به راحتی دستگاهها و سنسورهای مختلف رو کنترل کنید. بیایید چند نمونه از این کتابخانهها رو با هم بررسی کنیم.
# 1. RPi.GPIO برای Raspberry Pi
اگر از رزبری پای استفاده میکنید، کتابخانه
# 2. pySerial برای ارتباط سریال
برای ارتباط با دستگاههای سریال مثل آردوینو، میتونید از کتابخانه
# 3. Adafruit CircuitPython برای سنسورها و ماژولهای مختلف
کتابخانههای
نتیجهگیری
با استفاده از این کتابخانهها میتونید پروژههای جذاب و کاربردی ایجاد کنید. پس حتما امتحانشون کنید! 😉
[اینم کانال ماست]
#پایتون #برنامه_نویسی #سخت_افزار #آموزش #تکنولوژی #آردوینو #رزبری_پای #تلگرام
کنترل سختافزار با پایتون یکی از جذابترین و مفیدترین کاربردهای این زبان محبوب است. با استفاده از کتابخانههای مختلف پایتون، میتونید به راحتی دستگاهها و سنسورهای مختلف رو کنترل کنید. بیایید چند نمونه از این کتابخانهها رو با هم بررسی کنیم.
# 1. RPi.GPIO برای Raspberry Pi
اگر از رزبری پای استفاده میکنید، کتابخانه
RPi.GPIO
یکی از بهترین گزینههاست. این کتابخانه به شما اجازه میدهد پینهای GPIO رو کنترل کنید.import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
while True:
GPIO.output(18, GPIO.HIGH)
time.sleep(1)
GPIO.output(18, GPIO.LOW)
time.sleep(1)
# 2. pySerial برای ارتباط سریال
برای ارتباط با دستگاههای سریال مثل آردوینو، میتونید از کتابخانه
pySerial
استفاده کنید.import serial
ser = serial.Serial('/dev/ttyUSB0', 9600)
while True:
line = ser.readline()
print(line.decode('utf-8').strip())
# 3. Adafruit CircuitPython برای سنسورها و ماژولهای مختلف
کتابخانههای
Adafruit CircuitPython
برای کار با سنسورها و ماژولهای مختلف بسیار عالی هستند. برای مثال، برای استفاده از سنسور دما و رطوبت DHT22:import adafruit_dht
import board
dhtDevice = adafruit_dht.DHT22(board.D4)
while True:
try:
temperature = dhtDevice.temperature
humidity = dhtDevice.humidity
print(f"Temp: {temperature:.1f} C Humidity: {humidity:.1f}% ")
except RuntimeError as error:
print(error.args[0])
نتیجهگیری
با استفاده از این کتابخانهها میتونید پروژههای جذاب و کاربردی ایجاد کنید. پس حتما امتحانشون کنید! 😉
[اینم کانال ماست]
#پایتون #برنامه_نویسی #سخت_افزار #آموزش #تکنولوژی #آردوینو #رزبری_پای #تلگرام
👍3
📢📢 اطلاعیه مهم برای برنامهنویسان پایتون: معرفی ابزار UV 🚀
✅ UV یک نصبکننده بستههای پایتون است که به عنوان جایگزینی برای pip و pip-tools طراحی شده است.
✅ این ابزار با زبان Rust نوشته شده و از نظر سرعت، عملکرد بینظیری دارد؛ به طور میانگین 8 تا 10 برابر سریعتر از pip است و در حالتهای خاص میتواند تا 115 برابر سریعتر عمل کند!
✅ طراحی UV به گونهای است که به راحتی میتواند در پروژههای موجود جایگزین pip شود؛ بدون نیاز به تغییرات عمده در فرآیندهای کاری شما.
💡 ویژگیهای کلیدی UV:
- 🚀 سرعت بسیار بالا در نصب و حل وابستگیها
- 🔄 جایگزین ساده و بدون دردسر برای pip و pip-tools
- 🔒 مدیریت پایدار و مطمئن وابستگیها
- 💼 یک ابزار کامل و جامع برای مدیریت پروژههای پایتون
🔧 نصب UV:
pip install uv
📌 UV به عنوان گامی در جهت رسیدن به یک "Cargo برای پایتون" طراحی شده است؛ یک مدیر بسته و پروژه جامع که استفاده از آن سریع، قابل اعتماد و آسان است.
[برای اطلاعات بروز از پایتون تو کانال من عضو شید ]
#پایتون #برنامه_نویسی #ابزار_جدید #مدیریت_بسته #UV #pip #Rust #سرعت_بالا
✅ UV یک نصبکننده بستههای پایتون است که به عنوان جایگزینی برای pip و pip-tools طراحی شده است.
✅ این ابزار با زبان Rust نوشته شده و از نظر سرعت، عملکرد بینظیری دارد؛ به طور میانگین 8 تا 10 برابر سریعتر از pip است و در حالتهای خاص میتواند تا 115 برابر سریعتر عمل کند!
✅ طراحی UV به گونهای است که به راحتی میتواند در پروژههای موجود جایگزین pip شود؛ بدون نیاز به تغییرات عمده در فرآیندهای کاری شما.
💡 ویژگیهای کلیدی UV:
- 🚀 سرعت بسیار بالا در نصب و حل وابستگیها
- 🔄 جایگزین ساده و بدون دردسر برای pip و pip-tools
- 🔒 مدیریت پایدار و مطمئن وابستگیها
- 💼 یک ابزار کامل و جامع برای مدیریت پروژههای پایتون
🔧 نصب UV:
pip install uv
📌 UV به عنوان گامی در جهت رسیدن به یک "Cargo برای پایتون" طراحی شده است؛ یک مدیر بسته و پروژه جامع که استفاده از آن سریع، قابل اعتماد و آسان است.
[برای اطلاعات بروز از پایتون تو کانال من عضو شید ]
#پایتون #برنامه_نویسی #ابزار_جدید #مدیریت_بسته #UV #pip #Rust #سرعت_بالا
👍4
👍3
📚 آموزش ساختمان دادهها در پایتون 🚀
سلام دوستان! امروز میخوام یه سری آموزش درباره ساختمان دادهها (Data Structures) بهتون بدم. ساختمان دادهها از پایههای مهم علم کامپیوتر هستن و برای هر برنامهنویسی ضروریان. 🌟
🔢 لیستها (Lists)
لیستها یکی از پرکاربردترین ساختمان دادهها در پایتون هستند. با استفاده از لیستها میتوانیم مجموعهای از آیتمها را نگهداری کنیم. لیستها میتوانند شامل انواع مختلف دادهها باشند و قابلیت اضافه کردن، حذف کردن و دسترسی به عناصر را به راحتی فراهم میکنند.
مثال:
کاربردها:
- ذخیرهسازی مجموعهای از دادهها: مثلاً لیستی از نامها یا اعداد.
- دسترسی و تغییر سریع دادهها: اضافه و حذف عناصر در لیست به سادگی انجام میشود.
- پیادهسازی سایر ساختمان دادهها: لیستها میتوانند برای پیادهسازی ساختمان دادههای پیچیدهتر مانند پشته و صف استفاده شوند.
🧵 پشتهها (Stacks)
پشتهها ساختمان دادهای هستند که بر اساس اصل "آخرین ورودی، اولین خروجی" (LIFO) کار میکنند. یعنی آخرین عنصری که وارد پشته میشود، اولین عنصری است که خارج میشود.
مثال:
کاربردها:
- پیادهسازی فراخوانیهای بازگشتی: ذخیرهسازی متغیرها و حالتهای موقت در هنگام اجرای توابع بازگشتی.
- مدیریت صفحات مرورگر: بازگشت به صفحه قبلی با استفاده از پشته.
- بررسی تعادل پرانتزها: در تجزیه و تحلیل کدها و معادلات ریاضی.
🌲 درختها (Trees)
درختها ساختاری سلسلهمراتبی دارند و برای نمایش روابط سلسلهمراتبی استفاده میشوند. هر درخت از گرههایی (Nodes) تشکیل شده که هر گره میتواند صفر یا چند فرزند (Child) داشته باشد.
مثال:
کاربردها:
- مدیریت دادههای سلسلهمراتبی: مانند ساختار فایلها در سیستم عاملها.
- جستجوی سریع: استفاده از درختهای جستجو دودویی برای جستجو و درج سریع دادهها.
- تجزیه و تحلیل عبارات ریاضی: استفاده از درختهای تجزیه برای محاسبه عبارات ریاضی.
🔄 صفها (Queues)
صفها بر اساس اصل "اولین ورودی، اولین خروجی" (FIFO) کار میکنند. یعنی اولین عنصری که وارد صف میشود، اولین عنصری است که خارج میشود.
مثال:
کاربردها:
- مدیریت صفهای پردازش: مانند صف چاپگرها یا صف پردازش کارها در سیستمعامل.
- مدیریت درخواستهای وب: صفبندی درخواستهای وب برای پردازش.
- پیادهسازی الگوریتمهای مسیریابی: مانند الگوریتم BFS در گرافها.
🔍 هشمپها (Hash Maps)
هشمپها برای ذخیرهسازی جفتهای کلید و مقدار استفاده میشوند و دسترسی سریع به دادهها را فراهم میکنند.
مثال:
کاربردها:
- ذخیرهسازی و بازیابی سریع دادهها: استفاده از کلید برای دسترسی به مقادیر به صورت سریع.
- پیادهسازی حافظه کش: ذخیرهسازی نتایج محاسبات برای دسترسی سریعتر در آینده.
- مدیریت کاربران و جلسات: ذخیرهسازی اطلاعات کاربری و جلسات در سیستمهای وب.
📊 گرافها (Graphs)
گرافها مجموعهای از رئوس (Nodes) و یالها (Edges) هستند که ارتباط بین رئوس را نشان میدهند.
مثال:
کاربردها:
- مدیریت شبکههای اجتماعی: نمایش ارتباطات بین کاربران.
- مسیریابی و ناوبری: استفاده از گرافها برای یافتن کوتاهترین مسیرها در نقشهها.
- تحلیل شبکهها: تحلیل شبکههای ارتباطی و جریانهای داده.
[inam kanal ma]
#پایتون #برنامه_نویسی #ساختمان_داده #آموزش
سلام دوستان! امروز میخوام یه سری آموزش درباره ساختمان دادهها (Data Structures) بهتون بدم. ساختمان دادهها از پایههای مهم علم کامپیوتر هستن و برای هر برنامهنویسی ضروریان. 🌟
🔢 لیستها (Lists)
لیستها یکی از پرکاربردترین ساختمان دادهها در پایتون هستند. با استفاده از لیستها میتوانیم مجموعهای از آیتمها را نگهداری کنیم. لیستها میتوانند شامل انواع مختلف دادهها باشند و قابلیت اضافه کردن، حذف کردن و دسترسی به عناصر را به راحتی فراهم میکنند.
مثال:
my_list = [1, 2, 3, 4, 5]
print(my_list)
# خروجی: [1, 2, 3, 4, 5]
my_list.append(6)
print(my_list)
# خروجی: [1, 2, 3, 4, 5, 6]
my_list.remove(3)
print(my_list)
# خروجی: [1, 2, 4, 5, 6]
print(my_list[2])
# خروجی: 4
کاربردها:
- ذخیرهسازی مجموعهای از دادهها: مثلاً لیستی از نامها یا اعداد.
- دسترسی و تغییر سریع دادهها: اضافه و حذف عناصر در لیست به سادگی انجام میشود.
- پیادهسازی سایر ساختمان دادهها: لیستها میتوانند برای پیادهسازی ساختمان دادههای پیچیدهتر مانند پشته و صف استفاده شوند.
🧵 پشتهها (Stacks)
پشتهها ساختمان دادهای هستند که بر اساس اصل "آخرین ورودی، اولین خروجی" (LIFO) کار میکنند. یعنی آخرین عنصری که وارد پشته میشود، اولین عنصری است که خارج میشود.
مثال:
stack = []
stack.append(1)
stack.append(2)
print(stack)
# خروجی: [1, 2]
stack.pop()
print(stack)
# خروجی: [1]
stack.append(3)
print(stack)
# خروجی: [1, 3]
کاربردها:
- پیادهسازی فراخوانیهای بازگشتی: ذخیرهسازی متغیرها و حالتهای موقت در هنگام اجرای توابع بازگشتی.
- مدیریت صفحات مرورگر: بازگشت به صفحه قبلی با استفاده از پشته.
- بررسی تعادل پرانتزها: در تجزیه و تحلیل کدها و معادلات ریاضی.
🌲 درختها (Trees)
درختها ساختاری سلسلهمراتبی دارند و برای نمایش روابط سلسلهمراتبی استفاده میشوند. هر درخت از گرههایی (Nodes) تشکیل شده که هر گره میتواند صفر یا چند فرزند (Child) داشته باشد.
مثال:
class Node:
def __init__(self, key):
self.left = None
self.right = None
self.val = key
root = Node(1)
root.left = Node(2)
root.right = Node(3)
print(root.val) # 1
print(root.left.val) # 2
print(root.right.val) # 3
کاربردها:
- مدیریت دادههای سلسلهمراتبی: مانند ساختار فایلها در سیستم عاملها.
- جستجوی سریع: استفاده از درختهای جستجو دودویی برای جستجو و درج سریع دادهها.
- تجزیه و تحلیل عبارات ریاضی: استفاده از درختهای تجزیه برای محاسبه عبارات ریاضی.
🔄 صفها (Queues)
صفها بر اساس اصل "اولین ورودی، اولین خروجی" (FIFO) کار میکنند. یعنی اولین عنصری که وارد صف میشود، اولین عنصری است که خارج میشود.
مثال:
from collections import deque
queue = deque([1, 2, 3])
queue.append(4)
queue.popleft()
print(queue)
# خروجی: deque([2, 3, 4])
کاربردها:
- مدیریت صفهای پردازش: مانند صف چاپگرها یا صف پردازش کارها در سیستمعامل.
- مدیریت درخواستهای وب: صفبندی درخواستهای وب برای پردازش.
- پیادهسازی الگوریتمهای مسیریابی: مانند الگوریتم BFS در گرافها.
🔍 هشمپها (Hash Maps)
هشمپها برای ذخیرهسازی جفتهای کلید و مقدار استفاده میشوند و دسترسی سریع به دادهها را فراهم میکنند.
مثال:
hash_map = {}
hash_map['key1'] = 'value1'
print(hash_map['key1'])
# خروجی: value1
کاربردها:
- ذخیرهسازی و بازیابی سریع دادهها: استفاده از کلید برای دسترسی به مقادیر به صورت سریع.
- پیادهسازی حافظه کش: ذخیرهسازی نتایج محاسبات برای دسترسی سریعتر در آینده.
- مدیریت کاربران و جلسات: ذخیرهسازی اطلاعات کاربری و جلسات در سیستمهای وب.
📊 گرافها (Graphs)
گرافها مجموعهای از رئوس (Nodes) و یالها (Edges) هستند که ارتباط بین رئوس را نشان میدهند.
مثال:
graph = {
'A': ['B', 'C'],
'B': ['A', 'D', 'E'],
'C': ['A', 'F'],
'D': ['B'],
'E': ['B', 'F'],
'F': ['C', 'E']
}
کاربردها:
- مدیریت شبکههای اجتماعی: نمایش ارتباطات بین کاربران.
- مسیریابی و ناوبری: استفاده از گرافها برای یافتن کوتاهترین مسیرها در نقشهها.
- تحلیل شبکهها: تحلیل شبکههای ارتباطی و جریانهای داده.
[inam kanal ma]
#پایتون #برنامه_نویسی #ساختمان_داده #آموزش
👍2❤1