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

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

لینک چنل ایتا:
https://eitaa.com/learnpythonicy
Download Telegram
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
🔥 چالش ۳۰ روزه Python for AI

#Day5

🎯 موضوع:
Lists & Basic Statistics

سطح:
متوسط

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

📝 صورت مسئله:

فرض کنید نمرات یک دانشجو در طول ترم به صورت زیر ذخیره شده است:

scores = [18, 15, 20, 17, 19, 14, 16]

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

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

بیشترین نمره را پیدا کند.

کمترین نمره را پیدا کند.

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

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

Average Score: 17.0
Highest Score: 20
Lowest Score: 14
Scores Above Average: 3

🎯 Bonus Challenge

نمرات را به صورت نزولی (Descending) نمایش دهید.

📋 هدف امروز:

آشنایی با List و انجام تحلیل‌های آماری ساده روی داده‌ها.

مهلت ارسال پاسخ:
فردا ساعت 20:00
آموزش پایتون
🔥 چالش ۳۰ روزه Python for AI #Day5 🎯 موضوع: Lists & Basic Statistics سطح: متوسط زمان تخمینی: 20 تا 30 دقیقه 📝 صورت مسئله: فرض کنید نمرات یک دانشجو در طول ترم به صورت زیر ذخیره شده است: scores = [18, 15, 20, 17, 19, 14, 16] برنامه‌ای بنویسید که:…
پاسخ چالش Day 5


💡 نکته مهم:

در تحلیل داده‌ها همیشه اول یک “baseline statistics” مثل میانگین، بیشینه و کمینه محاسبه می‌شود، چون پایه بسیاری از الگوریتم‌های Machine Learning همین مفاهیم ساده هستند.

🎁و Bonus انجام شد:
لیست نمرات به صورت نزولی با "sorted(scores, reverse=True)" مرتب شد.

@learnpythonicy
2
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 چالش ۳۰ روزه Python for AI

#Day6

🎯 موضوع:
Dictionary + Data Analysis


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

راه ارتباطی (کامنت،گروه، بات)
@learnpythonicychat
@learnpythonicyBot
_
@learnpythonicy
👨‍💻2
This media is not supported in your browser
VIEW IN TELEGRAM
🥹 بامزه‌ترین قفل صفحه برای معتادای وب گردی!


👨🏻‍💻 یه نابغه اومده یه اکستنشن برای مرورگر ساخته که وقتی زیاد پشت سیستم کار می‌کنی، یهو یه گربه نارنجی گنده میاد کل مانیتورت رو می‌گیره و نمی‌ذاره کار کنی تا بری استراحت کنی! 🐈


❤️ افزونه Cat Gatekeeper اومده تا با یه گربه‌ی گنده، مانیتورت رو تسخیر کنه! یعنی رسماً مانیتور قفل میشه و هیچ کاری نمی‌تونید بکنید جز اینکه دست از کار بکشید، از پشت میز بلند بشید و یه استراحتی به چشماتون بدید.


✍🏼 Shahin
🔥 چالش ۳۰ روزه Python for AI

#Day7

🎯 Mini Project #1

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

راه ارتباطی (کامنت،گروه، بات)
@learnpythonicychat
@learnpythonicyBot
_
@learnpythonicy
چالش‌ها را انجام می‌دید یا تنبلی می‌کنید؟؟؟؟ 🫩🫪

فقط چندتا انگشت شمار هستند که برام می‌فرستن 🥵☺️
آموزش پایتون
🔥 چالش ۳۰ روزه Python for AI #Day7 🎯 Mini Project #1 مهلت ارسال پاسخ: فردا ساعت 20:00 راه ارتباطی (کامنت،گروه، بات) @learnpythonicychat @learnpythonicyBot _ @learnpythonicy
پاسخ چالش روز هفتم


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_CREDITS = 140


def get_academic_level(gpa):
if gpa >= 18:
return "Excellent"
elif gpa >= 16:
return "Good"
elif gpa >= 14:
return "Average"
else:
return "Needs Improvement"


def get_status(credits):
if credits >= TOTAL_CREDITS:
return "Graduated"
else:
return "In Progress"


def show_student_info(name):
credits = students[name]["credits"]
gpa = students[name]["gpa"]

remaining_credits = TOTAL_CREDITS - credits
progress_percentage = (credits / TOTAL_CREDITS) * 100
status = get_status(credits)
academic_level = get_academic_level(gpa)

print("\n------ Student Information ------")
print("Name:", name)
print("Credits Passed:", credits)
print("GPA:", gpa)
print("Remaining Credits:", remaining_credits)
print(f"Progress Percentage: {progress_percentage:.2f}%")
print("Status:", status)
print("Academic Level:", academic_level)


def calculate_average_gpa():
total_gpa = 0

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

return total_gpa / len(students)


def find_top_student():
top_student = None
top_gpa = 0

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

if gpa > top_gpa:
top_gpa = gpa
top_student = student

return top_student, top_gpa


def show_above_average_students(average_gpa):
print("\nStudents With GPA Above Average:")

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

if gpa > average_gpa:
print(student, "-", gpa)


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

if student_name in students:
show_student_info(student_name)

top_student, top_gpa = find_top_student()
average_gpa = calculate_average_gpa()

print("\n------ Class Analytics ------")
print(f"Top Student: {top_student} ({top_gpa})")
print(f"Average GPA of All Students: {average_gpa:.2f}")

show_above_average_students(average_gpa)

else:
print("Student not found")