Convert CSV to PDF file in python
https://www.pythonforbeginners.com/basics/convert-csv-to-pdf-file-in-python
@raspberry_python
https://www.pythonforbeginners.com/basics/convert-csv-to-pdf-file-in-python
@raspberry_python
Object Detection Using Mask R-CNN with TensorFlow 2.0 and Keras.
https://blog.paperspace.com/mask-r-cnn-tensorflow-2-0-keras/
Mask_RCNN project: https://github.com/matterport/Mask_RCNN
@raspberry_python
https://blog.paperspace.com/mask-r-cnn-tensorflow-2-0-keras/
Mask_RCNN project: https://github.com/matterport/Mask_RCNN
@raspberry_python
Paperspace by DigitalOcean Blog
Training Mask R-CNN with TensorFlow 2.0 and Keras | Paperspace Blog
This tutorial shows how to adapt the Mask R-CNN GitHub project for training and inference using TensorFlow 2.0 and Keras.
Forwarded from Persian python (Mohammad)
سلام دوستان وقتتون بخیر
ویدیو پلی لیست FastApi آپلود شد
قسمت : 28
موضوع : قسمت دوم پروژه
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنید
https://youtu.be/Ni1oyaD8CZw
فایل های این ویدیو در گیت هاب :
https://github.com/persianpython/FastApi
ویدیو پلی لیست FastApi آپلود شد
قسمت : 28
موضوع : قسمت دوم پروژه
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنید
https://youtu.be/Ni1oyaD8CZw
فایل های این ویدیو در گیت هاب :
https://github.com/persianpython/FastApi
YouTube
آموزش Api نویس با FastApi Python ( Instagram قسمت دوم پروژه )
سلام به کانال یوتیوبی پرشین پایتون خوش آمدید
FAST API
یک وب میکرو فریمورک پایتون هست که با شعار عملکرد بالا
(high performance)
، یادگیری آسان ، کد زنی سریع و آماده برای تولید توسط آقای سباستین رامیرز تولید شده
ویژگی های اصلی این فریمورک :
سرعت : عملکرد…
FAST API
یک وب میکرو فریمورک پایتون هست که با شعار عملکرد بالا
(high performance)
، یادگیری آسان ، کد زنی سریع و آماده برای تولید توسط آقای سباستین رامیرز تولید شده
ویژگی های اصلی این فریمورک :
سرعت : عملکرد…
🐍 Python & Raspberry 🐍
گزینه درست رو حدس بزن 🪐😉
سلامممی گرم به همه اعضای گروه
امیدوارم تا الان یه شب عالی و درجه یکی رو گذرونده بوده باشید😉😉😉
بریم سراغ جواب این تمرین
اگر آماده اید بزنید بریم 😍👩🏻💻👩🏻💻👩🏻💻
خب متن سوالمون چیه؟؟
ازمون میخواد که مقدار a,b,c رو تو خروجی بدست بیاریم.
قدم به قدم با هم بریم جلو تا مقدار نهایی هر سه متغیر رو بدست بیاریم.
1️⃣a , b ='12'
خط اول میگه : ما دو تا متغیر a,b داریم که مقدارشون برابر شده با '12'
(⚠️دقت کن که '12' از نوع رشته است)
پس میتونیم unpack کنیم.
(یادآوری :اگر هنوز نمیدونی unpack چیه، لینک پست هایی که در رابطه با unpack هست رو برات میذارم ، مطالعه اشون کن ، درکشون کن و اگر برات سوال شد ازمون بپرس.
https://t.me/raspberry_python/2334
https://t.me/raspberry_python/2508
)
خب بریم سراغ ادامه جواب.
گفتیم که میاد از روش unpack استفاده میکنه. خب وقتی از unpack استفاده میکنه هر کدوم از آیتم های رشته '12' به یکی از متغیرهامون اختصاص داده میشه: یعنی داریم:
2️⃣ a = 1
b = 2
خب میریم خط بعدی، خط بعدی هم مثل خط اول میشه، چون رشته است پس unpack میشه و هر کدوم از رشته '34' به یکی از متغیرهای b و c اختصاص داده میشه . یعنی داریم:
3️⃣b = 3
c = 4
خب الان سوال اینجاست که برای b دو تا مقدار 3 و 4 رو داریم کدوم رو حساب میکنه . خب جوابش معلومه، مقدار آخری رو owerwrite میکنه.
پس میشه:
4️⃣ a = 1 b = 3 c = 4
جواب صحیح میشه گزینه c
فقط یه نکته کوچولو بگم ☺️:
وقتی از typeاستفاده کنی نوع هر سه تا متغیر رو بهت str برمیگردونه . مقادیر خروجی نوعشون رشته است نه int
و تامااااااااااااااااااامممممممممممم😇🤠🤠🤠
و سخن آخر:
🌺🌺🌺🌺🌺🌺
Start where you are. Use what you have. Do what you can,don’t stop ever😇😇
از جایی که هستی شروع کن ، از چیزایی که داری استفاده کن ، کاری رو که می تونی بکن اما هرگز توقف نکن .❤️☺️✌🏻
🌺🌺🌺🌺🌺🌺
✒️ Shaghayegh
@raspberry_python
امیدوارم تا الان یه شب عالی و درجه یکی رو گذرونده بوده باشید😉😉😉
بریم سراغ جواب این تمرین
اگر آماده اید بزنید بریم 😍👩🏻💻👩🏻💻👩🏻💻
خب متن سوالمون چیه؟؟
ازمون میخواد که مقدار a,b,c رو تو خروجی بدست بیاریم.
قدم به قدم با هم بریم جلو تا مقدار نهایی هر سه متغیر رو بدست بیاریم.
1️⃣a , b ='12'
خط اول میگه : ما دو تا متغیر a,b داریم که مقدارشون برابر شده با '12'
(⚠️دقت کن که '12' از نوع رشته است)
پس میتونیم unpack کنیم.
(یادآوری :اگر هنوز نمیدونی unpack چیه، لینک پست هایی که در رابطه با unpack هست رو برات میذارم ، مطالعه اشون کن ، درکشون کن و اگر برات سوال شد ازمون بپرس.
https://t.me/raspberry_python/2334
https://t.me/raspberry_python/2508
)
خب بریم سراغ ادامه جواب.
گفتیم که میاد از روش unpack استفاده میکنه. خب وقتی از unpack استفاده میکنه هر کدوم از آیتم های رشته '12' به یکی از متغیرهامون اختصاص داده میشه: یعنی داریم:
2️⃣ a = 1
b = 2
خب میریم خط بعدی، خط بعدی هم مثل خط اول میشه، چون رشته است پس unpack میشه و هر کدوم از رشته '34' به یکی از متغیرهای b و c اختصاص داده میشه . یعنی داریم:
3️⃣b = 3
c = 4
خب الان سوال اینجاست که برای b دو تا مقدار 3 و 4 رو داریم کدوم رو حساب میکنه . خب جوابش معلومه، مقدار آخری رو owerwrite میکنه.
پس میشه:
4️⃣ a = 1 b = 3 c = 4
جواب صحیح میشه گزینه c
فقط یه نکته کوچولو بگم ☺️:
وقتی از typeاستفاده کنی نوع هر سه تا متغیر رو بهت str برمیگردونه . مقادیر خروجی نوعشون رشته است نه int
و تامااااااااااااااااااامممممممممممم😇🤠🤠🤠
و سخن آخر:
🌺🌺🌺🌺🌺🌺
Start where you are. Use what you have. Do what you can,don’t stop ever😇😇
از جایی که هستی شروع کن ، از چیزایی که داری استفاده کن ، کاری رو که می تونی بکن اما هرگز توقف نکن .❤️☺️✌🏻
🌺🌺🌺🌺🌺🌺
✒️ Shaghayegh
@raspberry_python
Telegram
🐍 Python & Raspberry 🐍
unpacking lists in python
@raspberrypiforall
@raspberrypiforall
Apply constraints with 'assert' in Python
https://rednafi.github.io/reflections/apply-constraints-with-assert-in-python.html
@ raspberry_python
https://rednafi.github.io/reflections/apply-constraints-with-assert-in-python.html
@ raspberry_python
🕸 PyWebCopy
PyWebCopy is a free tool for copying full or partial websites locally onto your hard-disk for offline viewing.
⚙ Github: https://github.com/rajatomar788/pywebcopy
🗒 Docs: https://pypi.org/project/pywebcopy/
@raspberry_python
PyWebCopy is a free tool for copying full or partial websites locally onto your hard-disk for offline viewing.
⚙ Github: https://github.com/rajatomar788/pywebcopy
🗒 Docs: https://pypi.org/project/pywebcopy/
@raspberry_python
Forwarded from Django Expert (Majid A.M)
✔️ کارجو
سلام و وقت بهخیر
علی موحدی هستم و بهدنبال موقعیت شغلی توسعهدهندۀ جنگو (جونیور) هستم.
آماده کار در موقعیتهای شغلی دورکاری
برنامه نویس وب با بیش از سه سال کار تخصصی در حوزه پایتون/جنگو با توانایی ارتباطی بالا و کار در شرایط سخت
تجارب:
چهار پروژۀ نمونه روی گیتهاب و سایت شخصی خودم گذاشتم که میتونید ملاحظه
کنید.
ابزارها/تکنولوژیهایی که باهاشون کار کردم (از بعضیها خیلی مختصر استفاده کردم) :
Python
Django
DRF
JWT Auth.
git
Docker
Postgresql
Celery
Redis
linux
html, css
سن : 23
شهر : کرمان
محصل : کارشناسی مهندسی کامپیوتر
ایمیل : alimoovh@gmail.com
گیت هاب :
github.com/alimovahedii
در سایتم توضیحات بیشتری دربارۀ خودم دادم و همچنین نمونه کارهارو میتونید مشاهده کنید.
https://alimovhedi.ir
#استخدام #کارجو
〰〰〰〰〰〰
© @DjangoEx
سلام و وقت بهخیر
علی موحدی هستم و بهدنبال موقعیت شغلی توسعهدهندۀ جنگو (جونیور) هستم.
آماده کار در موقعیتهای شغلی دورکاری
برنامه نویس وب با بیش از سه سال کار تخصصی در حوزه پایتون/جنگو با توانایی ارتباطی بالا و کار در شرایط سخت
تجارب:
چهار پروژۀ نمونه روی گیتهاب و سایت شخصی خودم گذاشتم که میتونید ملاحظه
کنید.
ابزارها/تکنولوژیهایی که باهاشون کار کردم (از بعضیها خیلی مختصر استفاده کردم) :
Python
Django
DRF
JWT Auth.
git
Docker
Postgresql
Celery
Redis
linux
html, css
سن : 23
شهر : کرمان
محصل : کارشناسی مهندسی کامپیوتر
ایمیل : alimoovh@gmail.com
گیت هاب :
github.com/alimovahedii
در سایتم توضیحات بیشتری دربارۀ خودم دادم و همچنین نمونه کارهارو میتونید مشاهده کنید.
https://alimovhedi.ir
#استخدام #کارجو
〰〰〰〰〰〰
© @DjangoEx
Forwarded from Python Socket (Payam Haddad)
دوستان عزیز، سلام.
امروز Eventای برگزار شد از سوی SANS Cyber Defense با عنوان :
Managing Python on Windows
اگر تمایل دارید می توانید از لینک زیر محتوای ویدئویی این رویداد را دانلود کنین:
https://www.linkedin.com/video/event/urn:li:ugcPost:6945016552773623808/
@pythonsocket
امروز Eventای برگزار شد از سوی SANS Cyber Defense با عنوان :
Managing Python on Windows
اگر تمایل دارید می توانید از لینک زیر محتوای ویدئویی این رویداد را دانلود کنین:
https://www.linkedin.com/video/event/urn:li:ugcPost:6945016552773623808/
@pythonsocket
Linkedin
Sign Up | LinkedIn
500 million+ members | Manage your professional identity. Build and engage with your professional network. Access knowledge, insights and opportunities.
🔰 11GB THE COLLECTION OF MOST VALUABLE & PREMIUM COURSES ABSOLUTELY FREE 🔰
Mix Categorized Courses of :-
Python 3
C Programming
C++
Graphics Design
Software Testing
JavaScript
Vue.js
Cyber Security
Node.js
Video Editing
SEO
Affiliate Marketing
HTML CSS
Django
Laravel
MySQL Database
Wordpress Beginners
Game Designing
AR VR
Java with OOP
WordPress Theme Development
Game Development
Angular 8
React
Digital Marketing
Qt 5 C++
Data Structure and Algorithm
Geometry
3D Animation Maya
App Development
Access from here
https://drive.google.com/drive/mobile/folders/1SM_cG-az5IHE1gXJSn_p8S7KqP6V-PCQ
@raspberry_python
Mix Categorized Courses of :-
Python 3
C Programming
C++
Graphics Design
Software Testing
JavaScript
Vue.js
Cyber Security
Node.js
Video Editing
SEO
Affiliate Marketing
HTML CSS
Django
Laravel
MySQL Database
Wordpress Beginners
Game Designing
AR VR
Java with OOP
WordPress Theme Development
Game Development
Angular 8
React
Digital Marketing
Qt 5 C++
Data Structure and Algorithm
Geometry
3D Animation Maya
App Development
Access from here
https://drive.google.com/drive/mobile/folders/1SM_cG-az5IHE1gXJSn_p8S7KqP6V-PCQ
@raspberry_python
✨ A modern and customizable python UIlibrary based on Tkinter
https://github.com/TomSchimansky/CustomTkinter
https://github.com/TomSchimansky/CustomTkinter/wiki
@raspberry_python
https://github.com/TomSchimansky/CustomTkinter
https://github.com/TomSchimansky/CustomTkinter/wiki
@raspberry_python
Forwarded from Persian python (Mohammad)
سلام دوستان وقتتون بخیر
ویدیو پلی لیست Pyqt6 آپلود شد
قسمت : 38
موضوع : QML : Button & Handling Event - Call Function - Label - Row - Column
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنید
https://youtu.be/USpO3Kvngjk
فایل های این ویدیو در گیت هاب:
https://github.com/persianpython/Pyqt6
ویدیو پلی لیست Pyqt6 آپلود شد
قسمت : 38
موضوع : QML : Button & Handling Event - Call Function - Label - Row - Column
امیدوارم که مفید بوده باشه
میتونین از لینک زیر تماشا کنید
https://youtu.be/USpO3Kvngjk
فایل های این ویدیو در گیت هاب:
https://github.com/persianpython/Pyqt6
YouTube
قسمت سی و هشتم آموزش Pyqt6 ( QML : Button & Handling Event - Call Function - Label - Row - Column )
سلام به کانال یوتیوبی پرشین پایتون خوش آمدید
PyQt که در اينجا به اختصار پاي کيوت صداش مي کنم ابزاري هست براي استفاده از Qt در پايتون. Qt فريم ورکي براي ايجاد رابط گرافيکي (GUI) است که توسط شرکت نوکيا براي بکار گيري در محصولات نرم افزاري اين شرکت چه براي…
PyQt که در اينجا به اختصار پاي کيوت صداش مي کنم ابزاري هست براي استفاده از Qt در پايتون. Qt فريم ورکي براي ايجاد رابط گرافيکي (GUI) است که توسط شرکت نوکيا براي بکار گيري در محصولات نرم افزاري اين شرکت چه براي…
Organize Python code like a PRO 🐍📦
پروژهتون رو مثل یک حرفهای ساختاربندی و مرتب کنید.
از اونجایی که پایتون یک زبان خیلی منعطف هست (مثل جاوا نیست که وقتی یه فایل جاوا درست میکنید باید یه کلاسِ پابلیک به همون اسم داخلش باشه) شما این اجازه رو دارید که کل کد یک پروژه رو توی یک فایل، و یا هر تابع رو توی یک فایل جدا بنویسید 😑🥴
با این مقاله یاد بگیرید که چگونه پروژهتون رو درست ساختار بندی کنید.
https://guicommits.com/organize-python-code-like-a-pro/
#M4hdi
〰〰〰〰〰〰
©@raspberry_python
پروژهتون رو مثل یک حرفهای ساختاربندی و مرتب کنید.
از اونجایی که پایتون یک زبان خیلی منعطف هست (مثل جاوا نیست که وقتی یه فایل جاوا درست میکنید باید یه کلاسِ پابلیک به همون اسم داخلش باشه) شما این اجازه رو دارید که کل کد یک پروژه رو توی یک فایل، و یا هر تابع رو توی یک فایل جدا بنویسید 😑🥴
با این مقاله یاد بگیرید که چگونه پروژهتون رو درست ساختار بندی کنید.
https://guicommits.com/organize-python-code-like-a-pro/
#M4hdi
〰〰〰〰〰〰
©@raspberry_python
✔️ سوال.
بهترین راه برای فهمیدن اینکه یه آبجکت hashable هست، چیه؟!
جوابتون رو کامنت کنید.
پاسخش رو فردا میگذارم.
#M4hdi
〰️〰️〰️〰️〰️〰️
©@raspberry_python
بهترین راه برای فهمیدن اینکه یه آبجکت hashable هست، چیه؟!
جوابتون رو کامنت کنید.
پاسخش رو فردا میگذارم.
#M4hdi
〰️〰️〰️〰️〰️〰️
©@raspberry_python
خب شاید پیش خودتون بگید، آبجکتی که داندر hash داشته باشه حتما hashable عه دیگه، این داندر رو داره و جوابتون این باشه:
اول یه چیز پایهای بگیم.
کلاس آبجکت object پایهای ترین base class در پایتونه و اینکه میگن همهچیز در پایتون آبجکته، یکی از دلیلاش اینه. هر چیزی که فکرش رو بکنید از object ارث میبره.
این کلاس کلی داندر متد داره و از قضا دو تا داندر که در این مطلب برای ما مهم هستن رو هم با هم داره
داندر eq -> برای چک کردن تساوی دو تا آبجکت
نکتهی داندر eq
رفتار پیشفرض داندر eq به این صورته که میان آیدیهای دو آبجکت رو باهم مقایسه میکنه. یعنی اگه اون رو override نکرده باشید و بخواید آبجکتهاتون رو با هم مقایسه کنید، وقتی جواب True میگیرید که دو تا آبجکت در واقع یک آبجکت باشن. دقیقا همون کاری که is انجام میده.
خب میاید داندر eq رو جوری که میخواید اورراید میکنید
اما 😁
وقتی این کار رو کردید، اتفاقی که میوفته اینه که مقدار داندر hash شما None میشه و آبجکت شما دیگه hashable نیست
این یعنی دیگه نمیتونید توی دیکشنری و ست بذاریدش و ....
این در حالیه که آبجکت شما همچنان داندر hash داره ولی hashable نیست.
این توضیحات میشن دلیل اینکه چرا اون شرط باگ داره.
اما راهحل چیه؟
خب شاید بیاید بگید بجای اینکه چک کنیم هست، چک میکنیم که None نباشه
It is easier to ask forgiveness than permission
بالاتر گفتیم اگه داندر eq رو اورراید کنیم آبجکت ما دیگه hashable نیست و توی ست و دیکشنری نمیتونیم استفاده کنیم. من میخوام اون ور اورراید کنم و بازم hashable باشه 😒😒
خب جوابش سادهست
شما باید داندر hash رو هم اورراید کنید و یه مقدار int برگردونید
نکتهای که هست و باید بهش توجه داشته باشید اینه که باید بتونید یه عددی تولید کنید که تکراری شدنش سخت باشه (اگه تکراری بشه اشکالی نداره) و به ویژگیهای آبجکت شما وابسته هم باشه (حتما قرار نیست به ویژگیهاش وابسته باشه، اما اگه باشه، اون نکتهی قبلی راحتتر بدست میاد)
برای مثال
اما اگه اسم یکسان هم بدید، مشکلی نیست یه قانونی هست توی بحث hash که میگه:
اگر دو آبجکت دقیقا یکسان باشن، (یعنی دو تا رفرنس از یک آبجکت رو داشته باشیم) باید hash یکسانی داشته باشن
اما اگر ما دو تا hash یکسان از دو تا آبجکت داشتیم، الزاما اون دو آبجکت یکی نیستن.
به این حالت که هش یکسانه ولی آبجکتا یکی نیستن، میگن hash collision. که پایتون خودش این رو هندل میکنه
و بحثش در این مقال "دیگر 😮💨" نمیگنجد.
موفق باشید 😁✌️
#M4hdi
〰️〰️〰️〰️〰️〰️〰️
©@raspberry_python
o = obj
if hasattr(o, '__hash__'):
print(f"{o} is hashable")
اما خیر 😁اول یه چیز پایهای بگیم.
کلاس آبجکت object پایهای ترین base class در پایتونه و اینکه میگن همهچیز در پایتون آبجکته، یکی از دلیلاش اینه. هر چیزی که فکرش رو بکنید از object ارث میبره.
این کلاس کلی داندر متد داره و از قضا دو تا داندر که در این مطلب برای ما مهم هستن رو هم با هم داره
داندر eq -> برای چک کردن تساوی دو تا آبجکت
obj1 == obj2داندر hash -> برای برگرداندن مقدار hash آبجکت که از تابع hash میگیریم
hash(obj)وقتی یک کلاسی شما مینویسید:
class Spam:این کلاس به طور خودکار از کلاس آبجکت ارث میبره که تبعا داندر متدها براش resolve میشن، که یعنی، ارثشون میبره، یا اینکه میگرده توی کلاس object پیدا شون میکنه.
pass
نکتهی داندر eq
رفتار پیشفرض داندر eq به این صورته که میان آیدیهای دو آبجکت رو باهم مقایسه میکنه. یعنی اگه اون رو override نکرده باشید و بخواید آبجکتهاتون رو با هم مقایسه کنید، وقتی جواب True میگیرید که دو تا آبجکت در واقع یک آبجکت باشن. دقیقا همون کاری که is انجام میده.
s1 = s2 = Spam()اما شاید چنین رفتاری رو نخواید و جور دیگهای بخوایید که آبجکتهای شما تساویشون چک بشه
s1 == s2 -> True
خب میاید داندر eq رو جوری که میخواید اورراید میکنید
اما 😁
وقتی این کار رو کردید، اتفاقی که میوفته اینه که مقدار داندر hash شما None میشه و آبجکت شما دیگه hashable نیست
این یعنی دیگه نمیتونید توی دیکشنری و ست بذاریدش و ....
این در حالیه که آبجکت شما همچنان داندر hash داره ولی hashable نیست.
این توضیحات میشن دلیل اینکه چرا اون شرط باگ داره.
اما راهحل چیه؟
خب شاید بیاید بگید بجای اینکه چک کنیم هست، چک میکنیم که None نباشه
if o.__hash__ is not None:این تا حدی مشکل رو حل میکنه اما از اونجایی که پایتون یه زبان به شدت داینامیک عه:
...
class Spam:پس بهترین راهحل چیه؟
def __eq__(self): ...
Spam.hash = "Gotcha, Im neither hashable nor None =)"
It is easier to ask forgiveness than permission
try:اما یه سوال بی جواب میمونه!
hash(o)
except TypeError:
print("unhashable")
else:
print("hashable")
بالاتر گفتیم اگه داندر eq رو اورراید کنیم آبجکت ما دیگه hashable نیست و توی ست و دیکشنری نمیتونیم استفاده کنیم. من میخوام اون ور اورراید کنم و بازم hashable باشه 😒😒
خب جوابش سادهست
شما باید داندر hash رو هم اورراید کنید و یه مقدار int برگردونید
نکتهای که هست و باید بهش توجه داشته باشید اینه که باید بتونید یه عددی تولید کنید که تکراری شدنش سخت باشه (اگه تکراری بشه اشکالی نداره) و به ویژگیهای آبجکت شما وابسته هم باشه (حتما قرار نیست به ویژگیهاش وابسته باشه، اما اگه باشه، اون نکتهی قبلی راحتتر بدست میاد)
برای مثال
class Spam:تبعا شما اسامی مختلفی قراره به هر آبجکت که از Spam درست میکنید بدید، و این باعث میشه که hash هر بار فرق کنه
def __init__(self, name):
self.name = name
def __eq__(self):
...
def __hash__(self):
return hash(self.name)
اما اگه اسم یکسان هم بدید، مشکلی نیست یه قانونی هست توی بحث hash که میگه:
اگر دو آبجکت دقیقا یکسان باشن، (یعنی دو تا رفرنس از یک آبجکت رو داشته باشیم) باید hash یکسانی داشته باشن
اما اگر ما دو تا hash یکسان از دو تا آبجکت داشتیم، الزاما اون دو آبجکت یکی نیستن.
به این حالت که هش یکسانه ولی آبجکتا یکی نیستن، میگن hash collision. که پایتون خودش این رو هندل میکنه
و بحثش در این مقال "دیگر 😮💨" نمیگنجد.
موفق باشید 😁✌️
#M4hdi
〰️〰️〰️〰️〰️〰️〰️
©@raspberry_python