🔥 چالش ۳۰ روزه Python for AI
#Day14
🎯 موضوع:
Mini Project — Student Data Analysis System
⭐ سطح:
متوسط
⏳ زمان تخمینی:
40 تا 60 دقیقه
📝 صورت مسئله:
امروز قرار است با استفاده از مطالب روزهای قبل، یک سیستم کوچک تحلیل اطلاعات دانشجویان بسازید.
فایل زیر را با نام:
students.csv
ایجاد کنید:
name,gpa,credits
Ali,17.8,70
Sara,18.5,95
Reza,15.2,40
Nima,18.1,120
Parsa,16.4,55
Arman,17.1,80
Mina,19.0,140
Ava,16.8,35
Yasmin,18.7,110
Amir,15.9,65
یک کلاس به نام:
Student
ایجاد کنید که شامل ویژگیهای زیر باشد:
✅ "name"
✅ "gpa"
✅ "credits"
و متدهای زیر را داشته باشد:
✅ "show_info()"
برای نمایش اطلاعات دانشجو
✅ "get_status()"
اگر تعداد واحدهای دانشجو حداقل 120 بود:
Graduated
و در غیر این صورت:
In Progress
برنامه باید:
✅ فایل CSV را بخواند.
✅ اطلاعات هر دانشجو را به یک شیء از کلاس "Student" تبدیل کند.
✅ تعداد کل دانشجویان را محاسبه کند.
✅ میانگین GPA را محاسبه کند.
✅ دانشجوی دارای بالاترین GPA را پیدا کند.
✅ دانشجویان دارای GPA برابر یا بیشتر از 18 را نمایش دهد.
✅ دانشجویان دارای GPA کمتر از 16 را نمایش دهد.
✅ نام یک دانشجو را از کاربر دریافت و اطلاعات او را جستوجو کند.
✅ اگر دانشجو پیدا نشد، پیام زیر را نمایش دهد:
Student not found!
✅ با استفاده از "try / except" خطاهای احتمالی خواندن فایل را مدیریت کند.
📌 نمونه خروجی:
===== Student Analysis System =====
Total Students: 10
Average GPA: 17.35
Top Student: Mina (19.0)
Students With GPA >= 18:
Sara
Nima
Mina
Yasmin
Count: 4
Students With GPA < 16:
Reza
Amir
Count: 2
Enter student name: Nima
Name: Nima
GPA: 18.1
Credits: 120
Status: Graduated
🎯 Bonus Challenge
یک منوی ساده طراحی کنید:
1. Show Summary
2. Search Student
3. Show Top Students
4. Show Graduated Students
5. Exit
برنامه باید تا زمانی که کاربر گزینه "5" را انتخاب نکرده است، متوقف نشود.
📋 هدف امروز:
ترکیب مهارتهای روزهای قبل و ساخت اولین سیستم کوچک تحلیل داده با Python.
شما تا اینجا یاد گرفتهاید:
✅ دادهها را از فایل بخوانید.
✅ دادهها را مدلسازی کنید.
✅ خطاها را مدیریت کنید.
✅ دادهها را جستوجو و فیلتر کنید.
✅ اطلاعات آماری استخراج کنید.
از روز بعد وارد NumPy میشویم تا همین محاسبات را سریعتر، کوتاهتر و حرفهایتر انجام دهیم.
⏰ مهلت ارسال پاسخ:
فردا ساعت 20:00
🔥 چالش ۳۰ روزه Python for AI
#Day15
🎯 موضوع:
Introduction to NumPy
⭐ سطح:
متوسط
⏳ زمان تخمینی:
20 تا 40 دقیقه
📝 صورت مسئله:
کتابخانه NumPy را نصب و import کنید.
آرایه زیر را در برنامه قرار دهید:
scores = [18, 15, 20, 17, 19, 14, 16, 18, 20, 17]
آن را به NumPy Array تبدیل کنید.
برنامه باید:
✅ میانگین نمرات را محاسبه کند.
✅ بیشترین نمره را پیدا کند.
✅ کمترین نمره را پیدا کند.
✅ مجموع نمرات را محاسبه کند.
📌 نمونه خروجی:
Average: 17.4
Maximum: 20
Minimum: 14
Sum: 174
🎯 Bonus Challenge
انحراف معیار (Standard Deviation) نمرات را محاسبه کنید.
📋 هدف امروز:
آشنایی با NumPy و انجام محاسبات عددی سریعتر از Python معمولی.
⏰ مهلت ارسال پاسخ:
فردا ساعت 20:00
آموزش پایتون
🔥 چالش ۳۰ روزه Python for AI #Day14 🎯 موضوع: Mini Project — Student Data Analysis System ⭐ سطح: م
import csv
class Student:
def init(self, name, gpa, credits):
self.name = name
self.gpa = gpa
self.credits = credits
def get_status(self):
if self.credits >= 120:
return "Graduated"
return "In Progress"
def show_info(self):
print(f"Name: {self.name}")
print(f"GPA: {self.gpa}")
print(f"Credits: {self.credits}")
print(f"Status: {self.get_status()}")
def load_students(filename):
students = []
try:
with open(filename, "r", encoding="utf-8") as file:
reader = csv.DictReader(file)
for row in reader:
student = Student(
name=row["name"].strip(),
gpa=float(row["gpa"]),
credits=int(row["credits"])
)
students.append(student)
except FileNotFoundError:
print(f"Error: {filename} was not found.")
except (ValueError, KeyError):
print("Error: Invalid data in CSV file.")
except OSError as error:
print(f"Error reading file: {error}")
return students
def show_summary(students):
if not students:
print("No student data available.")
return
average_gpa = sum(student.gpa for student in students) / len(students)
top_student = max(students, key=lambda student: student.gpa)
high_gpa_students = [
student for student in students
if student.gpa >= 18
]
low_gpa_students = [
student for student in students
if student.gpa < 16
]
print("\n= Student Analysis System =")
print(f"\nTotal Students: {len(students)}")
print(f"Average GPA: {average_gpa:.2f}")
print(
f"Top Student: {top_student.name} "
f"({top_student.gpa})"
)
print("\nStudents With GPA >= 18:")
for student in high_gpa_students:
print(student.name)
print(f"\nCount: {len(high_gpa_students)}")
print("\nStudents With GPA < 16:")
for student in low_gpa_students:
print(student.name)
print(f"\nCount: {len(low_gpa_students)}")
def search_student(students):
name = input("\nEnter student name: ").strip()
if not name:
print("Please enter a valid name.")
return
for student in students:
if student.name.lower() == name.lower():
print()
student.show_info()
return
print("Student not found!")
def show_top_students(students):
top_students = sorted(
students,
key=lambda student: student.gpa,
reverse=True
)
print("\n= Top Students =")
for rank, student in enumerate(top_students, start=1):
print(f"{rank}. {student.name} - {student.gpa}")
def show_graduated_students(students):
graduated_students = [
student for student in students
if student.get_status() == "Graduated"
]
print("\n= Graduated Students =")
if not graduated_students:
print("No graduated students found.")
return
for student in graduated_students:
print(
f"{student.name} - "
f"{student.credits} Credits"
)
def show_menu():
print("\n===== Student Analysis Menu =====")
print("1. Show Summary")
print("2. Search Student")
print("3. Show Top Students")
print("4. Show Graduated Students")
print("5. Exit")
def main():
students = load_students("students.csv")
if not students:
return
while True:
show_menu()
choice = input("\nEnter your choice: ").strip()
if choice == "1":
show_summary(students)
elif choice == "2":
search_student(students)
elif choice == "3":
show_top_students(students)
elif choice == "4":
show_graduated_students(students)
elif choice == "5":
print("\nProgram closed.")
break
else:
print("\nInvalid choice. Please select 1 to 5.")
if name == "__main__":
main()
🔥 چالش ۳۰ روزه Python for AI
#Day16
🎯 موضوع:
NumPy Arrays & Data Analysis
⭐ سطح:
متوسط
⏳ زمان تخمینی:
25 تا 45 دقیقه
📝 صورت مسئله:
فرض کنید نمرات دانشجویان در یک آرایه NumPy ذخیره شدهاند:
scores = [18, 15, 20, 17, 19, 14, 16, 18, 20, 17]
برنامه باید:
✅ تمام نمرات بالاتر از میانگین را نمایش دهد.
✅ تعداد نمرات بالاتر از میانگین را محاسبه کند.
✅ درصد نمرات بالاتر از میانگین را محاسبه کند.
📌 نمونه خروجی:
Average Score: 17.4
Scores Above Average:
18
20
19
18
20
Count: 5
Percentage: 50%
🎯 Bonus Challenge
تمام نمرات کمتر از میانگین را نیز نمایش دهید.
📋 هدف امروز:
تمرین Filtering و Boolean Indexing؛ مفهومی که بعدها در Pandas و Machine Learning بسیار استفاده میشود.
⏰ مهلت ارسال پاسخ:
فردا ساعت 20:00
🔥 چالش ۳۰ روزه Python for AI
#Day17
🎯 موضوع:
Introduction to Pandas
📝 صورت مسئله:
دیتاست زیر را در قالب DataFrame ایجاد کنید:
data = {
"Name": ["Ali", "Sara", "Reza", "Nima", "Parsa"],
"GPA": [17.8, 18.5, 15.2, 18.1, 16.4],
"Credits": [70, 95, 40, 120, 55]
}
برنامه باید:
✅ DataFrame را نمایش دهد.
✅ میانگین GPA را محاسبه کند.
✅ بهترین دانشجو را پیدا کند.
✅ دانشجویانی که GPA آنها بیشتر از 18 است را نمایش دهد.
🎯 Bonus Challenge
یک ستون جدید به نام:
Status
اضافه کنید.
اگر GPA ≥ 18:
Excellent
در غیر این صورت:
Normal
📋 هدف امروز:
ورود به Pandas؛ مهمترین ابزار تحلیل داده در Python.
16.7M حجم رسانه بالاست
مشاهده در ایتا
🔥 وقتشه قدرت واقعی چیزهایی که تا امروز یاد گرفتیم رو ببینیم!
از Day 1 تا Day 17 چیا یادگرفنیم؟!
✅ Variables
✅ Conditions
✅ Loops
✅ Functions
✅ Lists & Dictionaries
✅ File Handling
✅ CSV
✅ Error Handling
✅ OOP
✅ NumPy
✅ Pandas
شاید هرکدام از این تمرینها بهتنهایی ساده به نظر میرسیدند؛ اما وقتی کنار هم قرار میگیرند، میتوانند به یک #پروژه کامل و حرفهای تبدیل شوند.
🎥 ویدیویی که میبینید، نمونهای از خروجی همین مسیر است:
Smart Student Success Dashboard
یک داشبورد هوشمند برای:
📊 تحلیل عملکرد دانشجویان
🔍 جستوجوی اطلاعات هر دانشجو
🏆 شناسایی دانشجویان برتر
⚠️ پیدا کردن دانشجویان نیازمند حمایت
📈 نمایش نمودارهای تحلیلی
🎓 بررسی میزان پیشرفت تا فارغالتحصیلی
آموزش پایتون
🔥 وقتشه قدرت واقعی چیزهایی که تا امروز یاد گرفتیم رو ببینیم! از Day 1 تا Day 17 چیا یادگرفنیم؟! ✅ V
🚀 چالش این هفته:
با استفاده از آموختههای Day 1 تا Day 17، نسخه خودتان از این پروژه را بسازید.
لازم نیست طراحی شما دقیقاً شبیه ویدیو باشد.
نسخه ساده، ناقص یا در حال توسعه هم پذیرفته میشود؛ مهم این است که شروع کنید و دانستههایتان را به یک خروجی واقعی تبدیل کنید.
🟢 حداقل امکانات پیشنهادی:
• خواندن اطلاعات از CSV
• نمایش آمار کلی دانشجویان
• جستوجوی دانشجو
• شناسایی دانشجوی برتر
• نمایش وضعیت تحصیلی
• حداقل یک نمودار تحلیلی
🔴 چالش Pro:
• ساخت رابط کاربری با Streamlit
• اضافهکردن فیلتر و نمودارهای تعاملی
• شناسایی دانشجویان At Risk
• امکان دانلود گزارش
• انتشار پروژه در GitHub
⏰ مهلت ارسال پروژه:
تا پایان هفته
https://eitaa.com/joinchat/956171922Cb501d5a32f
📤 میتوانید یکی از موارد زیر را ارسال کنید:
✅ فایل کد
✅ لینک GitHub
✅ اسکرینشات خروجی
✅ ویدیوی کوتاه اجرای پروژه