8341
Python- Raspberry Pi-AI-IOT ادمین : فرهاد ناصری زاده @farhad_naserizadeh @farhad3412 گروه پایتون @Python_QA تبادل @mmtahmasbi کانال مرتبط @new_mathematical @micropython_iot @c_micro اینستاگرام http://Instagram.com/python_raspberry
گروه 5800 نفره پایتون 😍👇
✅✅ @python_QA
سلام دوستان وقتتون بخیر
ویدیو پلی لیست آموزش برنامه نویسی شئ گرایی آپلود شد.
طی چند روز آینده تمامی قسمت های این پلی لیست رو آپلود میکنم.
قسمت : 8
موضوع :
Decorator
function Property
Variable Read Only
امیدوارم که مفید بوده باشه
میتونین از لینک تماشا کنید
لینک گیت هاب :
https://github.com/persianpython/PythonObjectOriented
✔️ تازههای پایتون ۳.۱۲
تا چند روز آینده پایتون ۳.۱۲ که آخرین ورژن پایدار پایتون هست قراره منتشر بشه، بیاید تا با جدیدترین قابلیتها و بهبودهای پایتون آشنا بشیم 😁
🔗 liewpl/python-3-12-whats-new-vpq99njtytc6" rel="nofollow">https://virgool.io/@liewpl/python-3-12-whats-new-vpq99njtytc6
〰〰〰〰〰〰〰〰
©@raspberry_python
🔰group: @python_QA
یک پلی لیست داریم که توش میپردازم به نحوه تست نویسی, تست های مختلف, و اصول تست نویسی در SDLC
تو ویدیو سوم پلی لیست, پرداختم به پای تست, توضیح دادم پای تست چیه, چرا بهتره از لایبری unit test پایتون و اینکه fixture ها چین و scope چیه و assertion چیه و چطور assertion ای بنویسیم که خوانایی بالاتری داشته باشه.
https://www.youtube.com/watch?v=_YPJZtMRs8Q&list=PLEQ3RnweNGA6v7qTMrDCcpgr9u91zvpq_&index=3
تو ویدیو چهارم پلی لیست, نحوه ماک کردن database و application رو توضیح دادم و نحوه نوشتن تست تو FastAPI رو هم آموزش دادم.
https://www.youtube.com/watch?v=zhp7Y6sWqfE&list=PLEQ3RnweNGA6v7qTMrDCcpgr9u91zvpq_&index=4
سورس کد:
https://github.com/ManiMozaffar/testing-101
سوال داشتین حتما زیر ویدیو کامنت کنید پاسخ میدم
〰️〰️〰️〰️〰️〰️
© @raspberry_python | @ManiFoldsPython
🟢 گروه 5800 نفره پایتون 😍 👇👇👇👇
✅ @python_QA
🟢 گروه 5800 نفره پایتون 😍 👇👇👇👇
✅ @python_QA
انواع سرچ ها روی لیست:
خیلی خلاصه چند تا از انواع سرچ ها رو روی لیست باهم ببینیم:
فرض کنید یه لیست نا مرتبی از اعداد داریم به این شکل:
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
سلام دوستان وقتتون بخیر
ویدیو پلی لیست FastApi آپلود شد
قسمت : 32 آخر
موضوع : استقرار پروژه FastAPI برروی سرور
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنید
https://youtu.be/tuNQotTa1-0
فایل های این ویدیو در گیت هاب :
https://github.com/persianpython/FastApi
Classical And Modern Cryptography For Beginners
کتابی بسیار عالی جهت یادگیری رمزنگاری
انتشارات اشپرینگر 2023
@raspberry_python
Data science and machine learning. Mathematical and statistical methods
@raspberry_python
📢 متهم کمبود برق کیست؟
🔹باز هم تابستان آمد و حرف از کمبود برق کشور داغ شده است.
🔹اما به راستی چه کسی در شرایط به وجود آماده مقصر است؟ چرا ایران که خود یکی از بزرگترین دارندگان منابع انرژی در جهان است، تابستانها با کمبود برق و زمستانها با کمبود گاز مواجه میشود؟
🔹خاموشی بخش صنعتی چه آسیبهایی به دنبال دارد و با این شرایط میتوان انتظار داشت از بحرانهای اقتصادی که با آن دست به گریبان است، خلاص شود؟ با توجه به برنامههای موجود آیا امیدی به رفع کمبود برق کشور وجود دارد؟
🗣 دکتر هاشم اورعی، استاد برق دانشگاه شریف و رئیس انجمن انرژی بادی ایران/ فردای اقتصاد
_
©️انــرژی پـــــرس
✅ @energypress
📌 Energypress.ir
🔴 سرفصل ها ی قسمت iot
✔️ آموزش نحوه عملکرد پایه های آردوینو
✔️ آموزش کار با I/o ها
✔️ آموزش نحوه عملکرد سنسور نور LDR ✔️ آموزش نحوه اندازه گیره نور توسط سنسور و نمایش مقدار آن
✔️ کنترل نور محیط متناسب با مقدار نور تشخیص داده شده توسط سنسور
✔️ آموزش نحوه عملکرد سنسور دمایlm35
✔️ آموزش کنترل دمای محیط متناسب با دمای اندازه گیری شده
✔️ آموزش نحوه عملکرد سنسور رطوبت خاکyl69
✔️ کنترل رطوبت خاک متناسب با مقدار رطوبت اندازه گیری شده توسط سنسور
✔️ آموزش نحوه عملکرد سنسور فاصله srf05
✔️ آموزش ساخت مدار واکنش دهنده نسبت به فاصله اندازه گیری شده.
/channel/python_QA/294586
همین راه حل توسط یکی از ممبرا ادیت شده و بهترش کرده 😁🤘
واقعا زیباس این اظهار نظرا
@raspberry_python
✔️ استیبل بودن یا نبودن یک الگوریتم مرتب سازی
یکی از دسته بندی های موجود برای الگوریتم هایsort کردن، فاکتور stable بودن یا نبودن هست. به طور خلاصه به الگوریتمی میگن stable که:
موقع sort کردن یک لیست، اگه ۲ تا آیتم مساوی هم بودن، دقیقا به همون ترتیبی که توی لیست اولیه بودن، توی لیست مرتب شده هم ظاهر بشن.
فرض کنید به شما میگن لیست زیر رو بر اساس: اول نمره و بعد درصورت یکسان بودن نمره ها، بر اساس حروف الفبا مرتب کنید. منتاها این لیستی که به شما میدن خودش بر اساس حروف الفبا مرتب شده هست:
lst = [
("Ashkan",17),
("Bahar",18),
("Sorena",17)
]
یک راه مرسوم اینه که به این روش sort رو انجام بدیم:
lst.sort(key=lambda x: (x[1], x[0]))
کاملا درسته و هیچ اشکالی نداره. بیشتر میخواستیم درباره موضوع پست صحبت کنیم.
آیا میتونیم فقط بیایم بر اساس آیتم دوم sort ش کنیم؟ این که خود لیست بر اساس حروف الفبا مرتب شده آیا کمکی میکنه؟ یعنی:
lst.sort(key=lambda x: x[1])
اگه بدونیم الگوریتمی که استفاده شده stable هست بله میتونیم و گارانتی هست که آیتم های مساوی به همون ترتیب در خروجی قرار میگیرن، و چون در حال حاضر بر اساس حروف الفبا مرتب شده هستن، اون افرادی که نمره ی برابر دارن اتوماتیک بر اساس حروف الفبا هم مرتب هستن.
خروجی هردو:
[
('Ashkan', 17),
('Sorena', 17),
('Bahar', 18)
]
پایتون از Tim Sort استفاده میکنه و stable هست.
چند تا از الگوریتم های مرتب سازی استیبل:
• Insertion Sort
• Merge Sort
• Bubble Sort
• Tim Sort
و نقطهی مقابلشون:
• Heap Sort
• Selection Sort
• Quick Sort
✒️ @AmirSoroushh
🖥 Download YouTube videos using Python
Link:
https://github.com/yt-dlp/yt-dlp
@raspberry_python
✅✅ گروه 5000 نفره پایتون 😍 👇👇
🆔 @python_QA
from random import shuffle
from collections import Counter
def calc():
lst = [1, 1, 1, 2, 2, 2, 3, 3, 3]
shuffle(lst)
partitions = [lst[i : i + 3] for i in range(0, len(lst), 3)]
return all(len(set(sub)) == 3 for sub in partitions)
n = 100_000
c = Counter(calc() for _ in range(n))
print(round(c[True] / n, 2))
@AmirSoroushh
50 اسکریپت مفید پایتون 😍
@raspberry_python
@python_QA
یک پلی لیست جدید داریم که توش میپردازم به نحوه تست نویسی, تست های مختلف, و اصول تست نویسی در SDLC
ویدیو اول این پلی لیست, اومدم در مورد dependency inversion principle و Dependency Injection صحبت کردم و گفتم چرا مهم هستند و تو فریم ورک های مختلف نحوه پیاده سازی DI رو بررسی کردیم.
https://www.youtube.com/watch?v=qSMHCHeErYY&list=PLEQ3RnweNGA6v7qTMrDCcpgr9u91zvpq_&index=1
ویدیو دوم, اومدم در مورد ماک گرفتن صحبت کردم, ماک چیه و side effect چیه و چطوری میتونیم ماک بگیریم؟تفاوت ماک کاستوم چیه با ماک unittest و چه مزایا و معایبی نسبت به هم دارن؟ و کجا باید چیو ماک بگیریم
https://www.youtube.com/watch?v=8tsrLxe_-oE&list=PLEQ3RnweNGA6v7qTMrDCcpgr9u91zvpq_&index=2
سورس کد:
https://github.com/ManiMozaffar/testing-101
سوال داشتین حتما زیر ویدیو کامنت کنید پاسخ میدم
〰️〰️〰️〰️〰️〰️
© @raspberry_python | @ManiFoldsPython
.pythonrc
درست مثل
.nanorc
.bashrc
.vimrc
...
و بقیه ی فایل های مشابه، یه pythonrc هم داریم که به همون منظور ایجاد شده. قرار هست از قبل از startup عه REPL خونده و اجرا بشه.
استفاده های مختلفی میشه کرد: مثلا اگه همیشه وقتی REPL رو باز میکنید یه سری کتابخونه رو import میکنید، میتونید یک بار اینجا import کنید و دیگه هربار اینکار رو نکنید.
یا مثلا اگه یه سری helper فانکشن برای خودتون نوشتید میتونید یکبار اینجا تعریفش کنید و هروقت که REPL رو باز کردید در دسترس شما هست.
یه کار جالب دیگه اینکه میتونیم built-in فانکشن help رو با inspect که توی rich هست عوض کنیم:from functools import partialحالا باید environment variable عه PYTHONSTARTUP رو هم ست کنیم که به فایل
from rich import inspect, pretty
help = partial(inspect, help=True)
pretty.install()
.pythonrc
اشاره کنه.
الان ورژن rich استفاده میشه وقتی روی آبجکتی بزنید.
منبع
🖊 @AmirSoroushh
conditional breakpoint:
فرض کنید همچین کدی داریم:
for i in range(100):و دوباره فرض کنید که زمانی که i میشه ۹۰ یه مشکلی بوجود میاد. میخواهیم برنامه رو دیباگ کنیم. چه کنیم؟ break point بذاریم سمت چپ for loop.
print(i)
i == 90حالا با زدن دکمه دیباگ فقط زمانی وایمیسته که این شرط درست باشه.
Classical And Modern Cryptography For Beginners
کتابی بسیار عالی جهت یادگیری رمزنگاری
انتشارات اشپرینگر 2023
@raspberry_python
Data science and machine learning. Mathematical and statistical methods
@raspberry_python
درود. یه موضوع ساده ولی جالب:
همونطور که میدونید برای تولید اعداد (شبه) رندوم از ماژول random استفاده میکنیم توی پایتون. یکی از ویژگی های الگوریتم هایی که برای تولید اعداد شبه رندوم استفاده میشن این هست که باید سعی کنن به صورت یکنواخت اعداد رو توزیع کنن.
منظورم این هست که به طور مثال اگه خواستید ۱۰ هزار بار بین ۱ و ۲ و ۳ یه عددی رو انتخاب کنید باید بتونه تقریبا ۳۳۳۳ تا ۱ ، ۳۳۳۳ تا ۲ و ۳۳۳۳ تا ۳ انتخاب کنه. اول یه تست بگیریم ببینیم چقدر نزدیک هست:
> from random import randintخیلی خوب و نزدیک بود. ولی حالا از اینکه اینا یکنواخت توزیع میشن چه استفادهای میتونیم بکنیم؟
> from collections import Counter
>
> Counter((randint(1,3) for _ in range(10_000)))
Counter({2: 3379, 3: 3345, 1: 3276})
🔆🔆با اشتراک ماهینانه ۵۰ تومن میتوانید با عضویت در کانال آموزشی به صورت روزانه ویدیو های اختصاصی تهیه شده توسط ما را دریافت نمایید.این مطالب شامل سرفصل های زیر میباشد.
💠💠💠
IOT
ARM
FPGA
Raspberry pi
AVR
ARDUINO
ESP8266
💠💠💠
جهت عضویت و یا کسب اطلاعات بیشتر به آیدی @all_about_electronic پیغام ارسال فرمایید.
جواب یکی دیگر از ممبرهامون
نوشته شده توسط:@My_us3rname
توضیحات توسط همین دوست عزیز:
یکم بازی ریاضی
ببین ما معادله درجه n میخایم که ریشه هاشو داریم
اومدم ی چن تا نمونه برا خودم حل کردم
رابطشو بدست اوردم
کلا فبول داریم که یکی از معادله ها ب فرم
(x-a1) *(x-a2) *...
هستش
حالا اینو حساب کنیم
برا x^n توان 1
برا x^n-1 توان میشه ( انتخاب 1 از مجموهه ریشه ها) و جمعشون
صریب x^n-2 میشه (انتخاب دو تا از ریشه ها و صربشون باهم) و جمع این حالت ها
ضریب x^n-3 میشه ( انتخاب 3 تا از ریشه ها و صربشون در هم) و جمع این حالت ها
و الی اخر
@raspberry_python