🔥 #Day10 of Python for AI Challenge
Working with CSV files is your first step into real-world data handling 📊
Today you’ll learn how to read, analyze, and extract insights from structured datasets using Python.
Small step, big move toward Data Science
🔥 چالش ۳۰ روزه Python for AI
#Day11
🎯 موضوع:
Error Handling (try / except)
⭐ سطح:
متوسط
⏳ زمان تخمینی:
20 تا 35 دقیقه
📝 صورت مسئله:
دیتاست زیر را در برنامه قرار دهید:
students = {
"Ali": 17.8,
"Sara": 18.5,
"Reza": 15.2,
"Nima": 18.1,
"Parsa": 16.4
}
برنامه باید:
✅ نام دانشجو را از کاربر دریافت کند.
✅ GPA او را نمایش دهد.
اما اگر دانشجو در دیتاست وجود نداشت:
Student not found!
را نمایش دهد و برنامه متوقف نشود.
📌 نمونه خروجی:
Enter student name: Ali
GPA: 17.8
یا
Enter student name: John
Student not found!
🎯 Bonus Challenge
اگر کاربر ورودی خالی وارد کرد:
Please enter a valid name.
نمایش داده شود.
📋 هدف:
یادگیری مدیریت خطاها؛ مهارتی که در تمام پروژههای واقعی Python، Data Science و AI ضروری است.
⏰ مهلت:
فردا ساعت 20:00
https://eitaa.com/joinchat/956171922Cb501d5a32f
🔥 چالش ۳۰ روزه Python for AI
#Day12
🎯 موضوع:
Object-Oriented Programming (OOP)
⭐ سطح:
متوسط
⏳ زمان تخمینی:
25 تا 40 دقیقه
📝 صورت مسئله:
تا اینجا اطلاعات دانشجویان را با Dictionary ذخیره میکردیم.
امروز میخواهیم از OOP استفاده کنیم.
یک کلاس به نام:
Student
ایجاد کنید.
این کلاس باید شامل موارد زیر باشد:
✅ name
✅ gpa
✅ credits
و یک متد به نام:
show_info()
که اطلاعات دانشجو را نمایش دهد.
📌 نمونه خروجی:
Name: Ali
GPA: 17.8
Credits: 70
🎯 Bonus Challenge
متدی به نام:
get_status()
بنویسید که وضعیت دانشجو را برگرداند:
Graduated
In Progress
📋 هدف امروز:
آشنایی با OOP و ساخت مدل دادهای برای دانشجویان.
⏰ مهلت ارسال پاسخ:
فردا ساعت 20:00
🔥 چالش ۳۰ روزه Python for AI
#Day13
🎯 موضوع:
Searching & Filtering Data
⭐ سطح:
متوسط
⏳ زمان تخمینی:
25 تا 40 دقیقه
📝 صورت مسئله:
دیتاست زیر را در برنامه قرار دهید:
students = [
{"name": "Ali", "gpa": 17.8},
{"name": "Sara", "gpa": 18.5},
{"name": "Reza", "gpa": 15.2},
{"name": "Nima", "gpa": 18.1},
{"name": "Parsa", "gpa": 16.4},
{"name": "Arman", "gpa": 17.1},
{"name": "Mina", "gpa": 19.0}
]
برنامه باید:
✅ تمام دانشجویان دارای GPA بالاتر از 18 را نمایش دهد.
✅ تمام دانشجویان دارای GPA کمتر از 16 را نمایش دهد.
✅ تعداد دانشجویان هر گروه را محاسبه کند.
📌 نمونه خروجی:
Students With GPA >= 18:
Sara
Nima
Mina
Count: 3
🎯 Bonus Challenge
دانشجویی را پیدا کنید که GPA او به 18 نزدیکتر است.
📋 هدف امروز:
تمرین فیلتر کردن دادهها؛ یکی از مهمترین مهارتها در Data Analysis.
⏰ مهلت ارسال پاسخ:
فردا ساعت 20:00
🔥 چالش ۳۰ روزه 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()