احـــــب ان اشارك معكم احد مشاريع بايثون التي استمتعت جدا في تـــطويرها
تـعريف المشروع : برنامج لتنظيم و حفظ انمياتك المفضلة
.
-
الــــــــرسم التدفــــقي - flowchart :
-
الكـــــــــــود :
import os
def clean():
os.system ("cls" if os.name == 'nt' else "clear")
class Anime:
def __init__(self, name, category, status, rate):
self.name = name
self.category = category
self.status = status
self.rate = rate
def display(self):
print(f"Anime Name : {self.name}")
print(f"Category : {", ".join(self.category)}")
print(f"Status : {self.status}")
print(f"rate : {self.rate}")
print("_" * 20)
anime_list = []
def find_menu():
print("""
Search by :
1. Name
2. Category
3. Status
4. Rate
""")
def rate_menu():
print("""
Rates :
1. 4.5 - 5 ⭐️⭐️⭐️⭐️⭐️
2. 3.5 - 4.5 ⭐️⭐️⭐️⭐️
3. 2.5 - 3.5 ⭐️⭐️⭐️
4. 1.5 - 2.5 ⭐️⭐️
5. < 1.5 ⭐️
""")
def change_menu():
print("""
Anime Information To Change :
1. Name
2. Category
3. Status
4. Rate
""")
def menu():
print("""
____MENU____
1. Add anime
2. Display all anime
3. Find anime
4. Change anime information
5. Exit
""")
def status_menu():
print("""
Anime Status :
1. I would like to watch it 👀
2. I watched it ✔️
3. I'm watching it now ⏳
4. I don't want to watch it ❌
""")
def display_all_anime():
if anime_list:
print("display all anime...\n")
for anime in anime_list:
anime.display()
else:
print("there are no anime to display.")
def create_anime():
name = input("enter the name of anime : ")
category = input("enter the category (by comma ',') : ").split(", ")
while True:
status_menu()
status = input("enter the status of anime (1-4): ")
if status == '1':
status = "I would like to watch it"
break
elif status == '2':
status = "I watched it"
break
elif status == '3':
status = "I'm watching it now"
break
elif status == '4':
status = "I don't want to watch it"
break
else:
print("invalid choice !")
input("press enter to return...")
while True:
rate = input("\nenter the rate of anime (0 - 5 ⭐️) : ")
if float(rate) >= 0 and float(rate) <= 5:
rate = float(rate)
break
else:
print("invalid rate !")
input("press enter to return...")
return Anime(name, category, status, rate)
def find_anime():
while True:
clean()
find_menu()
choice = input("enter your choice (1-4) : ")
anime_found = []
if choice == '1':
clean()
name = input("\nenter the name of anime : ")
for anime in anime_list:
if anime.name == name:
anime_found.append(anime)
break
elif choice == '2':
clean()
category = input("\nenter the category of anime : ")
for anime in anime_list:
if category in anime.category:
anime_found.append(anime)
elif choice == '4':
while True:
clean()
rate_menu()
choice = input("enter your choice (1-3) : ")
if choice == '1':
for anime in anime_list:
if anime.rate <= 5 and anime.rate >= 4.5:
anime_found.append(anime)
elif choice == '2':
for anime in anime_list:
if anime.rate < 4.5 and anime.rate >= 3.5:
anime_found.append(anime)
elif choice == '3':
for anime in anime_list:
if anime.rate < 3.5 and anime.rate >= 2.5:
anime_found.append(anime)
elif choice == '4':
for anime in anime_list:
if anime.rate < 2.5 and anime.rate >= 1.5:
anime_found.append(anime)
elif choice == '5':
for anime in anime_list:
if anime.rate < 1.5:
anime_found.append(anime)
else:
print("invalid choice !")
input("press enter to return...")
continue
break
elif choice == '3':
while True:
status_menu()
choice = input("enter the status of anime (1-4): ")
if choice == '1':
choice = "I would like to watch it"
elif choice == '2':
choice = "I watched it"
elif choice == '3':
choice = "I'm watching it now"
elif choice == '4':
choice = "I don't want to watch it"
else:
print("invalid choice !")
input("press enter to return...")
continue
for anime in anime_list:
if anime.status == choice:
anime_found.append(anime)
break
else:
print("invalid choice !")
input("press enter to return...")
continue
if anime_found:
print("\nAnime found : \n")
for anime in anime_found:
anime.display()
else:
print("\nAnime not found")
break
def change_anime_info():
while True:
anime_to_change = input("\nenter the name of anime : ")
for anime in anime_list:
if anime.name == anime_to_change:
anime_to_change = anime
break
else:
anime_to_change = "not found"
if anime_to_change == "not found":
print("Anime not found !")
break
while True:
change_menu()
choice = input("enter your choice (1-4) : ")
if choice == '1':
new_info = input("enter the new name : ")
anime_to_change.name = new_info
elif choice == '2':
new_info = input("enter the new category : ").split(", ")
anime_to_change.category = new_info
elif choice == '3':
while True:
status_menu()
status = input("enter the new status of anime (1-4): ")
if status == '1':
status = "I would like to watch it"
break
elif status == '2':
status = "I watched it"
break
elif status == '3':
status = "I'm watching it now"
break
elif status == '4':
status = "I don't want to watch it"
break
else:
print("invalid choice !")
input("press enter to return...")
anime_to_change.status = status
elif choice == '4':
while True:
new_info = input("\nenter the new rate of anime (0 - 5 ⭐️) : ")
if float(new_info) >= 0 and float(new_info) <= 5:
new_info = float(new_info)
break
else:
print("invalid rate !")
input("press enter to return...")
anime_to_change.rate = new_info
else:
print("invalid choice !")
continue
print("The information has been updated successfully.")
break
break
while True:
clean()
menu()
user_choice = input("enter your choice (1-5) : ")
if user_choice == '1':
clean()
anime_list.append(create_anime())
print("\nAnime Added Successufully ✅")
elif user_choice == '2':
clean()
display_all_anime()
elif user_choice == '3':
clean()
if anime_list:
find_anime()
else:
print("There are no anime in the anime list !")
elif user_choice == '4':
clean()
if anime_list:
change_anime_info()
else:
print("There is no anime in the list.")
elif user_choice == '5':
print("Exiting...")
break
else:
print("\ninvaid choice !")
input("\npress enter to return...")
.
-
مـــزايا المشروع :
-
إدارة الأنمي بشكل منظم:
-
يمكنك إضافة تفاصيل حول الأنمي مثل الاسم، الفئة، الحالة، والتقييم. هذا يوفر طريقة منظمة لتتبع الأنمي الذي تشاهده أو ترغب في مشاهدته.
-
واجهة مستخدم بسيطة وسهلة الاستخدام:
-
استخدام القوائم والنظام البسيط للتنقل بين الخيارات يجعل التطبيق سهل الاستخدام حتى للمستخدمين غير المتمرسين في التكنولوجيا.
-
البحث والتصنيف:
-
يمكن للمستخدمين البحث عن الأنمي بناءً على الاسم، الفئة، الحالة، أو التقييم. هذا يوفر مرونة كبيرة في العثور على الأنمي المناسب بسرعة.
-
تحديث المعلومات:
-
يتيح للمستخدمين تغيير معلومات الأنمي مثل الاسم، الفئة، الحالة، أو التقييم بعد إضافته. هذه الميزة مهمة للحفاظ على البيانات محدثة.
-
التفاعل مع المستخدم:
-
التطبيق يتفاعل مع المستخدم عبر رسائل توضيحية وإشعارات (مثل “Anime Added Successfully” و “Invalid Choice”). هذا يحسن من تجربة المستخدم ويجعل التفاعل مع التطبيق أكثر سلاسة.
-
المرونة في التقييم:
-
إضافة نظام تقييم مرن يسمح بتحديد تقييم الأنمي من 0 إلى 5 نجوم، مما يساعد على تصنيف الأنمي بشكل أكثر دقة.
-
التحقق من الإدخال:
-
الكود يحتوي على نظام للتحقق من صحة الإدخال، مما يقلل من الأخطاء ويضمن أن البيانات التي يتم إدخالها صحيحة ومناسبة.