🐍 Python & Raspberry 🐍
8.2K subscribers
1.92K photos
125 videos
623 files
1.23K links
Python- Raspberry Pi-AI-IOT
ادمین : فرهاد ناصری زاده
@farhad_naserizadeh
@farhad3412

گروه پایتون
@Python_QA
تبادل
@mmtahmasbi
کانال مرتبط
@new_mathematical
@micropython_iot
@c_micro
اینستاگرام
http://Instagram.com/python_raspberry
Download Telegram
What you are learning?


@raspberry_python
کدام یک از گزینه های زیر غلط است ؟
Anonymous Quiz
7%
(10).__str__()
12%
(10) .__str__()
9%
(10.2).__str__()
30%
10.2.__str__()
15%
10.__str__()
28%
10 .__str__()
🐍 Python & Raspberry 🐍
Map & Filter Functions https://www.instagram.com/p/CSV_IwWDEvw/?utm_medium=copy_link
لینک جوین به اینستاگرام کانال و گروه ☝️☝️☝️😍😍
Forwarded from OpenCV | Python
This media is not supported in your browser
VIEW IN TELEGRAM
کتاب آموزش صفر تا صد زبان برنامه نویسی پایتون منتشر شد💎
تعداد صفحات: ۲۷۰ | ابعاد: وزیری
یکبار و برای همیشه زبان برنامه نویسی پایتون را کامل یاد بگیرید 👌💪
📚لینک مشخصات و دریافت کتاب:
https://shop.ali110co.ir/downloads/python-zero-to-hero-book/

❤️ضمن تبریک عید غدیر، سلامتی و آرامش را برای همه شما آرزومندیم❤️
🔻برای دوستان خود ارسال کنین🔻
🔹@OpenCV_olc🔹
تکه کد زیر رو در نظر بگیرید :
lst = [1, 2, 3]
print(lst.__len__()) # 3
print(len(lst)) # 3
هردو جواب یکسان میدن، آیا تفاوتی دارند ؟ آیا میشه همیشه از مجیک متد های متناظر استفاده کرد؟ امروز میخوایم 4 تا از تفاوت ها رو بررسی کنیم.

1- اولین مورد که نظر خیلی ها هم هست readability هست! فرض کنید به جای تمام built-in فانکشن هایی که پایتون داره :
str(), bool(), len(), repr(), hash(), ...
ما معادل magic method اون رو استفاده کنیم:

__str__(), __bool__(), __len__(), __repr__(), __hash__(), ...

یه صفحه از کدمون میشه پر از underscore که هم زشته هم ناخوانا مخصوصا اگه ترکیب هم بشن باهم...

2- مورد مهم بعدی:
class C:
def __len__(self):
return 'salam'

obj = C()
print(obj.__len__()) # Fine
print(len(obj)) # Error

پایتون سر دومین print ارور داد ! البته که باید هم میداد، دلیلش منطقی هست وقتی ما طول یه آبجکتی رو میخوایم انتظار "عدد" داریم نمیشه طول آبجکت ما "سلام" باشه ولی توی اولی کامل ignore شده.
* وقتی متد شما توسط پایتون کال بشه، پایتون یه checking هم انجام میده !
یه بار دیگه با دیگه با str ببینیم این رو :
class C:
def __str__(self):
return 10

obj = C()
print(obj.__str__()) # Fine
print(str(obj)) # Error


3- مورد بعدی توی comparison operator ها (نه arithmetic operator ها مثل ضرب و ...):
class C:
def __lt__(self, other):
print('called')

class D:
pass

obj1 = C()
obj2 = D()

obj2 > obj1
obj2.__gt__(obj2)

دو نمونه داریم به اسم obj1 و obj2 ، از طرفی میدونیم magic method عه متناظر با علامت < متد عه __gt__ هست. ما برای هیچکدوم از کلاس ها __gt__ رو پیاده سازی نکردیم ولی:
پایتون توی مورد اول میاد میگه ، من نمتونم تشخیص بدم که obj2 بزرگ تر از obj1 هست یا نه ، بذار ببینم میتونم جور دیگه نگاه کنم و تشخیص بدم که obj1 کوچیک تر از obj2 هست ؟ بله میتونم! چون obj1 متد __lt__ رو پیاده سازی کرده پس اون رو کال میکنه.
ولی توی مورد دوم همچین خبری نیست.


4- مورد آخر که کم اهمیت هست ولی جالب بود بگیم ، توی دیتا تایپ های built-in پایتون ، سرعت built-in فانکشن ها سریع تر هست :
from timeit import timeit

print(timeit("len('salam')", number=10000000))
print(timeit("'salam'.__len__()", number=10000000))

# 0.4709385
# 0.6157927000000001

دلیلش هم اینکه فانکشن len با C نوشته شده ، با توجه به تایپی که بهش میدیم، مسیرش رو برای پیدا کردن انتخاب میکنه. ولی توی پایینی پایتون دنبال متد __len__ توی namespace عه اون نمونه میگرده. (توی 10 میلیون بار اجرا 0.2 ثانیه تفاوت یعنی هیچی).
خروجی کد بالاچیست؟

@raspberry_python
خروجی کد بالا چیست ؟
Final Results
32%
۳
30%
۲
17%
نمیدونم
22%
error
This media is not supported in your browser
VIEW IN TELEGRAM
یه نمونه portfolio خلاقانه و زیبا :

https://pranavprakasan07.github.io/Portfolio/

اگه با گوشی نیستین میتونین لینک بالا رو باز کنید و خودتون امتحان کنید.
برنامه نویسی متلب Matlab

📚 دسترسی به راهنمای نرم افزار
demo , help , helpdesk , helpwin , doc , lookfor

📚 مدیریت current directory
what , which , cd , delete , dir
📚 نحوه نمایش اعداد
format (rat,long,short,...)
📚 ورودی گرفتن از کاربر
input,inputdlg,...
📚 نمایش خروجی
disp , fprintf , sprintf , …
📚 مدیریت متلب
exit , quit , startup,...
📚 توابع منطقی
all , any , exist , logical , is* , find,...

#آموزش #دسته_بندی
Matlab | برنامه نویسی متلب
@Matlab_MathWorks
دانلود عکس پروفایل اینستاگرام با پایتون

@raspberry_python
Forwarded from SUT Twitter
اول باور نکردم.
خودم رفتم کتاب را دیدم.
بیخود نیست که کتاب‌های تاریخ و اجتماعی و... منفورترین کتابها نزد دانش‌آموزان هستند.

«عباس عبدی»

@sut_tw
کدوم گزینه مقداری *دقیقا* برابر با 0.3 داره؟ (کلاس Decimal از لایبرری decimal ایمپورت شده است)
Final Results
20%
0.1 + 0.2
19%
float(Decimal(0.1) + Decimal(0.2))
20%
float('0.1') + float('0.2')
18%
float(Decimal('0.1') + Decimal('0.2'))
9%
.1 + .2
14%
float(Decimal(.1) + Decimal(.2))
السلام علیک یا قتیل العبرات

عاشورای حسینی تسلیت باد.
طبق گفته دوستان توی نسخه‌های جدید پایچارم نمیشه از اون افزونه تریال ریست استفاده کرد (شاید در اینده اپدیت کنن البته افزونه رو) اما اگه میخواید پایچارمتون رو اپدیت کنید باید از این چیزایی ک تو این لینک هست استفاده کنید برای تریال ریست کردن پایچارمتون

https://gist.github.com/shahadul878/5f33b90e55c1655aee05fa239ec1b978


@raspberry_python
🐍 Python & Raspberry 🐍
کدوم گزینه مقداری *دقیقا* برابر با 0.3 داره؟ (کلاس Decimal از لایبرری decimal ایمپورت شده است)
📸 تحلیل سوال
📀 احتمالا با این مشکل معروف مواجه شدید یا جایی دیدید:
>>> 0.1 + 0.2 == 0.3
False
>>> 0.1 + 0.2
0.30000000000000004
اما چرا این اتفاق میفته؟ بذارید قبل از ورود به اصل مطلب، کمی حساب کتاب عادی انجام بدیم! فرض کنیم مقدار «یک‌هفتادم» رو از شما [در مبنای ۱۰ خودمون!] خواستن، میدونید که یک عدد اعشاری بدست میاد که انتهایی نداره!
0.0142857142857142857...
برای کامپیوتر هم، به همین شکل! منتهی مبنایی که برای کارهای خودش بکار میبره، مبنای ۲ هست. و وقتی اعدادی مثل ۰.۱ («یک‌دهم» در مبنای ده) رو بهش میدید، به یک عدد اعشاری در مبنای ۲ تبدیل میکنه، و عدد حاصل، اینجا هم انتهایی نداره!
0.00011001100110011001...
برای همین، پایتون - مثل خیلی از زبان‌ها - تا یک جایی تعداد ارقام رو حساب میکنه. مثلا برای 0.1 و 0.2:
0.1 -> 0.0001100110011001100110011001100110011001100110011001101

0.2 -> 0.001100110011001100110011001100110011001100110011001101
که وقتی دوباره میخواد توی مبنای ده نشون بده، همچین چیزی میشه و [احتمالا!] همچین چیزی ببینید:
0.1 -> 0.1000000000000000055511151231257827021181583404541015625

0.2 -> 0.200000000000000011102230246251565404236316680908203125
🔭 برای گرفتن این مقدار، می‌تونید از سایت زیر استفاده کنید:
https://www.exploringbinary.com/floating-point-converter/

👈 به همین ترتیب، کار با اعداد اعشاری، ممکن هست که کمی بالا و پایین داشته باشه! که البته تا وقتی که با مقادیر دقیق سر و کار ندارید، مشکل خاصی بوجود نمیاره.
‼️ دقت کنید که پایتون (درواقع: repr)، اعداد رو با تقریب بهتون نشون میده! مثلا وقتی ۰.۱ مینویسید، بعد از تبدیل، مقدار حاصل رو با تقریب ریزی نشون میده. مثلا:
>>> 0.1
0.1
>>> "{:.55f}".format(x)
'0.1000000000000000055511151231257827021181583404541015625'
پس دقت کنید که اکثر مواقع، عدد اعشاری با اندکی بالا و پایین شدن مقدار ذخیره شده؛ اما ممکن هست که بصورت تقریبی نمایش داده بشه، و سعی میکنه تا جای ممکن تقریب بزنه.

اما، اگه خواستیم حساب دقیقی داشته باشیم، تکلیف چیه؟ لایبرری decimal این مشکل رو حل میکنه:
>>> from decimal import Decimal
>>> Decimal('0.1') + Decimal('0.2')
Decimal('0.3')

‼️ حواستون باشه که عدد اعشاری رو در قالب float به Decimal ندید! چون خود اون عدد اعشاری هم، اول توسط پایتون پردازش میشه و باز هم کمی تقریب این وسط بوجود میاد:
>>> Decimal(0.1)
Decimal('0.1000000000000000055511151231257827021181583404541015625')
>>> Decimal(0.2)
Decimal('0.200000000000000011102230246251565404236316680908203125')
برای همین، باید در قالب رشته بدید تا مقدار رو دقیق نگهداره و محاسبه کنه.
⚠️ در گزینه‌ای که به عنوان جواب نهایی تلقی شد، یک ابهام وجود داره! در واقع، هدف از گذاشتن float، یکدست شدن typeها و float شدن بود، اما همچنان یک نکته وجود داره. وقتی که مینویسیم:
float(decimal.Decimal('0.3')) == 0.3
که decimal.Decimal('0.3') دقیقا برابر با حاصل decimal.Decimal('0.1') + decimal.Decimal('0.2') هست، ما True رو دریافت می‌کنیم! و واقعا هم همینطور هست! چون 0.3 در پایتون، در هر دو هست. اما این، همون 0.3 (کسر ۳ بر ۱۰) که ما در دنیای واقعی میشناسیم هست...؟ خیر! این رو ببینید:
>>> f"{0.3:.55f}"
'0.2999999999999999888977697537484345957636833190917968750'
>>> f"{float(decimal.Decimal('0.3')):.55f}"
'0.2999999999999999888977697537484345957636833190917968750'
برابرند، اما نه با اون چیزی که میگفتیم! :)
🙏🏻 از آقای @AmirSoroushh بابت تذکر و توضیحات و راهنمایی‌ها تشکر میکنم.
📕 منابع (برای مطالعه بیشتر و عمیق‌تر توصیه میشه) :
🔗 python3 doc > 3.9.6 > tutorial > 15. Floating Point Arithmetic: Issues and Limitations
🔗 cpython/Lib/_pydecimal.py source code
🔗 language agnostic - Is floating point math broken? - Stack Overflow

🆔 @raspberry_python
https://youtu.be/8r0ACg3iI3k

لامبدا شرایط خطرناکی برای کشورها به لحاظ شیوع کرونا رقم زده است، این واریانت خطرناک، سرایت‌پذیری و قدرت‌گریز از ایمنی بیشتری دارد و اثرگذاری واکسن‌ها را نشانه گرفته است.

به گزارش روز سه‌شنبه ایرنا از دانشگاه علوم پزشکی شهیدبهشتی، دکتر علیرضا ناجی با اشاره به اینکه حذف هفت آمینواسید در جهش واریانت لامبدا چالشی بزرگ پیش روی تست‌های تشخیصی است، افزود: به نظر می‌رسد واریانت لامبدا در حال تبدیل شدن به تهدید جدی جهانی است و تاکنون در ۲۹ کشور وریانت لامبدا شناسایی و ثبت شده است.

وی با تاکید بر اینکه واریانت لامبدا برای اولین بار در کشور پرو شناسایی شد، افزود: این کشور با ثبت ۵۹۶ مرگ در هر صد هزار نفر جمعیت، بالاترین مرگ و میرهای کرونایی را ثبت کرد که از این تعداد مبتلایان، ۹۷ درصد مربوط به واریانت لامبدا است.

استاد دانشگاه علوم پزشکی شهیدبهشتی ادامه داد: لهستان با ثبت ۳۰۷ مرگ کرونایی در روز بعد از کشور پرو رتبه دوم چرخش واریانت لامبدا را به خود اختصاص داده است.

instagram

#کرونا
#لامبدا
#Covid #Lambda #variant
Data types in Python

@raspberry_python
خیلی راست میگه😂😂

@raspberry_python
خروجی کد بالا چیست ؟
@raspberry_python