ch
Feedback
🐍 Python & Raspberry 🐍

🐍 Python & Raspberry 🐍

前往频道在 Telegram

Python- Raspberry Pi-AI-IOT ادمین : فرهاد ناصری زاده @farhad_naserizadeh @farhad3412 گروه پایتون @Python_QA تبادل @mmtahmasbi کانال مرتبط @new_mathematical @micropython_iot @c_micro اینستاگرام http://Instagram.com/python_raspberry

显示更多
8 216
订阅者
无数据24 小时
-177
-8330
帖子存档
🟢 گروه 5800 نفره پایتون 😍 @python_QA

conditional breakpoint: فرض کنید همچین کدی داریم:
for i in range(100):
    print(i)
و دوباره فرض کنید که زمانی که i میشه ۹۰ یه مشکلی بوجود میاد. میخواهیم برنامه رو دیباگ کنیم. چه کنیم؟ break point بذاریم سمت چپ for loop. ولی موضوع این هست که دیباگر وقتی ران میشه همون ابتدا کنار for loop وایمیسته و ما باید دستی جلو ببریم. تو این حالت i مساوی ۰ هست. منطقی نیست که ۹۰ بار روی next بزنیم تا برسیم به اون حالتی که i برابر ۹۰ میشه. خوشبختانه یه چیزی به اسم conditional breakpoint وجود داره که میتونید بهش یه expression عه boolean بدید و دیباگر فقط زمانی وایمیسته که اون expression درست باشه. توی ادیتور دلخواهتون بعد از اینکه break point گذاشتین، راست کلیک کنید روش و edit رو بزنید(یا هر اسم دیگه ای که داره) و توی اون پنجره ای که باز میشه بنویسید:
i == 90
حالا با زدن دکمه دیباگ فقط زمانی وایمیسته که این شرط درست باشه. بابت این مثال تعبیه ای و ساده ببخشید ولی چیز بهتری به ذهنم نرسید. مهم مفهومش بود که تحت شرط خاصی بگیم وایسه. 🖊 @AmirSoroushh

conditional breakpoint: فرض کنید همچین کدی داریم:
for i in range(100):
    print(i)
و دوباره فرض کنید که زمانی که i میشه ۹۰ یه مشکلی بوجود میاد. میخواهیم برنامه رو دیباگ کنیم. چه کنیم؟ break point بذاریم سمت چپ for loop. ولی موضوع این هست که دیباگر وقتی ران میشه همون ابتدا کنار for loop وایمیسته و ما باید دستی جلو ببریم. تو این حالت i مساوی ۰ هست. منطقی نیست که ۹۰ بار روی next بزنیم تا برسیم به اون حالتی که i برابر ۹۰ میشه. خوشبختانه یه چیزی به اسم conditional breakpoint وجود داره که میتونید بهش یه expression عه boolean بدید و دیباگر فقط زمانی وایمیسته که اون expression درست باشه. توی ادیتور دلخواهتون بعد از اینکه break point گذاشتین، راست کلیک کنید روش و edit رو بزنید(یا هر اسم دیگه ای که داره) و توی اون پنجره ای که باز میشه بنویسید:
i == 90
حالا با زدن دکمه دیباگ فقط زمانی وایمیسته که این شرط درست باشه. بابت این مثال تعبیه ای و ساده ببخشید ولی چیز بهتری به ذهنم نرسید. مهم مفهومش بود که تحت شرط خاصی بگیم وایسه. 🖊 @AmirSoroushh

انواع سرچ ها روی لیست: خیلی خلاصه چند تا از انواع سرچ ها رو روی لیست باهم ببینیم: فرض کنید یه لیست نا مرتبی از اعداد داریم به این شکل: lst = [30, 2, 7, 14, 1, 25, 4, 15, 9] اگه بخواهیم دنبال عدد ۱۵ بگردیم باید چیکار کنیم؟ 1- Linear search(not optimized) میتونیم از ایندکس شماره صفر شروع کنیم و تک تک تا انتها بریم جلو و اعداد رو نگاه کنیم ببینیم ۱۵ داخلشون هست یا نه. این درواقع کاری هست که پایتون انجام میده زمانی که شما از in استفاده میکنید. چون اعداد ترتیبی ندارن کار دیگه ای نمیشه کرد. ________________________________________ اگه اعداد مرتب بودن چی؟ lst = [1, 2, 4, 7, 9, 14, 15, 25, 30] 2- Linear search(optimized) فرض کنیم میخواهیم دنبال عدد ۵ بگردیم. دوباره میتونیم شروع کنیم تک تک اعداد رو مقایسه کنیم، ولی بعد از اینکه به عدد ۷ رسیدیم، میتونیم دیگه ادامه ندیم. چون اعداد مرتب هستن، حتما توی اعداد بزرگتر از ۷ هم نخواهد بود. بهتر شد اینجا. 3- Jump search میتونیم به جای اینکه تک تک به جلو بریم و اعداد رو، چند تا چند تا جلو بریم و بپریم اصطلاحا (jump search). فرض کنید دنبال عدد ۲۵ میگردیم. میتونیم اعداد رو ۲ تا ۲ تا جلو بریم، یعنی اول ایندکس شماره ۰ (یا عدد ۱) و نگاه میکنیم، بعد میریم ایندکس شماره ۲ (یا عدد ۴)، بعد ایندکس شماره ۴ (یا عدد ۹) و تا آخر، هر جا که دیدیم عدد ایندکس مورد نظر بزرگتر از عدد مقصود ماست، یعنی به اون تیکه از لیست که ممکنه عدد هدف داخلش باشه رسیدیم، فقط کافیه داخل اون رو به صورت linear نگاه کنیم. برای پیدا کردن عدد ۲۵ ، فقط ۶ تا مقایسه لازم بود. (تو حالت خطی ۸ تا). حالا این jump ما چقدر باشه خوبه؟ محاسبات نشون میده که رادیکال n بهترین گام هست. ( n تعداد آیتم های داخل لیست هست) 4- Binary search کافیه توی هر مرحله لیستمون رو به دو قسمت تقسیم کنیم، و آیتم هدف رو با آیتم وسطی مقایسه کنیم، اگه کوچیکتر بود، دیگه فقط توی اون نیمه ی سمت چپ دنبالش میگردیم، اگه بزرگتر بود توی نیمه ی سمت راست. و دوباره همینکار رو تکرار میکنیم تا به هدف برسیم. 5- Interpolation search خیلی شبیه binary search هست با این تفاوت که اونجا نقطه ای که لیست ما رو تقسیم میکرد و دقیقا وسط لیست میگرفتیم، ولی اینجا با استفاده از این فرمول، اون نقطه رو بدست میاریم: mid = low + ((key - arr[low]) * (high - low) / (arr[high] - arr[low])); low = کوچکترین ایندکس high = بزرگترین ایندکس key = آیتم هدف این فرمول نقطه ی تقسیم رو مایل به چپ یا راست پیدا میکنه، نزدیک تر به آیتم هدف. ولی برای اینکه interpolation search بتونه خیلی سریع عمل کنه، باید لیست ما به صورت یکنواخت توزیع شده باشه. 6 - Exponential search توی این روش که برای لیست های خیلی بزرگ کاربرد داره، از ابتدا شروع میکنیم به گشتن، ولی گام های ما به صورت exponential هست (توان های ۲): 0, 1, 4, 9, 16, 25, ... وقتی که آیتمی پیدا کردیم که از آیتم هدف ما بزرگتر بود، میایم اون تیکه رو دوباره فقط جست و جو میکنیم(مثل jump search) ولی دیگه این جست و جو خطی نیست بلکه روش binary search انجام میدیم. نکته: این الگوریتم ها بسته به شرایط الگوریتم های خیلی بهتری هستن از کاری که پایتون انجام میده. به پایتون حتی اگه لیست مرتب شده هم بدید باز تک تک سرچ میکنه. ولی خب نکته اینجاست که اون با C پیاده سازی شده و احتمالا توی خیلی از پیاده سازی های pure python از الگوریتم هایی با time complexity بهتر سریعتر باشه. در آینده سعی میکنم بیشتر درمورد time complexity ی هرکدوم از این انواع سرچ و اینکه کجا کدوم بهتره استفاده بشه صحبت کنیم. 🖊 @AmirSoroushh

انواع سرچ ها روی لیست: خیلی خلاصه چند تا از انواع سرچ ها رو روی لیست باهم ببینیم: فرض کنید یه لیست نا مرتبی از اعداد داریم به این شکل: lst = [30, 2, 7, 14, 1, 25, 4, 15, 9] اگه بخواهیم دنبال عدد ۱۵ بگردیم باید چیکار کنیم؟ 1- Linear search(not optimized) میتونیم از ایندکس شماره صفر شروع کنیم و تک تک تا انتها بریم جلو و اعداد رو نگاه کنیم ببینیم ۱۵ داخلشون هست یا نه. این درواقع کاری هست که پایتون انجام میده زمانی که شما از in استفاده میکنید. چون اعداد ترتیبی ندارن کار دیگه ای نمیشه کرد. ________________________________________ اگه اعداد مرتب بودن چی؟ lst = [1, 2, 4, 7, 9, 14, 15, 25, 30] 2- Linear search(optimized) فرض کنیم میخواهیم دنبال عدد ۵ بگردیم. دوباره میتونیم شروع کنیم تک تک اعداد رو مقایسه کنیم، ولی بعد از اینکه به عدد ۷ رسیدیم، میتونیم دیگه ادامه ندیم. چون اعداد مرتب هستن، حتما توی اعداد بزرگتر از ۷ هم نخواهد بود. بهتر شد اینجا. 3- Jump search میتونیم به جای اینکه تک تک به جلو بریم و اعداد رو، چند تا چند تا جلو بریم و بپریم اصطلاحا (jump search). فرض کنید دنبال عدد ۲۵ میگردیم. میتونیم اعداد رو ۲ تا ۲ تا جلو بریم، یعنی اول ایندکس شماره ۰ (یا عدد ۱) و نگاه میکنیم، بعد میریم ایندکس شماره ۲ (یا عدد ۴)، بعد ایندکس شماره ۴ (یا عدد ۹) و تا آخر، هر جا که دیدیم عدد ایندکس مورد نظر بزرگتر از عدد مقصود ماست، یعنی به اون تیکه از لیست که ممکنه عدد هدف داخلش باشه رسیدیم، فقط کافیه داخل اون رو به صورت linear نگاه کنیم. برای پیدا کردن عدد ۲۵ ، فقط ۶ تا مقایسه لازم بود. (تو حالت خطی ۸ تا). حالا این jump ما چقدر باشه خوبه؟ محاسبات نشون میده که رادیکال n بهترین گام هست. ( n تعداد آیتم های داخل لیست هست) 4- Binary search کافیه توی هر مرحله لیستمون رو به دو قسمت تقسیم کنیم، و آیتم هدف رو با آیتم وسطی مقایسه کنیم، اگه کوچیکتر بود، دیگه فقط توی اون نیمه ی سمت چپ دنبالش میگردیم، اگه بزرگتر بود توی نیمه ی سمت راست. و دوباره همینکار رو تکرار میکنیم تا به هدف برسیم. 5- Interpolation search خیلی شبیه binary search هست با این تفاوت که اونجا نقطه ای که لیست ما رو تقسیم میکرد و دقیقا وسط لیست میگرفتیم، ولی اینجا با استفاده از این فرمول، اون نقطه رو بدست میاریم: mid = low + ((key - arr[low]) * (high - low) / (arr[high] - arr[low])); low = کوچکترین ایندکس high = بزرگترین ایندکس key = آیتم هدف این فرمول نقطه ی تقسیم رو مایل به چپ یا راست پیدا میکنه، نزدیک تر به آیتم هدف. ولی برای اینکه interpolation search بتونه خیلی سریع عمل کنه، باید لیست ما به صورت یکنواخت توزیع شده باشه. 6 - Exponential search توی این روش که برای لیست های خیلی بزرگ کاربرد داره، از ابتدا شروع میکنیم به گشتن، ولی گام های ما به صورت exponential هست (توان های ۲): 0, 1, 4, 9, 16, 25, ... وقتی که آیتمی پیدا کردیم که از آیتم هدف ما بزرگتر بود، میایم اون تیکه رو دوباره فقط جست و جو میکنیم(مثل jump search) ولی دیگه این جست و جو خطی نیست بلکه روش binary search انجام میدیم. نکته: این الگوریتم ها بسته به شرایط الگوریتم های خیلی بهتری هستن از کاری که پایتون انجام میده. به پایتون حتی اگه لیست مرتب شده هم بدید باز تک تک سرچ میکنه. ولی خب نکته اینجاست که اون با C پیاده سازی شده و احتمالا توی خیلی از پیاده سازی های pure python از الگوریتم هایی با time complexity بهتر سریعتر باشه. در آینده سعی میکنم بیشتر درمورد time complexity ی هرکدوم از این انواع سرچ و اینکه کجا کدوم بهتره استفاده بشه صحبت کنیم. 🖊 @AmirSoroushh

🔸لیستی از برترین کانال‌های آموزشی در زمینه های هوش‌مصنوعی, پایتون و یادگیری ماشین ‏❯ هوش مصنوعی:  1️⃣ @Ai_Tv 2️⃣ @eventai ‏❯ یادگیری ماشین و یادگیری عمیق : 1️⃣ @Machine_learn 2️⃣ @Programming4all_0to100 ‏❯ علم داده : 1️⃣ @BigDataSchool ‏❯ آموزش پایتون: ‏ 1⃣  @raspberry_python

Repost from Persian python
سلام دوستان وقتتون بخیر ویدیو پلی لیست FastApi آپلود شد قسمت : 32 آخر موضوع : استقرار پروژه FastAPI برروی سرور امیدوارم که مفید بوده باشه میتونین از لینک زیر تماشا کنید https://youtu.be/tuNQotTa1-0 فایل های این ویدیو در گیت هاب : https://github.com/persianpython/FastApi

به عنوان یک دانشجو، محقق، شاغل و... به کیفیت زندگی خود از 20 چه عددی می دهید؟
Anonymous voting

به عنوان یک دانشجو، محقق، شاغل و... به کیفیت زندگی خود از 20 چه عددی می دهید؟
Anonymous voting

Rajkumar_Banoth,_Rekha_Regar_Classical_And_Modern_Cryptography_For.pdf10.26 MB

Rajkumar_Banoth,_Rekha_Regar_Classical_And_Modern_Cryptography_For.pdf10.26 MB

Classical And Modern Cryptography For Beginners
Classical And Modern Cryptography For Beginners

Classical And Modern Cryptography For Beginners
Classical And Modern Cryptography For Beginners

Data science and machine learning. Mathematical and statistical methods

Data science and machine learning. Mathematical and statistical methods

Data science and machine learning. Mathematical and statistical methods
Data science and machine learning. Mathematical and statistical methods

Data science and machine learning. Mathematical and statistical methods
Data science and machine learning. Mathematical and statistical methods