🐍 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
خروجی کد بالا چیست ؟
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
Forwarded from Python etc
Python 3.7 introduced Development Mode. The mode can be activated with the -X dev argument and it makes the interpreter produce some helpful warnings. For instance:

+ Unclosed files.
+ Unawaited coroutines.
+ Unknown encoding for str.encode (by default, it is unchecked for empty strings).
+ Memory allocation issues.

$ echo 'open("/dev/null")' > tmp.py
$ python3 -X dev tmp.py
tmp.py:1: ResourceWarning: unclosed file <_io.TextIOWrapper name='/dev/null' mode='r' encoding='UTF-8'>
open("/dev/null")
ResourceWarning: Enable tracemalloc to get the object allocation traceback
Machine Learning

@raspberry_python
حرف ها و کاراکتر ها چجوری ذخیره میشن در حافظه ؟ unicode چیه ؟ فرقش با utf-8 چیه ؟ ascii چیه ؟

همونطور که همه شنیدیم کامپیوتر های مرسوم ما در مبنای دو کار میکنن یعنی یا صفر یا یک ، یا خاموش یا روشن... یعنی هر چیزی در مبنای دو هست ، در مبنای دو "ذخیره میشن" ، در مبنای دو انتقال پیدا میکنن و ...

ما یه عدد رو مثلا عدد 14 رو راحت با دانشی که از راهنمایی یا دبیرستان داریم میتونیم به مبنای دو تبدیل کنیم و ذخیره کنیم اما حرف "A" رو چیکار کنیم ؟

اون اوایل گفتن ، راه کار اینکه بیایم یه جدول درست کنیم ، به ازای تک تک حروف انگلیسی( و یه سری symbol ها ، اعداد انگلیسی و کاراکتر های خاص مثل line feed رو اینا ) یه عدد قرار بدیم در واقع map کنیم این ها رو به هم... از طرفی خیلی راحت کل کاراکتر ها تو یک "بایت" از حافظه ذخیره میشن چرا ؟
یه بایت از حافظه میتونه 2 به توان 7 (8 فعلا نه)تا داده رو ذخیره کنه راحت تو خودش ما هم اونقدر کاراکتر نداریم که. یه سری حروف کوچیک و بزرگه انگلیسی هست ، اعداد هم که 10 تاس ، باقیشم symbol ها. کافیه پس. (میدونم 2 به توان 8 هست ولی یه بایت برای کار های دیگه ذخیره میشد، یه سری سیستم ها ignore میکردن و بعد extended ascii اومد و خلاصه کاری نداریم ما 127 تا کافیمون هست.)

آمریکایی ها اومدن یه جدولی درست کردن، اسم این encoding شد ASCII که خیلیم اوکی بود و خوب کار میکرد. اینجوری بود:
0 ----> NUL
1 ----> SOH
...
63 ----> ?
64 ----> @
65 ----> A
66 ----> B
...

بعد کم کم همه کشور ها میخواستن از کامپیوتر استفاده کنن و حروف خودشونو داشته باشن. از طرفی هم نمیشه هرکی برا خودش یه جدول درست کنه ! باید همه با یه استاندارد کار کنن با هم در ارتباط باشن، این شد که یه استانداردی تشکیل شد به اسم unicode که اومد هر کاراکتری که الان میبینید رو تو خودش جا داد ، انگلیسی، فارسی ، چینی ، روسی ، حتی emoji هایی که هستن...

تا اینجا قبول ولی دیگه این حجم که نمیتونن تو 1 بایت ذخیره بشن مثل گذشته ، چیکار کنیم ؟ خب تو چند بایت ذخیره کنیم !!! چیه مشکلش مگه ؟

اول یه مثال ببینیم :
print(ord('س')) —> 1587
با تابع ord میتونید اون عدده یا در اصل code point عه کاراکتر "س" رو بدست بیارید توی جدول unicode ها.

خب بریم ادامه مشکلمون، الان این 1587 از 1 بایت بیشتره ، چند تا بایت نیاز داره تا ذخیره شه؟ دو بایت کافیه:
print(2 ** 16) —> 65536

اوکی تو دو بایت ذخیرش میکنیم ولی حالا چجوری بخونیمش ؟!!؟ کامپیوتر وقتی رسید بهش آیا اینو 2 تا تک بایت ببینه یا جفتشو باهم ببینه ؟ اگه دو تا تک بایت ببینه که کار خراب شده ! چرا ؟ چون به جای اینکه بگه اینا رو هم شدن یه حرف ، میتونه بگه اینا دوتا حرف تک بایتی کنار هم هستن!

یه سری راه کار ارائه شد مثلا گفتن خب ما از اول دیگه تو یه بایت چیزیو ذخیره نمیکنیم، کل جدول unicode چند تاس ؟ ببینیم آخرینش و با چند تا بایت میشه ذخیره کرد، همه رو با اون تعداد بایت ذخیره کنیم. این درسته و جواب هم میده ولی یه مشکل بزرگ داره ! اینکه مثلا عدد کاراکتر A بودش 65 ما اینو تو 1 بایت میتونستیم ذخیره کنیم حالا داریم تو n بایت ذخیره میکنیم باقیش خالیه و این خیلی بده ! پس چیکار کنیم ؟ باید encoding انجام بدیم....

اینجا بود که utf-8 اومد ، گفت که من یه جوری encoding انجام میدم که برای A که یه بایت لازمه همون یه بایت استفاده شه ، برای "س" که دو بایت لازمه دو بایت ذخیره شه ! این خوبه !
بعد utf-8 اومد گفت من با دسته بندی ای که میکنم میگم از این تا این 1 بایت ، از این تا این 2 بایت و ... تا 4 بایت همه رو ذخیره میکنم.
یک بایتی ها برای اینکه backward compatible باشن عینا همون ترتیبی و دارن که ascii داره ، ولی برای بیشتر از یک بایتی ها میاد اولین بایتش رو میگیره چند بیت اولش رو یه رمزی میذاره که با اون به کامپیوتر میفهمونه که مثلا تا دو تا بایت بعدی ای که داری میخونی هم مال منه مال همین کاراکتر هست اینارو با هم بخون نه جدا جدا.
به این صورت:
https://en.wikipedia.org/wiki/UTF-8#Encoding

من سعی کردم یه overview عه کلی بگم خیلی encoding های مختلفی معرفی شد... هرکدوم یه سری ویژگی و مشکلات داشتن حتی جدول های زیادی هم در طول تاریخ بوجود اومد ، ولی الان معروف ترین encoding همون utf8 هست ، چیزی که توی وب و پایتون میبینیم. و معروف ترین استاندارد هم unicode هست.

برای اطلاعات بیشتر به wikipedia سر بزنید.
​​🔰 Flutter & Dart - The Complete Guide [2021 Edition] 🔰

A Complete Guide To The Flutter SDK & Flutter Framework For Building Native iOS And Android Apps

⚠️ Free Download Link:
https://mega.nz/folder/C0BmXZhC#G57vmsZ9ENh-lFUV6j5J5g


@raspberry_python