✔️ بزرگترین دروغی که از یک برنامه نویس شنیدی چیه؟
-الان باید کار بکنه
#fun
#CodeExplore
💭 @Teachify | برنامه نویسی
-الان باید کار بکنه
#fun
#CodeExplore
💭 @Teachify | برنامه نویسی
🤣38👍1🐳1
وقتی یکی برنامه نویسی رو بخاطر خود برنامه نویسی و فان بودنش انجام میده، نتیجه خیلی خوبی میگیره تا یکی که بخاطر
پول، اینده شغلی و...
ایشون کسی هست که ردیس رو نوشته، یک دیتا استراکچر سرور طور که الان خیلی استفاده میشه
ولی خودش دو ساله دیگه مشارکتی نداشته روی ردیس/
#heydyvex
💭 @Teachify | برنامه نویسی
پول، اینده شغلی و...
ایشون کسی هست که ردیس رو نوشته، یک دیتا استراکچر سرور طور که الان خیلی استفاده میشه
ولی خودش دو ساله دیگه مشارکتی نداشته روی ردیس/
#heydyvex
💭 @Teachify | برنامه نویسی
👍19❤🔥2🐳2
✔️ توابع لامبدا (Lambda) در پایتون
توابع لامبدا یا همان توابع بینام در پایتون، توابع کوتاه و غیرقابل تغییر هستند که معمولاً برای استفاده در محیطهایی مانند توابع map، filter و sort استفاده میشوند. این توابع به شما اجازه میدهند که یک تابع کوچک را به طور مستقیم در جایی که نیاز دارید بنویسید، بدون اینکه نیاز به تعریف جداگانه آن داشته باشید.
مثال زیر را در نظر بگیرید:
در این مثال، تابع lambda ما یک ورودی به نام x دریافت میکند و آن را در دو ضرب میکند. این تابع به تابع map داده میشود تا بر روی هر عنصر از لیست numbers اعمال شود و نتیجه در یک شیء map بازمیگرداند. سپس با استفاده از تابع list، این شیء map به لیست تبدیل شده و در doubled_numbers_list ذخیره میشود و سپس چاپ میشود.
مثال هایی دیگر برای تابع لامبدا:
@Teachify | برنامه نویسی
توابع لامبدا یا همان توابع بینام در پایتون، توابع کوتاه و غیرقابل تغییر هستند که معمولاً برای استفاده در محیطهایی مانند توابع map، filter و sort استفاده میشوند. این توابع به شما اجازه میدهند که یک تابع کوچک را به طور مستقیم در جایی که نیاز دارید بنویسید، بدون اینکه نیاز به تعریف جداگانه آن داشته باشید.
مثال زیر را در نظر بگیرید:
# تعریف یک لیست از اعداد
numbers = [1, 2, 3, 4, 5]
# استفاده از تابع map برای ضرب هر عدد در لیست برای 2
doubled_numbers = map(lambda x: x * 2, numbers)
# تبدیل شیء map به لیست
doubled_numbers_list = list(doubled_numbers)
print(doubled_numbers_list) # خروجی: [2, 4, 6, 8, 10]
در این مثال، تابع lambda ما یک ورودی به نام x دریافت میکند و آن را در دو ضرب میکند. این تابع به تابع map داده میشود تا بر روی هر عنصر از لیست numbers اعمال شود و نتیجه در یک شیء map بازمیگرداند. سپس با استفاده از تابع list، این شیء map به لیست تبدیل شده و در doubled_numbers_list ذخیره میشود و سپس چاپ میشود.
مثال هایی دیگر برای تابع لامبدا:
# مرتب سازی لیست بر اساس طول رشته
list_of_strings = ["a", "bb", "ccc", "dddd"]
sorted_list = sorted(list_of_strings, key=lambda s: len(s))
print(sorted_list) # خروجی: ['a', 'bb', 'ccc', 'dddd']
# فیلتر کردن لیست برای اعداد زوج
list_of_numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, list_of_numbers))
print(even_numbers) # خروجی: [2, 4]
# اعمال تابع pow بر روی هر عنصر لیست
list_of_numbers = [1, 2, 3, 4]
squared_numbers = list(map(lambda x: x ** 2, list_of_numbers))
print(squared_numbers) # خروجی: [1, 4, 9, 16]
@Teachify | برنامه نویسی
👍18
✔️ تابع map در پایتون
تابع map در پایتون یک تابع built-in است که برای اعمال یک تابع بر روی هر عنصر یک iterable (مانند لیست، رشته، یا دیکشنری) استفاده می شود. این تابع یک map object را برمی گرداند که می توانید آن را به لیست، ست، یا تاپل تبدیل کنید.
نحوه استفاده از تابع map:
مثال:
نکات:
* تابع map می تواند بیش از یک iterable را به عنوان ورودی دریافت کند.
* اگر می خواهید فقط از اولین عنصر iterable استفاده کنید، می توانید از تابع next() استفاده کنید.
* اگر می خواهید از تمام عناصر iterable استفاده کنید، می توانید از تابع list() استفاده کنید.
مثال هایی از تابع مپ:
@Teachify | برنامه نویسی
تابع map در پایتون یک تابع built-in است که برای اعمال یک تابع بر روی هر عنصر یک iterable (مانند لیست، رشته، یا دیکشنری) استفاده می شود. این تابع یک map object را برمی گرداند که می توانید آن را به لیست، ست، یا تاپل تبدیل کنید.
نحوه استفاده از تابع map:
map(function, iterable)
مثال:
# تابعی که عدد ورودی را دو برابر می کند
double = lambda x: x * 2
# لیست اعداد
numbers = [1, 2, 3, 4]
# اعمال تابع double بر روی هر عنصر لیست
doubled_numbers = map(double, numbers)
# تبدیل map object به لیست
print(list(doubled_numbers)) # خروجی: [2, 4, 6, 8]
نکات:
* تابع map می تواند بیش از یک iterable را به عنوان ورودی دریافت کند.
* اگر می خواهید فقط از اولین عنصر iterable استفاده کنید، می توانید از تابع next() استفاده کنید.
* اگر می خواهید از تمام عناصر iterable استفاده کنید، می توانید از تابع list() استفاده کنید.
مثال هایی از تابع مپ:
# فیلتر کردن لیست برای اعداد زوج
numbers = [1, 2, 3, 4, 5]
# تابعی که اعداد زوج را برمی گرداند
even_numbers = list(map(lambda x: x if x % 2 == 0 else None, numbers))
# چاپ اعداد زوج
print(even_numbers) # خروجی: [2, 4]
@Teachify | برنامه نویسی
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
✔️ توی اداره های چین به این صورت دوربین نصب شده که هر وقت یکی از کارمندها از جاش بلند میشه، دوربین سریعا تشخیص میده و اون تایمی که توی صندلی خوش نبوده رو حساب میکنه و از حقوقش کنم میکنه :))
@Teachify | برنامه نویسی
@Teachify | برنامه نویسی
👀20🤮8😐2👍1
✔️ یک مثال خوب و مشخص از ارثبری در Python:
توضیحات :
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 | برنامه نویسی
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
✔️ اصول و قواعد برنامهنویسی
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 | برنامه نویسی
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 | برنامه نویسی
لازمه حتما حداقل یک بار باهاشون کار کرده باشید، چون ممکنه توی مصاحبه های کاری ازتون سوال بپرسن. بعضی از این توابع ورودی اینا میگیرن که دونستنش خالی از لطف نیست.
🌐 https://docs.python.org/3/library/functions.html
@Teachify | برنامه نویسی
👍2
✔️ درک لیست یا List Comprehension در پایتون
درک لیست یک ابزار قدرتمند در زبان برنامه نویسی پایتون برای ایجاد لیست های جدید بر اساس لیست های موجود است.
نحو کلی:
اجزاء:
بخش
بخش
بخش
بخش
مثال:
فرض کنید لیست
1. ایجاد لیست جدید با نام میوه ها به حروف بزرگ:
بخش fruit.upper() : محاسبه برای تبدیل هر نام میوه به حروف بزرگ
بخش fruit : متغیر موقتی که هر بار یک نام میوه را از لیست
بخش fruits : لیست قابل پیمایش
نتیجه:
2. ایجاد لیست جدید با نام میوه هایی که طول آنها بیشتر از 5 حرف است:
بخش len(fruit) > 5 : شرطی برای انتخاب نام میوه هایی که طول آنها بیشتر از 5 حرف است
بخش fruit : متغیر موقتی که هر بار یک نام میوه را از لیست
بخش fruits : لیست قابل پیمایش
نتیجه:
@Teachify | برنامه نویسی
درک لیست یک ابزار قدرتمند در زبان برنامه نویسی پایتون برای ایجاد لیست های جدید بر اساس لیست های موجود است.
نحو کلی:
[<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:
@Teachify | برنامه نویسی
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]
@Teachify | برنامه نویسی
میخواییم وقتی یک لیست به ما دادن، تعداد بیشترین تکرارها رو از داخلش در بیاریم که در مثال زیر عدد 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 | برنامه نویسی
👍3❤1