برنامه نویسی | Teachify
11.7K subscribers
1.03K photos
420 videos
231 files
654 links
برای موفق شدن 🌱 با این عبارت خداحافظی کن: "باشه فردا"🍃


Admin: @Yousef_Vafaei
Download Telegram
✔️ کاربرد پوشه‌های مختلف در لینوکس

@Teachify | برنامه نویسی
👍16
✔️ بچه ها راستی دقت کردین که سال جدید، سال داکره!!
#fun
@Teachify | برنامه نویسی
🤣15👍2
✔️ یک مثال خوب و مشخص از ارث‌بری در Python:

class Vehicle:
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year

def start(self):
return "The vehicle is starting."

def stop(self):
return "The vehicle is stopping."


class Car(Vehicle):
def __init__(self, make, model, year, color):
super().__init__(make, model, year)
self.color = color

def drive(self):
return "The car is driving."

def stop(self):
return "The car is stopping."


vehicle = Vehicle("Toyota", "Camry", 2021)
car = Car("Ford", "Mustang", 2022, "Red")

print(vehicle.make, vehicle.model, vehicle.year) # Output: "Toyota Camry 2021"
print(vehicle.start()) # Output: "The vehicle is starting."
print(vehicle.stop()) # Output: "The vehicle is stopping."

print(car.make, car.model, car.year, car.color) # Output: "Ford Mustang 2022 Red"
print(car.start()) # Output: "The vehicle is starting." (inherited from Vehicle class)
print(car.drive()) # Output: "The car is driving."
print(car.stop()) # Output: "The car is stopping." (overrides the stop method in Vehicle class)

توضیحات :
1️⃣ ابتدا کلاس Vehicle را تعریف می‌کنیم که ویژگی‌ها و روش‌های مربوط به یک وسیله نقلیه رو داراست.
این کلاس شامل ویژگی‌های make، model و year هست که نشان دهنده سازنده، مدل و سال وسیله نقلیه می‌باشند. همچنین این کلاس دارای روش‌های start و stop هست که به ترتیب نمایانگر شروع و پایان عملکرد وسیله نقلیه است.

2️⃣ سپس کلاس Car رو تعریف می‌کنیم که از کلاس Vehicle ارث‌بری می‌کنه.
برای ارث‌بری از کلاس پدر، کافیه نام کلاس پدر رو بعد از نام کلاس فرزند در حالت اولیه تعریف کنیم.
با ارث‌بری از کلاس پدر، کلاس Car همه ویژگی‌ها و روش‌های کلاس Vehicle رو به ارث می‌برد.

3️⃣ در کلاس Car، یک روش جدید به نام drive اضافه می‌کنیم که نمایانگر عمل رانندگی ماشین هست.
همچنین روش stop رو بازتعریف (override) می‌کنیم تا خروجی متناسب با ماشین خاصی که از کلاس Car ایجاد شده است رو نمایش بدیم.
با بازتعریف روش stop، نسخه پدر این روش در کلاس Vehicle برای اشیا Car دیگر معتبر نیست و جایگزین شده است.

4️⃣ هرچقدر که در کلاس Car روش‌هایی با نام‌های تکراری با کلاس پدر داشته باشیم، روش‌های کلاس پدر با استفاده از بازتعریف (override) جایگزین میشن و روش‌های موردنیاز برای ماشین خاصی که از کلاس Car ایجاد شده هست رو میتونیم بر اساس نیاز تغییر بدیم.

5️⃣ نهایتاً، با ایجاد شیء vehicle از کلاس Vehicle و شیء car از کلاس Car، می‌تونیم به نمونه‌ها و ویژگی‌ها و روش‌ها در هر دو مرحله دسترسی داشته و استفاده کنیم.

🔸 بطور خلاصه، ارث‌بری به ما کمک می‌کنه تا ویژگی‌ها و رفتاری که در کلاس پدر تعریف شده هست رو به کلاس‌های فرزند انتقال بدیم و بازتعریف روش‌ها رو برای سفارشی کردن رفتار فرزندان انجام دهیم.
@Teachify | برنامه نویسی
7👍3
هییییچ وقت :/

#fun
@Teachify | برنامه نویسی
👍26🤣14🐳1
✔️ اصول و قواعد برنامه‌نویسی

1. YAGNI (You Aren't Gonna Need It):
این اصل بیان می‌کند که نباید ویژگی‌ها یا قابلیت‌های اضافی به نرم‌افزار اضافه شوند مگر این که واقعاً نیاز به آنها باشد. بنابراین، توسعه‌دهندگان باید از اضافه کردن قابلیت‌ها یا کدهایی که احتمالاً استفاده نخواهند شد خودداری کنند.

2. DRY (Don't Repeat Yourself):
این اصل می‌گوید که هر قطعه کد باید فقط یک بار وجود داشته باشد، به این معنی که اگر نیاز به تغییر آن وجود داشته باشد، باید فقط یک مکان برای اعمال تغییر وجود داشته باشد. این کمک می‌کند که کدها قابلیت نگهداری و تغییر راحت‌تری داشته باشند.

3. KISS (Keep It Simple, Stupid):
این اصل به توسعه‌دهندگان یادآوری می‌کند که حتی اگر یک مسئله به نظر پیچیده بیاید، باید راه‌حل را به سادگی و در حداقل پیچیدگی ارائه دهند. هدف این است که کد قابل فهم و قابل نگهداری باشد.

4. SoC (Separation of Concerns):
این اصل به تفکیک مسائل مختلف نرم‌افزار اشاره دارد، به طوری که هر بخش از نرم‌افزار مسئولیت خاص خود را داشته باشد و به مسائل دیگر دخالت نکند. این کمک می‌کند که کد مرتب و قابل مدیریت‌تری داشته باشد.

5. POLA (Principle Of Least Astonishment):
این اصل می‌گوید که رفتار یک نرم‌افزار باید به کاربران کمترین میزان شگفت‌زده‌ای را ایجاد کند، به این معنی که رفتار نرم‌افزار باید قابل پیش‌بینی و متناسب با انتظارات کاربران باشد.

6. DIP (Dependency Inversion Principle):
این اصل می‌گوید که برنامه‌ها باید به گونه‌ای طراحی شوند که وابستگی به جزئیات اجزای سیستم کمینه شود و به جای آن، بر روی اصول وابستگی به واسطه (مانند رابط‌ها) تاکید شود.

7. LoD (Law Of Demeter):
این اصل به توسعه‌دهندگان یادآوری می‌کند که هر ماژول فقط باید با اجزای خود یا اجزایی که مستقیماً به آنها وابسته‌اند تعامل داشته باشد. این کمک می‌کند که تغییرات در یک قسمت از کد اثر کمتری بر سایر بخش‌ها داشته باشد.

8. TDD (Test-Driven Development):
این اصل به توسعه‌دهندگان توصیه می‌کند که قبل از نوشتن کد، تست‌های واحدی برای آن نوشته شود و سپس کد به‌گونه‌ای تولید شود که این تست‌ها را پاسخ دهد. این کمک می‌کند که کد پایدارتر و کمتر حاوی باگ باشد.

9. SOLID Principles:
این مجموعه اصول شامل پنج اصل است که شامل Single Responsibility Principle، Open/Closed Principle، Liskov Substitution Principle، Interface Segregation Principle، و Dependency Inversion Principle می‌شود. این اصول به توسعه‌دهندگان کمک می‌کند تا کدهای خود را سازماندهی و تکامل پذیرتر کنند.

10. CI/CD (Continuous Integration/Continuous Deployment):
این اصل به مفهوم یک فرایند خودکار برای ادغام تغییرات جدید در کد و ارسال آنها به محیط تولید می‌پردازد. این فرایند به توسعه‌دهندگان کمک می‌کند تا تغییرات را به سرعت و با اطمینان به محیط تولید ارسال کنند و باعث افزایش توسعه و ارتقاء پروژه می‌شود.
@Teachify | برنامه نویسی
❤‍🔥12👍4🕊2🐳1🤓1👨‍💻1🗿1
✔️ توابع داخلی یا همان Built-in پایتون

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

🌐 https://docs.python.org/3/library/functions.html

@Teachify | برنامه نویسی
👍2
✔️ درک لیست یا List Comprehension در پایتون

درک لیست یک ابزار قدرتمند در زبان برنامه نویسی پایتون برای ایجاد لیست های جدید بر اساس لیست های موجود است.

نحو کلی:

[<expression> for <item> in <iterable> if <condition>]


اجزاء:

بخش <expression>: محاسباتی که برای هر عنصر در لیست جدید انجام می شود.
بخش <item>: متغیر موقتی که هر بار یک عنصر از لیست را نشان می‌دهد.
بخش <iterable>: لیست یا هر نوع داده قابل پیمایش که می خواهید از آن لیست جدید را ایجاد کنید.
بخش <condition>: شرطی که عناصر لیست جدید را مشخص می‌کند.

مثال:

فرض کنید لیست fruits شامل نام میوه ها به صورت زیر باشد:

fruits = ["apple", "banana", "orange", "grape", "mango"]


1. ایجاد لیست جدید با نام میوه ها به حروف بزرگ:

uppercase_fruits = [fruit.upper() for fruit in fruits]


بخش fruit.upper() : محاسبه برای تبدیل هر نام میوه به حروف بزرگ
بخش fruit : متغیر موقتی که هر بار یک نام میوه را از لیست fruits دریافت می کند
بخش fruits : لیست قابل پیمایش

نتیجه:

uppercase_fruits = ["APPLE", "BANANA", "ORANGE", "GRAPE", "MANGO"]


2. ایجاد لیست جدید با نام میوه هایی که طول آنها بیشتر از 5 حرف است:

long_fruits = [fruit for fruit in fruits if len(fruit) > 5]


بخش len(fruit) > 5 : شرطی برای انتخاب نام میوه هایی که طول آنها بیشتر از 5 حرف است
بخش fruit : متغیر موقتی که هر بار یک نام میوه را از لیست fruits دریافت می کند
بخش fruits : لیست قابل پیمایش

نتیجه:

long_fruits = ["banana", "orange", "mango"]


@Teachify | برنامه نویسی
👍6
برنامه نویسی | Teachify
✔️ درک لیست یا List Comprehension در پایتون درک لیست یک ابزار قدرتمند در زبان برنامه نویسی پایتون برای ایجاد لیست های جدید بر اساس لیست های موجود است. نحو کلی: [<expression> for <item> in <iterable> if <condition>] اجزاء: بخش <expression>: محاسباتی…
✔️ یک نمونه مثال ترکیبی و کامل از List Comprehension:
def limit(arr, min=None, max=None):
min_check = lambda val : True if min is None else (val>=min)
max_check = lambda val : True if max is None else (val<=max)

return [val for val in arr if min_check(val) and max_check(val)]


print(limit([1,2,3,4,5], min=3)) # [3, 4, 5]
print(limit([1,2,3,4,5], max=3)) # [1, 2, 3]


@Teachify | برنامه نویسی
👍5
چطوری به این خروجی برسیم؟
میخواییم وقتی یک لیست به ما دادن، تعداد بیشترین تکرارها رو از داخلش در بیاریم که در مثال زیر عدد 1 نسبت به بقیه بیشتر تکرار شده
Top : [1, 2, 1, 1, 3, 4, 2] > [1]

def top(arr):
values = {}
result = []
f_val = 0

for i in arr:
if i in values:
values[i] += 1
else:
values[i] = 1
print(values) # {1: 3, 2: 2, 3: 1, 4: 1}

f_val = max(values.values()) # 3

for i in values.keys():
if values[i] == f_val:
result.append(i)
else:
continue
return result


print(top([1, 2, 1, 1, 3, 4, 2])) # [1]


@Teachify | برنامه نویسی
👍31
✔️ الگوریتم چک کردن اینکه ایا 2 تا استرینگ با هم هم شکل هستند یا نه؟

Example 1:
Input: s = "egg", t = "add"
Output: true

Example 2:
Input: s = "foo", t = "bar"
Output: false

Example 3:
Input: s = "paper", t = "title"
Output: true

def is_isomorphic(s, t):
if len(s) != len(t):
return False
dict = {}
set_value = set()
for i in range(len(s)):
if s[i] not in dict:
if t[i] in set_value:
return False
dict[s[i]] = t[i]
set_value.add(t[i])
else:
if dict[s[i]] != t[i]:
return False
return True

@Teachify | برنامه نویسی
👍6
✔️ تک خطی های پایتون

@Teachify | برنامه نویسی
❤‍🔥8👍1
✔️ کامندهای کاربردی گیت

@Teachify | برنامه نویسی
👍6
✔️ نام ایران ترند اول جهان شد!

@Teachify | برنامه نویسی
😎29🤯5👍4👎21🥱1
خروجی کد زیر چیست؟
X = [ a, b, c] print(X.pop())
Anonymous Quiz
38%
[a, b]
16%
[b, c]
27%
c
19%
a
✔️ استفاده از علامت / و * در توابع پایتون

علامت های اسلش و ستاره مشخص کننده نوع آرگومانی است که میتوانید به توابع خود ارسال کنید. پارامترهایی که بعد از علامت ستاره قرار میگیرند باید به شکل کلید-واژه (keyword-argument) ارسال شوند. همچنین پارامترهایی که قبل از علامت اسلش قرار میگیرند باید براساس موقعیت (positional-argument) ارسال شوند.

به عنوان مثال، به تابع زیر دقت کنید:

def show(fn, *, ln):
print(f"your name is {fn} {ln}...")

>>> show('sepehr', ln='vafaei')
your name is sepehr vafaei...

از آنجایی که پارامتر ln بعد از ستاره قرار گرفته، پس مجبور هستیم این آرگومان را به شکل کلید-واژه ارسال کنیم، در غیر اینصورت با خطا مواجه خواهیم شد. نحوه ارسال پارامترهایی که قبل از ستاره هستند اهمیتی ندارد و میتوان به هر شکلی آنها را ارسال کرد.

در مثال بعدی، از اسلش استفاده میکنیم:

def show(fn, /, ln):
print(f"your name is {fn} {ln}...")

>>> show('sepehr', ln='vafaei')
your name is sepehr vafaei...

در زمان استفاده از علامت اسلش در پارامترهای توابع پایتونی، تمام پارامترهایی که قبل از علامت اسلش قرار میگیرند، باید براسال موقعیت ارسال شوند و نمیتوانند به کلید-واژه ارسال شوند. نحوه ارسال پارامترهایی که بعد از علامت اسلش قرار میگیرند، اهمیتی ندارد.
@Teachify | برنامه نویسی
👍9
Media is too big
VIEW IN TELEGRAM
امن ترین دارایی در جنگ طلا هست ...

می دونستی بدون سرمایه هم می تونی یه طلا فروشی آنلاین داشته باشی؟

🔰 وبینار رایگان: چگونه بدون سرمایه، گالری آنلاین طلا بزنیم ؟ + چک لیست عملی

ثبت نام سریع از لینک👇
http://url.aramehacademy.com/webinar
سه شنبه 28 فروردین ساعت 20

⚠️ظرفیت محدود
😁2
✔️ متد split و join در پایتون

فانکشن split برای تکه تکه کردن یک string بر اساس یک کاراکتر خاص استفاده میشه. در کد پایین میبینید که با استفاده از یک string خالی یا همون فاصله جمله sayhello رو تکه تکه کردیم. نتیجه به شکل یک لیست برگشت داده میشه:
sayhello = 'Hello teachify members'
sp = sayhello.split(' ')
print(sp)
# ['Hello', 'teachify', 'members']

فانکشن join دقیقا برعکس split کار میکنه یعنی یه آبجکت iterable گرفته و آیتم های اونو به م میچسبونه. در کد زیر یک لیست به متد join داده شده و بر اساس یک string خالی این آیتم ها را به هم میچسباند.
my_list = ['Hello', 'teachify', 'members']
j = ' '.join(my_list)
print(j)
# Hello teachify members

@Teachify | برنامه نویسی
👍3👌1
✔️ یکم قوانین کلین کد پایتون بخونیم ... PEP 8

1. اسم متغییر ها و تابع ها باید از حروف کوچیک باشد.
# Correct:
user_email = ...
def find_me(): ...
def go_home(): ...

# Wrong:
UserEmail = ...
def findMe(): ...
def GoHome(): ...
2. اگر متغییری دارید که قرار است هیچوقت مقدارش را تغییر ندهید، از حروف بزرگ استفاده کنید. ( بهش میگیم constant )
# Correct:
NO_CHANGE = 5

# Wrong:
NoChange = 5
no_change = 5
3. اسم کلاس هارو با به صورت CapWord بنویسید(اول کلمات حرف بزرگ):
# Correct:
class MyClassName: ...

# Wrong:
class my_class_name: ...
4. سعی نکنید همه چیز را در یک خط جا دهید.
# Correct:
if foo == 'blah':
    do_blah_thing()
do_one()
do_two()

# Wrong:
if foo == 'blah': do_blah_thing()
do_one(); do_two(); do_three()
5. وقتی میخواید خالی بودن لیستی چیزی رو چک کنین، از len استفاده نکنید.
# Correct:
if not seq:
if seq:

# Wrong:
if len(seq):
if not len(seq):

@Teachify | برنامه نویسی
👍9
This media is not supported in your browser
VIEW IN TELEGRAM
✔️ قبول دارید اینجوریه؟😂

@Teachify | برنامه نویسی
🤣231👍1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
✔️ این دیگه اخرشه 😂😂

#fun
@Teachify | برنامه نویسی
🤣25👍1
✔️ یادگیری کد vs فراموش کردن کد!

#fun
@Teachify | برنامه نویسی
😭33👍8👎1