آموزش پایتون
88 subscribers
281 photos
21 videos
81 files
178 links
ارتباط با ما:
@learnpythonicyBot

لینک گروه چت:
https://t.me/learnpythonicychat

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
⛔️🚫⛔️🚫⛔️🚫⛔️🚫

. دوست دارید پست‌ها چه مدلی باشه؟
. تو چه حیطه‌ای از پایتون؟
. در چه سطحی باشه؟
و...
پیشنهاد و نظراتتون و دریغ نکنید از من! 💝🙏

کامنت کنید یا ناشناس بفرستید.
@learnpythonicyBot
✔️ مدیریت فایل‌ها در پایتون با ۷ روش حرفه‌ای!

برای کار با فایل‌ها در پایتون، این تکنیک‌های کاربردی را امتحان کنید:

1️⃣ باز کردن و خواندن فایل

with open('file.txt', 'r') as f:
content = f.read()
print(content)


2️⃣ نوشتن در فایل

with open('file.txt', 'w') as f:
f.write("سلام دنیا!")


3️⃣ افزودن به فایل

with open('file.txt', 'a') as f:
f.write("\nخط جدید")


4️⃣ خواندن خط به خط

with open('file.txt', 'r') as f:
for line in f:
print(line.strip())


5️⃣ بررسی وجود فایل

import os
print(os.path.exists('file.txt')) # True یا False


6️⃣ حذف فایل

import os
os.remove('file.txt')


7️⃣ مدیریت مسیرها با pathlib

from pathlib import Path
path = Path('file.txt')
print(path.exists())
print(path.read_text())


🗝 روش ویژه: خواندن و نوشتن فایل‌های CSV با pandas

import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
df.to_csv('output.csv', index=False)


نکات طلایی


* همیشه از with برای مدیریت فایل استفاده کنید
* برای مسیرهای پیچیده از pathlib کمک بگیرید
* برای داده‌های جدولی از pandas بهره ببرید

#PythonMagic | #FileHandling | #pathlib | #pandas | @learnpythonic

> *برای ذخیره‌سازی، تحلیل داده و اتوماسیون کاربرد دارد*
✔️ کار با لیست‌ها در پایتون با ۷ روش حرفه‌ای!

برای مدیریت لیست‌ها و داده‌های متوالی، این تکنیک‌های کاربردی را امتحان کنید:

1️⃣ ایجاد لیست

fruits = ['apple', 'banana', 'cherry']
print(fruits)


2️⃣ اضافه کردن عنصر

fruits.append('orange')
print(fruits)


3️⃣ درج عنصر در موقعیت خاص

fruits.insert(1, 'kiwi')
print(fruits)


4️⃣ حذف عنصر

fruits.remove('banana')
print(fruits)


5️⃣ دسترسی به عناصر با ایندکس

print(fruits[0])  # اولین عنصر
print(fruits[-1]) # آخرین عنصر


6️⃣ مرتب‌سازی لیست

numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)


7️⃣ لیست‌ها با فهم لیست (List Comprehension)

squares = [x**2 for x in range(5)]
print(squares)


🗝 روش ویژه: تبدیل لیست به آرایه NumPy

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr * 2)


نکات طلایی

* برای اضافه و حذف عنصر از append و remove استفاده کنید
* List comprehension کد شما را کوتاه و خواناتر می‌کند
* برای محاسبات عددی بزرگ، لیست‌ها را به NumPy array تبدیل کنید

#PythonMagic | #NumPy | #List | @learnpythonicy
1
✔️ 10 Python Set Tricks You Should Know! 🐍


1️⃣ ساخت Set یکتا از لیست
unique_items = set([1, 2, 2, 3, 4])


2️⃣ افزودن آیتم
my_set.add(5)


3️⃣ حذف آیتم بدون خطا
my_set.discard(10)  # Error نمی‌دهد


4️⃣ اجتماع دو مجموعه (Union)
result = set1 | set2


5️⃣ اشتراک دو مجموعه (Intersection)
common = set1 & set2


6️⃣ تفاضل مجموعه‌ها (Difference)
diff = set1 - set2


7️⃣ بررسی زیرمجموعه بودن
if set1 <= set2:
print("Subset")


8️⃣ حذف آیتم تصادفی
item = my_set.pop()


9️⃣ ساخت Set Comprehension
squares = {x**2 for x in range(5)}


🔟 حذف آیتم‌های تکراری از رشته
unique_chars = set("programming")


> ⚠️ ست ها(set) فوق‌العاده سریع هستند (O(1) average lookup)، اما ترتیب را حفظ نمی‌کنند!


#Set | #PythonTricks | #DataStructures | @LearnPythonicy

👇 بیشتر از کدوم عملیات Set در پروژه‌هات استفاده می‌کنی؟
✔️ 10 Python Async & Concurrency Tricks You Should Know! 🐍


1️⃣ اجرای تابع async
import asyncio

async def main():
print("Hello Async")

asyncio.run(main())


2️⃣ اجرای همزمان چند Task
async def task(n):
await asyncio.sleep(1)
return n

results = await asyncio.gather(task(1), task(2))


3️⃣ ایجاد Task در پس‌زمینه
task = asyncio.create_task(task(3))


4️⃣ محدود کردن همزمانی با Semaphore
sem = asyncio.Semaphore(3)

async with sem:
await some_io()


5️⃣ Timeout برای جلوگیری از Hang
await asyncio.wait_for(task(1), timeout=2)


6️⃣ اجرای کد Blocking داخل Async
loop = asyncio.get_running_loop()
result = await loop.run_in_executor(None, blocking_func)


7️⃣ استفاده از ThreadPoolExecutor
from concurrent.futures import ThreadPoolExecutor


8️⃣ استفاده از ProcessPool برای CPU-Bound
from concurrent.futures import ProcessPoolExecutor


9️⃣ مدیریت Race Condition با Lock
lock = asyncio.Lock()

async with lock:
shared_resource += 1


🔟 Async HTTP Requests با aiohttp
import aiohttp

async with aiohttp.ClientSession() as session:
async with session.get("https://api.example.com") as resp:
data = await resp.json()


> ⚠️ نکته: Async برای I/O-Bound فوق‌العاده است، اما برای CPU-Bound از multiprocessing استفاده کن.



#AsyncIO #Concurrency #Backend #Performance #PythonTricks

👇 تو پروژه‌هات بیشتر با I/O-Bound سروکار داری یا CPU-Bound؟
سالتون پُرپول، پُرموفقیت و شادی باشه 🦦❤️
✔️ کار با لیست‌ها در پایتون با ۷ روش حرفه‌ای!

برای مدیریت لیست‌ها و داده‌های متوالی، این تکنیک‌های کاربردی را امتحان کنید:

1️⃣ ایجاد لیست

fruits = ['apple', 'banana', 'cherry']
print(fruits)

2️⃣ اضافه کردن عنصر

fruits.append('orange')
print(fruits)

3️⃣ درج عنصر در موقعیت خاص

fruits.insert(1, 'kiwi')
print(fruits)

4️⃣ حذف عنصر

fruits.remove('banana')
print(fruits)

5️⃣ دسترسی به عناصر با ایندکس

print(fruits[0]) # اولین عنصر
print(fruits[-1]) # آخرین عنصر

6️⃣ مرتب‌سازی لیست

numbers = [5, 2, 9, 1]
numbers.sort()
print(numbers)

7️⃣ لیست‌ها با فهم لیست (List Comprehension)

squares = [x**2 for x in range(5)]
print(squares)

🗝 روش ویژه: تبدیل لیست به آرایه NumPy

import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr * 2)

#PythonMagic | #NumPy | #list | @learnpythonicy
Please open Telegram to view this post
VIEW IN TELEGRAM
🔴 چالش ۳۰ روزه Python for AI

اگر قصد ورود به دنیای هوش مصنوعی، یادگیری ماشین و Data Science را دارید، این چالش برای شماست.

در طول ۳۰ روز آینده با حل تمرین‌های روزانه:

مهارت حل مسئله با پایتون را تقویت می‌کنید

با ابزارهای Data Science آشنا می‌شوید

مدل‌های Machine Learning خود را می‌سازید

چند پروژه مناسب GitHub و رزومه خواهید داشت

مسیر چالش:

📍 هفته اول
تفکر برنامه‌نویسی و حل مسئله با Python

📍 هفته دوم
پروژه‌های کاربردی و تحلیل داده

📍 هفته سوم
ورود به Data Science با NumPy ،Pandas و Visualization

📍 هفته چهارم
ورود عملی به Machine Learning و AI

🏆 پروژه‌های پایانی:

• Student Analytics System

• Sales Data Analyzer

• Titanic Data Analysis

• House Price Prediction

🎯 بسته به میزان مشارکت، فعالیت و همراهی اعضا، سطح پروژه‌ها می‌تواند ارتقا پیدا کند و پروژه‌های پیشرفته‌تر و نزدیک‌تر به پروژه‌های واقعی AI به چالش اضافه شوند.


🎯 خروجی نهایی:

• تسلط بیشتر بر Python

• آشنایی عملی با Data Science

• ورود به Machine Learning

• چند پروژه قابل انتشار در GitHub

هر روز ساعت ۲۰ چالش جدید منتشر می‌شود.

شما تا ساعت ۱۹:۵۹ روز بعد فرصت دارید پاسخ خود را ارسال کنید.

💡 در صورت نیاز Hint ارائه خواهد شد.
💡 پاسخ کامل روز بعد همراه با چالش جدید منتشر می‌شود.

🔥 غیبت = از دست دادن زنجیره یادگیری
📢 روز یکم از چالش ۳۰ روزه Python for AI

#Day1

🎯 موضوع:
Variables + Input + Basic Calculations

سطح:

مبتدی

زمان تخمینی:
10 تا 20 دقیقه

📝 صورت مسئله:

فرض کنید می‌خواهیم اولین بخش یک Student Analytics System را طراحی کنیم.

دیتای زیر را در برنامه خود قرار دهید:

students = {
"Ali": {"credits": 70, "gpa": 17.8},
"Sara": {"credits": 95, "gpa": 18.5},
"Reza": {"credits": 40, "gpa": 15.2},
"Nima": {"credits": 120, "gpa": 18.1},
"Parsa": {"credits": 55, "gpa": 16.4},
"Arman": {"credits": 80, "gpa": 17.1},
"Mina": {"credits": 140, "gpa": 19.0},
"Ava": {"credits": 35, "gpa": 16.8},
"Yasmin": {"credits": 110, "gpa": 18.7},
"Amir": {"credits": 65, "gpa": 15.9}
}

برنامه باید:

1️⃣ نام دانشجو را از کاربر دریافت کند.

2️⃣ اطلاعات دانشجو را نمایش دهد:

- Name
- Credits Passed
- GPA
- Remaining Credits
- Progress Percentage

*فرض کنید برای فارغ‌التحصیلی به 140 واحد نیاز است.
( اگر دانشجو 140 واحد یا بیشتر گذرانده باشد:
Status: Graduated
در غیر این صورت:
Status: In Progress
)
📌 نمونه خروجی:

Enter student name: Ali

Name: Ali
Credits Passed: 70
GPA: 17.8
Remaining Credits: 70
Progress: 50%


📋 قوانین:

خروجی‌ها و نام متغیرها به زبان انگلیسی باشند.

استفاده از ChatGPT فقط برای گرفتن Hint مجاز است، نه دریافت کد کامل 🫪

💡 اگر مبتدی هستی
نگران نباش. هدف این چالش یادگیری و پیشرفت روزانه است، نه کامل بودن.

اگر به راهنمایی نیاز داشتی
راه ارتباطی فراوانه (کامنت،گروه، بات)
@learnpythonicychat
@learnpythonicyBot

مهلت ارسال پاسخ
فردا ساعت 20:00

فردا علاوه بر انتشار پاسخ رسمی، چالش Day 2 را هم میزارم.

🧡🔥 تغییرات بزرگ یک شبه اتفاق نمی‌افتند.
اگر نت دوباره ملی شد خدایی نکرده
ایتا هستیم 🧌
https://eitaa.com/learnpythonicy
آموزش پایتون
📢 روز یکم از چالش ۳۰ روزه Python for AI #Day1 🎯 موضوع: Variables + Input + Basic Calculations سطح: مبتدی زمان تخمینی: 10 تا 20 دقیقه 📝 صورت مسئله: فرض کنید می‌خواهیم اولین بخش یک Student Analytics System را طراحی کنیم. دیتای زیر را در برنامه خود…
پاسخ چالش Day 1

یکی از راه‌حل‌های ممکن:

students = {
"Ali": {"credits": 70, "gpa": 17.8},
"Sara": {"credits": 95, "gpa": 18.5},
"Reza": {"credits": 40, "gpa": 15.2},
"Nima": {"credits": 120, "gpa": 18.1},
"Parsa": {"credits": 55, "gpa": 16.4},
"Arman": {"credits": 80, "gpa": 17.1},
"Mina": {"credits": 140, "gpa": 19.0},
"Ava": {"credits": 35, "gpa": 16.8},
"Yasmin": {"credits": 110, "gpa": 18.7},
"Amir": {"credits": 65, "gpa": 15.9}
}

student_name = input("Enter student name: ")

credits = students[student_name]["credits"]
gpa = students[student_name]["gpa"]

remaining_credits = 140 - credits
progress_percentage = (credits / 140) * 100

if credits >= 140:
status = "Graduated"
else:
status = "In Progress"

print("\nStudent Information")
print("-------------------")
print("Name:", student_name)
print("Credits Passed:", credits)
print("GPA:", gpa)
print("Remaining Credits:", remaining_credits)
print(f"Progress: {progress_percentage:.2f}%")
print("Status:", status)

📚 مفاهیمی که در این چالش تمرین کردیم:


Variables

User Input

Dictionary

Nested Dictionary Access

Basic Calculations

Conditional Statements (if/else)

Formatted Output

💡 نکته:

اگر نام دانشجویی وارد شود که در دیتاست وجود ندارد، برنامه خطا می‌دهد. در چالش‌های آینده یاد می‌گیریم چطور این خطاها را مدیریت کنیم.

🔥 اگر راه‌حل متفاوتی نوشتید، در کامنت‌ها ارسال کنید. گاهی چندین راه‌حل مختلف برای یک مسئله وجود داره و دیدن روش‌های دیگه می‌تونه آموزنده باشه.

🔜 آماده چالش Day 2 باشید...
🔥 چالش ۳۰ روزه Python for AI

#Day2

🎯 موضوع:
Conditional Statements (if / elif / else)


سطح:
مبتدی

زمان تخمینی:
10 تا 25 دقیقه

📝 صورت مسئله:

در بسیاری از سیستم‌های AI و Data Analytics، قبل از تحلیل داده‌ها باید آن‌ها را دسته‌بندی کنیم.

فرض کنید می‌خواهیم دانشجویان را بر اساس معدل طبقه‌بندی کنیم.

برنامه‌ای بنویسید که:

1️⃣ نام دانشجو را از کاربر دریافت کند.

2️⃣ اطلاعات دانشجو را از دیتاست زیر پیدا کند.

3️⃣ علاوه بر نمایش اطلاعات، وضعیت تحصیلی او را نیز تعیین کند.
students = {
"Ali": {"credits": 70, "gpa": 17.8},
"Sara": {"credits": 95, "gpa": 18.5},
"Reza": {"credits": 40, "gpa": 15.2},
"Nima": {"credits": 120, "gpa": 18.1},
"Parsa": {"credits": 55, "gpa": 16.4},
"Arman": {"credits": 80, "gpa": 17.1},
"Mina": {"credits": 140, "gpa": 19.0},
"Ava": {"credits": 35, "gpa": 16.8},
"Yasmin": {"credits": 110, "gpa": 18.7},
"Amir": {"credits": 65, "gpa": 15.9}
}

📌 Academic Level

اگر GPA برابر یا بیشتر از 18 بود:

Excellent

اگر GPA بین 16 و 18 بود:

Good

اگر GPA بین 14 و 16 بود:

Average

اگر GPA کمتر از 14 بود:

Needs Improvement

📌 نمونه خروجی:

Enter student name: Sara

Name: Sara
GPA: 18.5
Academic Level: Excellent


🎯 Bonus Challenge

علاوه بر Academic Level مشخص کنید آیا به دانشجو اسکالرشیپ تعلق می‌گیرد یا خیر:

Eligible for Scholarship

شرط بورسیه:

- GPA >= 18
- Credits >= 90


💡 اگر مبتدی هستید:

ابتدا روی بخش Academic Level تمرکز کنید و سپس Bonus را انجام دهید.

اگر به راهنمایی نیاز داشتید:

در کامنت‌ها سؤال بپرسید یا از طریق بات پیام ارسال کنید.

مهلت ارسال پاسخ:
فردا ساعت 20:00

🔺 امروز داریم اولین قدم‌های واقعی در دسته‌بندی داده‌ها (Classification Logic) را تمرین می‌کنیم؛ مفهومی که بعدها در Machine Learning بسیار مهم خواهد بود.
👨‍💻2
آموزش پایتون
🔥 چالش ۳۰ روزه Python for AI #Day2 🎯 موضوع: Conditional Statements (if / elif / else) سطح: مبتدی زمان تخمینی: 10 تا 25 دقیقه 📝 صورت مسئله: در بسیاری از سیستم‌های AI و Data Analytics، قبل از تحلیل داده‌ها باید آن‌ها را دسته‌بندی کنیم. فرض کنید می‌خواهیم…
پاسخ چالش Day 2
یکی از راه‌حل‌های ممکن:
students = {
"Ali": {"credits": 70, "gpa": 17.8},
"Sara": {"credits": 95, "gpa": 18.5},
"Reza": {"credits": 40, "gpa": 15.2},
"Nima": {"credits": 120, "gpa": 18.1},
"Parsa": {"credits": 55, "gpa": 16.4},
"Arman": {"credits": 80, "gpa": 17.1},
"Mina": {"credits": 140, "gpa": 19.0},
"Ava": {"credits": 35, "gpa": 16.8},
"Yasmin": {"credits": 110, "gpa": 18.7},
"Amir": {"credits": 65, "gpa": 15.9}
}

student_name = input("Enter student name: ").strip().title()

if student_name in students:
credits = students[student_name]["credits"]
gpa = students[student_name]["gpa"]

if gpa >= 18:
academic_level = "Excellent"
elif gpa >= 16:
academic_level = "Good"
elif gpa >= 14:
academic_level = "Average"
else:
academic_level = "Needs Improvement"

if gpa >= 18 and credits >= 90:
scholarship = "Eligible for Scholarship"
else:
scholarship = "Not Eligible for Scholarship"

print("\nStudent Information")
print("-------------------")
print("Name:", student_name)
print("Credits Passed:", credits)
print("GPA:", gpa)
print("Academic Level:", academic_level)
print("Scholarship:", scholarship)

else:
print("Student not found")

📚 مفاهیمی که در این چالش تمرین کردیم:
Variables
User Input
Dictionary
Nested Dictionary Access
Conditional Statements
if / elif / else
Comparison Operators
Logical Operator and
Classification Logic
Formatted Output
💡 نکته:
در این چالش با استفاده از شرط‌ها، دانشجویان را بر اساس GPA دسته‌بندی کردیم. این نوع منطق شرطی، پایه‌ای‌ترین شکل Classification است و در مراحل بعدی یادگیری Machine Learning کاربرد زیادی دارد.

🎁 Bonus:
برای بررسی بورسیه، دو شرط را هم‌زمان بررسی کردیم:
GPA >= 18
Credits >= 90
اگر هر دو شرط درست باشند، دانشجو واجد شرایط Scholarship خواهد بود.

🔥 اگر راه‌حل متفاوتی نوشتید، در کامنت‌ها ارسال کنید. گاهی چندین راه‌حل مختلف برای یک مسئله وجود داره و دیدن روش‌های دیگه می‌تونه آموزنده باشه.
🔜 آماده چالش Day 3 باشید...
🔥 چالش ۳۰ روزه Python for AI

#Day3

🎯 موضوع:
Loops (for)

سطح:
مبتدی تا متوسط

زمان تخمینی:

15 تا 30 دقیقه

📝 صورت مسئله:


در سیستم‌های تحلیلی معمولاً لازم است همه داده‌ها را بررسی کنیم.

دیتاست زیر را در برنامه قرار دهید:
students = {
"Ali": {"credits": 70, "gpa": 17.8},
"Sara": {"credits": 95, "gpa": 18.5},
"Reza": {"credits": 40, "gpa": 15.2},
"Nima": {"credits": 120, "gpa": 18.1},
"Parsa": {"credits": 55, "gpa": 16.4},
"Arman": {"credits": 80, "gpa": 17.1},
"Mina": {"credits": 140, "gpa": 19.0},
"Ava": {"credits": 35, "gpa": 16.8},
"Yasmin": {"credits": 110, "gpa": 18.7},
"Amir": {"credits": 65, "gpa": 15.9}
}

برنامه باید:

تعداد کل دانشجویان را نمایش دهد.

میانگین GPA را محاسبه کند.

دانشجویی با بیشترین GPA را پیدا کند.

دانشجویی با کمترین GPA را پیدا کند.

📌 نمونه خروجی:

Total Students: 10
Average GPA: 17.54

Top Student: Mina (19.0)
Lowest GPA: Reza (15.2)


🎯 Bonus Challenge

تعداد دانشجویانی که GPA آن‌ها بیشتر یا مساوی 18 است را محاسبه کنید.

📋 نکته:
برای حل این مسئله باید روی تمام دانشجویان Loop بزنید.

مهلت ارسال پاسخ:
فردا ساعت 20:00
پاسخ چالش Day 3

یکی از راه‌حل‌های ممکن:👇
students = {
"Ali": {"credits": 70, "gpa": 17.8},
"Sara": {"credits": 95, "gpa": 18.5},
"Reza": {"credits": 40, "gpa": 15.2},
"Nima": {"credits": 120, "gpa": 18.1},
"Parsa": {"credits": 55, "gpa": 16.4},
"Arman": {"credits": 80, "gpa": 17.1},
"Mina": {"credits": 140, "gpa": 19.0},
"Ava": {"credits": 35, "gpa": 16.8},
"Yasmin": {"credits": 110, "gpa": 18.7},
"Amir": {"credits": 65, "gpa": 15.9}
}

total_students = len(students)

total_gpa = 0

top_student = ""
top_gpa = 0

lowest_student = ""
lowest_gpa = 20

scholarship_count = 0

for name, info in students.items():
gpa = info["gpa"]

total_gpa += gpa

if gpa > top_gpa:
top_gpa = gpa
top_student = name

if gpa < lowest_gpa:
lowest_gpa = gpa
lowest_student = name

if gpa >= 18:
scholarship_count += 1

average_gpa = total_gpa / total_students

print("Total Students:", total_students)
print("Average GPA:", round(average_gpa, 2))

print("\nTop Student:")
print(f"{top_student} ({top_gpa})")

print("\nLowest GPA:")
print(f"{lowest_student} ({lowest_gpa})")

print("\nStudents with GPA >= 18:")
print(scholarship_count)

@learnpythonicy
🔥 چالش ۳۰ روزه Python for AI

#Day4

🎯 موضوع:
Functions

⭐️ سطح:

متوسط

زمان تخمینی:
20 تا 35 دقیقه

📝 صورت مسئله:

در پروژه‌های واقعی، کدهای تکراری باید داخل Function قرار بگیرند.

دیتاست روزهای قبل را استفاده کنید.

سه تابع بنویسید:

Function 1

get_average_gpa()

میانگین GPA را برگرداند.

Function 2

get_top_student()

نام و GPA بهترین دانشجو را برگرداند.

Function 3

get_scholarship_students()

تمام دانشجویانی که:

GPA >= 18

دارند را نمایش دهد.

📌 نمونه خروجی:

Average GPA: 17.54

Top Student:
Mina (19.0)

Scholarship Students:
Sara
Nima
Mina
Yasmin


🎯 Bonus Challenge

یک تابع بنویسید:

find_student(name)

که نام دانشجو را دریافت کرده و اطلاعات او را نمایش دهد.

📋 هدف امروز:

یادگیری ساخت کدهای تمیزتر و قابل استفاده مجدد.

مهلت ارسال پاسخ:
فردا ساعت 20:00
آموزش پایتون
🔥 چالش ۳۰ روزه Python for AI #Day3 🎯 موضوع: Loops (for) سطح: مبتدی تا متوسط زمان تخمینی: 15 تا 30 دقیقه 📝 صورت مسئله: در سیستم‌های تحلیلی معمولاً لازم است همه داده‌ها را بررسی کنیم. دیتاست زیر را در برنامه قرار دهید: students = { "Ali": {"credits":…
پاسخ چالش Day 4

یکی از راه‌حل‌های ممکن:
students = {
"Ali": {"credits": 70, "gpa": 17.8},
"Sara": {"credits": 95, "gpa": 18.5},
"Reza": {"credits": 40, "gpa": 15.2},
"Nima": {"credits": 120, "gpa": 18.1},
"Parsa": {"credits": 55, "gpa": 16.4},
"Arman": {"credits": 80, "gpa": 17.1},
"Mina": {"credits": 140, "gpa": 19.0},
"Ava": {"credits": 35, "gpa": 16.8},
"Yasmin": {"credits": 110, "gpa": 18.7},
"Amir": {"credits": 65, "gpa": 15.9}
}


def get_average_gpa():
total_gpa = 0

for student in students:
total_gpa += students[student]["gpa"]

return total_gpa / len(students)


def get_top_student():
top_name = ""
top_gpa = 0

for student in students:
if students[student]["gpa"] > top_gpa:
top_gpa = students[student]["gpa"]
top_name = student

return top_name, top_gpa


def get_scholarship_students():
scholarship_students = []

for student in students:
if students[student]["gpa"] >= 18:
scholarship_students.append(student)

return scholarship_students


# Bonus Challenge
def find_student(name):
if name in students:
print(f"Name: {name}")
print(f"Credits: {students[name]['credits']}")
print(f"GPA: {students[name]['gpa']}")
else:
print("Student not found")


print(f"Average GPA: {get_average_gpa():.2f}")

top_name, top_gpa = get_top_student()
print("\nTop Student:")
print(f"{top_name} ({top_gpa})")

print("\nScholarship Students:")
for student in get_scholarship_students():
print(student)

print("\nFind Student:")
find_student("Sara")

💡 نکته آموزشی:

تابع یا Function باعث می‌شود کدها تمیزتر، قابل استفاده مجدد و قابل نگهداری‌تر شوند.

هر تابع فقط یک وظیفه مشخص داره (اصل Single Responsibility).

مقدار خروجی با return به برنامه برگردانده میشه و از آن در بخش‌های مختلف برنامه میشه استفاده کرد.

@learnpythonicy