🔆 ترکیب دیکشنریها با عملگر |
احتمالا قبلا برای ادغام دو دیکشنری از متد update یا روشهای دیگه استفاده میکردی که کد رو شلوغ میکرد. حالا توی پایتون ۳.۹ به بعد، خیلی شیک میتونی با استفاده از عملگر پایپ یا همون | دو تا دیکشنری رو با هم ترکیب کنی. نتیجه یک دیکشنری جدیده که تمام محتویات قبلیها رو داره و خیلی هم سریعتر و خواناتر نوشته شده.
🐍 @python_rd
احتمالا قبلا برای ادغام دو دیکشنری از متد update یا روشهای دیگه استفاده میکردی که کد رو شلوغ میکرد. حالا توی پایتون ۳.۹ به بعد، خیلی شیک میتونی با استفاده از عملگر پایپ یا همون | دو تا دیکشنری رو با هم ترکیب کنی. نتیجه یک دیکشنری جدیده که تمام محتویات قبلیها رو داره و خیلی هم سریعتر و خواناتر نوشته شده.
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
merged = dict1 | dict2
print(merged)
# خروجی: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
🐍 @python_rd
🔆 ۸ سایت رایگان برای تمرین پایتون
🔸 Practice Python:
تمرینهای ساده با پاسخ؛ عالی برای شروع.
🔸PyNative:
کوییز و تمرینهای مرحلهای + اجرای آنلاین.
🔸PyChallenger:
درسهای کوتاه + تمرین داخل مرورگر.
🔸LabEx:
تمرین تعاملی و سناریو محور برای مهارتسازی.
🔸Learn2Code:
تمرینهای سریع بدون نیاز به ثبتنام.
🔸Codewars:
چالشهای الگوریتمی (Kata) سطحبندیشده.
🔸HackerRank:
حل مسئله و آمادگی مصاحبه فنی.
🔸Project Euler:
مسائل ریاضی/محاسباتی برای سطح پیشرفته.
🐍 @python_rd
🔸 Practice Python:
تمرینهای ساده با پاسخ؛ عالی برای شروع.
🔸PyNative:
کوییز و تمرینهای مرحلهای + اجرای آنلاین.
🔸PyChallenger:
درسهای کوتاه + تمرین داخل مرورگر.
🔸LabEx:
تمرین تعاملی و سناریو محور برای مهارتسازی.
🔸Learn2Code:
تمرینهای سریع بدون نیاز به ثبتنام.
🔸Codewars:
چالشهای الگوریتمی (Kata) سطحبندیشده.
🔸HackerRank:
حل مسئله و آمادگی مصاحبه فنی.
🔸Project Euler:
مسائل ریاضی/محاسباتی برای سطح پیشرفته.
🐍 @python_rd
❤1
🔆 با پایتون چی میشه ساخت؟
پایتون فقط یک زبان برنامهنویسی نیست؛ یک جعبهابزار کامل برای ساخت تقریباً هر چیزیه! 🚀
🔹Pandas
برای تحلیل دادهها استفاده میشه.
🔹Scikit-learn
برای پیادهسازی یادگیری ماشین کاربرد داره.
🔹PyTorch
برای یادگیری عمیق و مدلهای هوش مصنوعی عالیه.
🔹TensorFlow
برای ساخت و توسعه مدلهای هوش مصنوعی استفاده میشه.
🔹Django
برای توسعه وبسایتهای حرفهای استفاده میشه.
🔹Flask
برای توسعه وبسایتهای سبک و سریع کاربرد داره.
🔹FastAPI
برای ساخت سریع API مورد استفاده قرار میگیره.
🔹NumPy
برای انجام محاسبات عددی پیچیده استفاده میشه.
🔹Matplotlib
برای مصورسازی دادهها و رسم نمودارها کاربرد داره.
🔹Beautiful Soup
برای وباسکرپینگ و جمعآوری اطلاعات از سایتها استفاده میشه.
🔹OpenCV
برای پردازش تصویر و بینایی ماشین استفاده میشه.
🔹NLTK
برای پردازش زبان طبیعی و متن کاربرد داره.
🔹Streamlit
برای ساخت سریع اپلیکیشنهای هوش مصنوعی استفاده میشه.
🔹Airflow
برای خودکارسازی و مدیریت فرایندها کاربرد داره.
🔹Apache Spark
برای پردازش کلانداده (Big Data) استفاده میشه.
🔹Kivy
برای ساخت اپلیکیشنهای دسکتاپ و موبایل کاربرد داره.
🔹AWS Boto3
برای اتوماسیون و مدیریت خدمات ابری AWS استفاده میشه.
🔹LangChain
برای ساخت ایجنتها و مدلهای هوش مصنوعی پیچیده کاربرد داره.
🔹Selenium
برای اتوماسیون فعالیتهای وب استفاده میشه.
🐍 @python_rd
پایتون فقط یک زبان برنامهنویسی نیست؛ یک جعبهابزار کامل برای ساخت تقریباً هر چیزیه! 🚀
🔹Pandas
برای تحلیل دادهها استفاده میشه.
🔹Scikit-learn
برای پیادهسازی یادگیری ماشین کاربرد داره.
🔹PyTorch
برای یادگیری عمیق و مدلهای هوش مصنوعی عالیه.
🔹TensorFlow
برای ساخت و توسعه مدلهای هوش مصنوعی استفاده میشه.
🔹Django
برای توسعه وبسایتهای حرفهای استفاده میشه.
🔹Flask
برای توسعه وبسایتهای سبک و سریع کاربرد داره.
🔹FastAPI
برای ساخت سریع API مورد استفاده قرار میگیره.
🔹NumPy
برای انجام محاسبات عددی پیچیده استفاده میشه.
🔹Matplotlib
برای مصورسازی دادهها و رسم نمودارها کاربرد داره.
🔹Beautiful Soup
برای وباسکرپینگ و جمعآوری اطلاعات از سایتها استفاده میشه.
🔹OpenCV
برای پردازش تصویر و بینایی ماشین استفاده میشه.
🔹NLTK
برای پردازش زبان طبیعی و متن کاربرد داره.
🔹Streamlit
برای ساخت سریع اپلیکیشنهای هوش مصنوعی استفاده میشه.
🔹Airflow
برای خودکارسازی و مدیریت فرایندها کاربرد داره.
🔹Apache Spark
برای پردازش کلانداده (Big Data) استفاده میشه.
🔹Kivy
برای ساخت اپلیکیشنهای دسکتاپ و موبایل کاربرد داره.
🔹AWS Boto3
برای اتوماسیون و مدیریت خدمات ابری AWS استفاده میشه.
🔹LangChain
برای ساخت ایجنتها و مدلهای هوش مصنوعی پیچیده کاربرد داره.
🔹Selenium
برای اتوماسیون فعالیتهای وب استفاده میشه.
🐍 @python_rd
❤2
This media is not supported in your browser
VIEW IN TELEGRAM
🔆 Insertion Sort
🔹 الگوریتم از عنصر دوم شروع میکنه، هر بار یک عدد رو بهعنوان key برمیداره، اعداد بزرگترِ بخش مرتبشده رو یک خانه به راست شیفت میده و key رو توی جای درستش قرار میده. این کار تا آخر آرایه ادامه پیدا میکنه تا کل لیست مرتب بشه.
کد:
🐍 @python_rd
🔹 الگوریتم از عنصر دوم شروع میکنه، هر بار یک عدد رو بهعنوان key برمیداره، اعداد بزرگترِ بخش مرتبشده رو یک خانه به راست شیفت میده و key رو توی جای درستش قرار میده. این کار تا آخر آرایه ادامه پیدا میکنه تا کل لیست مرتب بشه.
کد:
def insertion_sort(a):
n = len(a)
for i in range(1, n):
key = a[i]
j = i - 1
while j > 0 and a[j - 1] > key:
a[j] = a[j - 1]
j -= 1
a[j] = key
🐍 @python_rd
❤3
🔆 ترفند کوتاه پایتون: برعکس کردن لیست در یک خط
اگه بخوای یه لیست رو برعکس کنی، لازم نیست همیشه از reverse() استفاده کنی. و به جاش میتونی از این روش استفاده کنی:
🔹نکته مهم:
[::-1] یک کپیِ برعکسشده از لیست میسازه و لیست اصلی رو تغییر نمیده. و این تفاوت تو پروژههای واقعی خیلی مهم به درد میخوره، مخصوصا وقتی نخوای داده اصلی دستکاری شه.
🐍 @python_rd
اگه بخوای یه لیست رو برعکس کنی، لازم نیست همیشه از reverse() استفاده کنی. و به جاش میتونی از این روش استفاده کنی:
nums = [1, 2, 3, 4, 5]
reversed_nums = nums[::-1]
print(reversed_nums)
🔹نکته مهم:
[::-1] یک کپیِ برعکسشده از لیست میسازه و لیست اصلی رو تغییر نمیده. و این تفاوت تو پروژههای واقعی خیلی مهم به درد میخوره، مخصوصا وقتی نخوای داده اصلی دستکاری شه.
🐍 @python_rd
🔥4
🔆شمردن تعداد تکرار حروف در رشته
یکی از تمرینهای کاربردی واسه یادگیری دیکشنری تو پایتون، شمردن تعداد تکرار کاراکترها در یک رشته هست.
خروجی:
اگه رشته ما این باشه:
خروجی به این شکل میشه:
چرا از
چون ممکنه کلید هنوز داخل دیکشنری وجود نداشته باشه.
متد
یعنی:
- اگر
- اگر وجود نداشت،
بعد هم
این روش باعث میشه کد:
- تمیزتر باشه
- خواناتر باشه
- از شرطهای اضافه جلوگیری شه
🐍 @python_rd
یکی از تمرینهای کاربردی واسه یادگیری دیکشنری تو پایتون، شمردن تعداد تکرار کاراکترها در یک رشته هست.
text = "python"
result = {}
for ch in text:
result[ch] = result.get(ch, 0) + 1
print(result)
خروجی:
{'p': 1, 'y': 1, 't': 1, 'h': 1, 'o': 1, 'n': 1}اگه رشته ما این باشه:
text = "programming"
خروجی به این شکل میشه:
{'p': 1, 'r': 2, 'o': 1, 'g': 2, 'a': 1, 'm': 2, 'i': 1, 'n': 1}چرا از
get() استفاده کردیم؟چون ممکنه کلید هنوز داخل دیکشنری وجود نداشته باشه.
متد
get() اگه کلید رو پیدا نکنه، یه مقدار پیشفرض برمیگردونه.result.get(ch, 0)
یعنی:
- اگر
ch وجود داشت، مقدارش رو بده- اگر وجود نداشت،
0 بدهبعد هم
1 واحد بهش اضافه میکنیم.این روش باعث میشه کد:
- تمیزتر باشه
- خواناتر باشه
- از شرطهای اضافه جلوگیری شه
🐍 @python_rd
❤4👏1
🔆 enumerate()
تو پایتون به چه درد میخوره؟
🔹وقتی میخوای هم شمارهی آیتم رو داشته باشی، هم خود مقدار رو، لازم نیست با
خودت دردسر درست کنی.
تابع
این کار رو خیلی تمیز انجام میده.
🔹مثال:
🔹خروجی:
🔹اگر بخوای شمارش از 1 شروع بشه هم میتونی از آرگومان دوم استفاده کنی:
🔹خروجی:
🔹چرا مهمه؟
- کدت تمیزتر میشه
- خوانایی بالاتر میره
- از range(len(...)) بهتر و پایتونیکتره
🐍 @python_rd
تو پایتون به چه درد میخوره؟
🔹وقتی میخوای هم شمارهی آیتم رو داشته باشی، هم خود مقدار رو، لازم نیست با
range(len(...))
خودت دردسر درست کنی.
تابع
enumerate()
این کار رو خیلی تمیز انجام میده.
🔹مثال:
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(index, fruit)
🔹خروجی:
0 apple
1 banana
2 cherry
🔹اگر بخوای شمارش از 1 شروع بشه هم میتونی از آرگومان دوم استفاده کنی:
for index, fruit in enumerate(fruits, start=1):
print(index, fruit)
🔹خروجی:
1 apple
2 banana
3 cherry
🔹چرا مهمه؟
- کدت تمیزتر میشه
- خوانایی بالاتر میره
- از range(len(...)) بهتر و پایتونیکتره
🐍 @python_rd
❤6
🔆ساخت پسورد تصادفی با پایتون
🔹با ماژول secrets میتونی پسوردهای تصادفی و امن بسازی. این ماژول برای کارهای امنیتی، انتخاب بهتری نسبت به random محسوب میشه.
🔹هر بار که برنامه اجرا بشه، یک پسورد ۱۲ کاراکتری جدید ساخته میشه.
🐍 @python_rd
🔹با ماژول secrets میتونی پسوردهای تصادفی و امن بسازی. این ماژول برای کارهای امنیتی، انتخاب بهتری نسبت به random محسوب میشه.
import secrets
import string
characters = string.ascii_letters + string.digits + "!@#$%"
password = "".join(
secrets.choice(characters)
for _ in range(12)
)
print(password)
🔹هر بار که برنامه اجرا بشه، یک پسورد ۱۲ کاراکتری جدید ساخته میشه.
a8@Kp2#xQ9Lm
🐍 @python_rd
⚡2
🔆تفاوت == و is در پایتون
🔹توی پایتون، عملگر == مقدار دو متغیر رو مقایسه میکنه؛ اما is بررسی میکنه که آیا هر دو متغیر دقیقاً به یک آبجکت در حافظه اشاره میکنن یا نه.
🔹 خروجی:
🔹 مقدار numbers1 و numbers2 یکسانه، پس نتیجهی == برابر True میشه؛ اما این دو لیست، آبجکتهای جداگانهای هستن، پس نتیجهی is برابر False میشه.
🔹برای مقایسهی معمولی مقادیر از == استفاده کن. کاربرد رایج و درست is، بررسی مقدار None عه:
🐍 @python_rd
🔹توی پایتون، عملگر == مقدار دو متغیر رو مقایسه میکنه؛ اما is بررسی میکنه که آیا هر دو متغیر دقیقاً به یک آبجکت در حافظه اشاره میکنن یا نه.
numbers1 = [1, 2, 3]
numbers2 = [1, 2, 3]
numbers3 = numbers1
print(numbers1 == numbers2)
print(numbers1 is numbers2)
print(numbers1 is numbers3)
🔹 خروجی:
True
False
True
🔹 مقدار numbers1 و numbers2 یکسانه، پس نتیجهی == برابر True میشه؛ اما این دو لیست، آبجکتهای جداگانهای هستن، پس نتیجهی is برابر False میشه.
🔹برای مقایسهی معمولی مقادیر از == استفاده کن. کاربرد رایج و درست is، بررسی مقدار None عه:
if result is None:
print("مقداری وجود ندارد")
🐍 @python_rd
🔥4❤1
🔆 جستجوی سریعتر با ترفند Set
🔹 چرا پایتون وقتی لیستهات بزرگ میشن کند میشه؟ چون وقتی مینویسی if item in my_list پایتون مجبوره از اولِ لیست تا اون آیتم رو دونه دونه بگرده، حالا اگه لیستت بزرگ باشه، فاجعهست! برای اینکه این مشکل رو حل کنی، لیستت رو به set تبدیل کن. توی ستها، پایتون از مکانیزم Hash استفاده میکنه و عملاً در زمان صفر پیداش میکنه. اینطوری:
🔹 تفاوتش فقط توی همین آکولاد {} هست، اما سرعت اجرای کدت رو وحشتناک میبره بالا. این یعنی کدِ بهینهتر بدون درگیریهای پیچیده.
🐍 @python_rd
🔹 چرا پایتون وقتی لیستهات بزرگ میشن کند میشه؟ چون وقتی مینویسی if item in my_list پایتون مجبوره از اولِ لیست تا اون آیتم رو دونه دونه بگرده، حالا اگه لیستت بزرگ باشه، فاجعهست! برای اینکه این مشکل رو حل کنی، لیستت رو به set تبدیل کن. توی ستها، پایتون از مکانیزم Hash استفاده میکنه و عملاً در زمان صفر پیداش میکنه. اینطوری:
# کد کند (جستجوی خطی)
search_list = [1, 2, 3, 4, 5, ...]
if 500 in search_list: # کلی زمان میبره
pass
# کد سریع (جستجوی هشی)
search_set = {1, 2, 3, 4, 5, ...}
if 500 in search_set: # در یک لحظه پیدا میکنه
pass
🔹 تفاوتش فقط توی همین آکولاد {} هست، اما سرعت اجرای کدت رو وحشتناک میبره بالا. این یعنی کدِ بهینهتر بدون درگیریهای پیچیده.
🐍 @python_rd
🔥3
🔆 قاتل N+1 در کوئریهای جنگو
🔹 بزرگترین اشتباه توی جنگو، کوئری زدن داخل حلقهست. تصور کن ۱۰۰ تا پست داری و میخوای اسم نویسنده هرکدوم رو چاپ کنی. اگه بنویسی
🔹همین تغییر کوچک، تعداد کوئریها رو از ۱۰۰ تا به فقط ۱ دونه کاهش میده و سرعت لود صفحه رو توی جنگو به کل تغییر میده.
🐍 @python_rd
🔹 بزرگترین اشتباه توی جنگو، کوئری زدن داخل حلقهست. تصور کن ۱۰۰ تا پست داری و میخوای اسم نویسنده هرکدوم رو چاپ کنی. اگه بنویسی
posts = Post.objects.all() و بعد توی حلقه صداش بزنی، جنگو برای هر پست یه کوئری جداگانه به دیتابیس میفرسته! این یعنی ۱۰۰ تا کوئری اضافه و مرگِ سرعت سایت. راه حلش select_related هست که همه رو توی یک کوئریِ "JOIN" میاره. اینطوری مثال بزنیم:# کد بد (تعداد زیادی کوئری به دیتابیس)
posts = Post.objects.all()
for post in posts:
print(post.author.name)
# کد بهینه (فقط ۱ کوئری به دیتابیس)
posts = Post.objects.select_related('author').all()
for post in posts:
print(post.author.name)
🔹همین تغییر کوچک، تعداد کوئریها رو از ۱۰۰ تا به فقط ۱ دونه کاهش میده و سرعت لود صفحه رو توی جنگو به کل تغییر میده.
🐍 @python_rd
❤4🔥1
🔆 تا حالا برای پیمایش همزمان دو لیست از
پایتون یه راه تمیزتر داره:
🔹با
🔹کد کمتر، خوانایی بیشتر، حرفهایتر.
🐍 @pyrhon_rd
range() استفاده کردی؟ پایتون یه راه تمیزتر داره:
zip()🔹با
zip میتونی آیتمهای دو لیست رو همزمان بگیری و کدت خیلی خواناتر بشه:names = ["Ali", "Sara", "Reza"]
scores = [18, 20, 15]
for name, score in zip(names, scores):
print(name, score)
🔹کد کمتر، خوانایی بیشتر، حرفهایتر.
🐍 @pyrhon_rd
🔥2👍1
🔆 معمولاً وقتی از تابع استاندارد
🔹این یعنی اگه یه دیتای مهم توی اون آیتمهای اضافی باشه، برنامه بدون اینکه هیچ خطایی بده، اون بخش رو حذف میکنه و ممکنه توی محاسباتت باگ عجیبی پیدا کنی که نفهمی از کجا اومده.
🔹استفاده از پارامتر
🔹این یه مثال ساده برای درک بهترش:
🔹به جای اینکه برنامت بیسروصدا غلط کار کنه، با این روش ترجیح میدی برنامه متوقف بشه تا بری و دیتای ناقص رو اصلاح کنی. این دقیقاً همون چیزیه که کدتو امنتر و قابلاطمینانتر میکنه.
🐍 @python_rd
zip استفاده میکنی، پایتون بدون هیچ اخطاری لیست کوتاهتر رو ملاک قرار میده و اضافههای لیست بلندتر رو کلاً نادیده میگیره.🔹این یعنی اگه یه دیتای مهم توی اون آیتمهای اضافی باشه، برنامه بدون اینکه هیچ خطایی بده، اون بخش رو حذف میکنه و ممکنه توی محاسباتت باگ عجیبی پیدا کنی که نفهمی از کجا اومده.
🔹استفاده از پارامتر
strict=True توی پایتون، مثل یه نگهبان سختگیر عمل میکنه و اگه طول لیستها با هم یکی نباشه، بلافاصله یه ValueError پرتاب میکنه تا همون لحظه متوجه بشی دیتات مشکل داره.🔹این یه مثال ساده برای درک بهترش:
# بدون strict: دادهی ۳۰ نادیده گرفته میشه و برنامه هیچی نمیگه
names = ['Ali', 'Reza']
ages = [20, 25, 30]
for n, a in zip(names, ages):
print(n, a)
# با strict: پایتون متوجه نابرابری میشه و ارور میده
# این کار کمک میکنه قبل از اینکه دیتای غلط پردازش بشه، متوقفش کنی
for n, a in zip(names, ages, strict=True):
print(n, a)
🔹به جای اینکه برنامت بیسروصدا غلط کار کنه، با این روش ترجیح میدی برنامه متوقف بشه تا بری و دیتای ناقص رو اصلاح کنی. این دقیقاً همون چیزیه که کدتو امنتر و قابلاطمینانتر میکنه.
🐍 @python_rd
👍1
🔆میدونستی
🔹یه قابلیت فوقالعاده کاربردی که خیلیها ازش غافل میمونن، استفاده از
🔹این یعنی دیگه نیازی به متغیرهای اضافه برای چک کردن پیدا شدن یا نشدن آیتمها نداری و کدت حسابی تمیز و حرفهای میشه.
🔹فرض کن یه لیست داری و میخوای ببینی عددی مثل ۵ توش هست یا نه. به جای تعریف کردن یه پرچم یا
🔹همونطور که میبینی، چون توی لیست خبری از ۵ نیست، پایتون بدون هیچ شرط اضافهای میفهمه که باید بره سراغ بلاک
🐍 @python_rd
else توی پایتون فقط مال if نیست؟🔹یه قابلیت فوقالعاده کاربردی که خیلیها ازش غافل میمونن، استفاده از
else بعد از حلقههای for یا while هست. این بلوک فقط و فقط زمانی اجرا میشه که حلقه به صورت کامل و عادی تموم بشه و با دستور break وسطش متوقف نشده باشه.🔹این یعنی دیگه نیازی به متغیرهای اضافه برای چک کردن پیدا شدن یا نشدن آیتمها نداری و کدت حسابی تمیز و حرفهای میشه.
🔹فرض کن یه لیست داری و میخوای ببینی عددی مثل ۵ توش هست یا نه. به جای تعریف کردن یه پرچم یا
flag، میتونی بنویسی که اگه حلقه تموم شد و خبری از عدد نبود، پیام «پیدا نشد» رو چاپ کنه.numbers = [1, 2, 3, 4]
for num in numbers:
if num == 5:
print("عدد ۵ پیدا شد!")
break
else:
print("عدد ۵ توی لیست وجود نداره.")
🔹همونطور که میبینی، چون توی لیست خبری از ۵ نیست، پایتون بدون هیچ شرط اضافهای میفهمه که باید بره سراغ بلاک
else و اون رو اجرا کنه.🐍 @python_rd
🔆 سه تا پروژه خیلی خفن پایتونی
🔹Virtual Steering
یعنی با حرکت دست بتونی فرمون ماشین رو توی بازی کنترل کنی، انگار یه فرمون مجازی جلوی دستته.
🔹 Virtual Portals
یه پروژه الهامگرفته از دکتر استرنج که با حرکات دست، پورتالهای مجازی میسازی.
🔹Virtual Keyboard & Mouse
یعنی کیبورد و مووس مجازی که برای تایپ و کنترل سیستم استفاده میشه.
🔹اگر بخوام خیلی ساده بگم، منظور از این پروژهها اینه که بهجای ابزارهای فیزیکی، با حرکت دست و بینایی ماشین میشه سیستم رو کنترل کرد.
🔹یعنی ترکیبی از پایتون، هوش مصنوعی و پردازش تصویر برای ساخت تجربههای تعاملی و آیندهمحور.
🐍 @python_rd
🔹Virtual Steering
یعنی با حرکت دست بتونی فرمون ماشین رو توی بازی کنترل کنی، انگار یه فرمون مجازی جلوی دستته.
🔹 Virtual Portals
یه پروژه الهامگرفته از دکتر استرنج که با حرکات دست، پورتالهای مجازی میسازی.
🔹Virtual Keyboard & Mouse
یعنی کیبورد و مووس مجازی که برای تایپ و کنترل سیستم استفاده میشه.
🔹اگر بخوام خیلی ساده بگم، منظور از این پروژهها اینه که بهجای ابزارهای فیزیکی، با حرکت دست و بینایی ماشین میشه سیستم رو کنترل کرد.
🔹یعنی ترکیبی از پایتون، هوش مصنوعی و پردازش تصویر برای ساخت تجربههای تعاملی و آیندهمحور.
🐍 @python_rd
👍1
🔹یه روش خیلی کاربردی توی پایتون اینه که بهجای چندتا شرط پشتسرهم، از دیکشنری برای مدیریت حالتها استفاده کنی.
🔹مثلاً وقتی قراره بر اساس نقش کاربر یه خروجی متفاوت بدی، بهجای if/elifهای زیاد میتونی نقشها رو داخل دیکشنری نگه داری.
🔹این کار هم کدت رو تمیزتر میکنه، هم توسعهدادنش راحتتره.
🐍 @python_rd
🔹مثلاً وقتی قراره بر اساس نقش کاربر یه خروجی متفاوت بدی، بهجای if/elifهای زیاد میتونی نقشها رو داخل دیکشنری نگه داری.
🔹این کار هم کدت رو تمیزتر میکنه، هم توسعهدادنش راحتتره.
roles = {
"admin": "full access",
"editor": "edit access",
"user": "read access"
}
user_role = "editor"
print(roles.get(user_role, "no access"))🐍 @python_rd
🔥2
🔆 یه نکته خیلی کاربردی دیگه اینه که توی شرطها لازم نیست همیشه بنویسی:
🔹میتونی خیلی تمیزتر بنویسی:
🔹 و برای حالت برعکس:
🔹 چون لیست خالی، رشته خالی، دیکشنری خالی و خیلی از آبجکتهای خالی در پایتون False محسوب میشن.
🐍 @python_rd
if len(items) == 0:
🔹میتونی خیلی تمیزتر بنویسی:
if not items:
🔹 و برای حالت برعکس:
if items:
🔹 چون لیست خالی، رشته خالی، دیکشنری خالی و خیلی از آبجکتهای خالی در پایتون False محسوب میشن.
🐍 @python_rd
👍9
🔆 یه منبع خوب برای تمرین پایتون
🔹 یه سر به Pynative.com بزن. این سایت بخش Python Exercises رو داره که تمرینهاش رو خیلی مرتب و موضوعی دستهبندی کرده؛ از Loops و Input/Output گرفته تا Functions و Lists.
🔹چیزی که این سایت رو کاربردیتر میکنه اینه که هر تمرین فقط یه صورتمسئله ساده نیست، بلکه توضیح کامل مسئله، ورودی و خروجی مورد انتظار، بخش Hint برای راهنمایی، و در نهایت Solution همراه با کد هم داره. همین باعث میشه برای کسایی که تازه دارن پایتون یاد میگیرن، یه منبع خیلی خوب برای تمرین عملی و تقویت مهارت برنامهنویسی باشه.
🐍 @python_rd
🔹 یه سر به Pynative.com بزن. این سایت بخش Python Exercises رو داره که تمرینهاش رو خیلی مرتب و موضوعی دستهبندی کرده؛ از Loops و Input/Output گرفته تا Functions و Lists.
🔹چیزی که این سایت رو کاربردیتر میکنه اینه که هر تمرین فقط یه صورتمسئله ساده نیست، بلکه توضیح کامل مسئله، ورودی و خروجی مورد انتظار، بخش Hint برای راهنمایی، و در نهایت Solution همراه با کد هم داره. همین باعث میشه برای کسایی که تازه دارن پایتون یاد میگیرن، یه منبع خیلی خوب برای تمرین عملی و تقویت مهارت برنامهنویسی باشه.
🐍 @python_rd
❤1