لماذا لا ينفذ الشرط الأول ويضيف إلى القائمة؟ بل يذهب مباشرة إلى else
ملاحظة: الرقم 1 طبعته للتأكد فقط إن كان ينفذ الشرط أم لا لأنه في بعض المحاولات لا يطبع شيئاً
بناءً على الشيفرة التي تظهر في الصورة، المشكلة قد تكون ناتجة عن مقارنة search_id
مع x
في السطر if search_id == x:
. يجب التأكد من أن نوع البيانات للمتغيرين متطابق (أي كلاهما نصوص أو كلاهما أرقام).
يمكنك المحاولة بتحويل search_id
و x
إلى نصوص باستخدام الدالة str()
عند المقارنة:
if searching == "1":
search_id = input("Enter the membership ID to search: ")
for x in member:
if str(search_id) == str(x):
search.append(x)
print(1)
break
else:
print("ID not found! ")
إذا استمرت المشكلة، تأكد من أن المتغير member
يحتوي على العناصر المتوقعة وأن البيانات فيه مطابقة للمدخلات التي تقوم بالبحث عنها.
** دا جزء من كود مشروع الوحدة الأولى آخر تحدي**
ببساطة ي صديقي الكود بيذهب إلى else
لأنك حاطتها بداخل لوب …بالتالي اول ميبدأ اللوب
اولا كدا لو ملقيش x تساوي هينزل ل else .
حتي لو ال id موجود.
الحل بقي انك هشيل else خالص من اللوب لان already
if دي مش عاوزالها else.
وبسكدا
أشكركما… جزيتما خيراً… لكن جربت الطريقتين ولم تنجح…
ها هو الكود كاملاً:
ولم تنجح ؟
طب لماذا
علمي علمك والله🤷🏻♂️
لا يوجد هنا كود حاول ترسل مرة اخرى او حتى صورة
جرب هذا الكود في صفحة مختلفة واذا عمل الكود دون اخطاء قارن بين كودك وهذا الكود لتجد الاخطاء ثم ارسلي صور مكان وجود الاخطاء لنفهم لماذا لم يعملوا واي سؤال اخر انا موجود للمساعدة
الكود المعدل:
import os
import time
def clear_screen():
os.system("cls" if os.name == "nt" else "clear")
class Member:
def __init__(self, first_name, last_name, id, status="inactive"):
self.first_name = first_name
self.last_name = last_name
self.id = id
self.status = status
def display_members(self):
print(f"First name: {self.first_name} ")
print(f"Last name: {self.last_name} ")
print(f"Membership ID: {self.id} ")
print(f"Membership Status: {self.status} ")
print("-" * 20)
def add_member():
first_name = input("Enter your first name: ")
last_name = input("Enter your last name: ")
id = input("Enter membership ID: ")
status = input("Enter membership status, or click enter: ")
return Member(first_name, last_name, id, status)
def search_member(members):
search = []
clear_screen()
print("Search by:\n")
print("1. Membership ID")
print("2. First name")
print("3. Membership status\n")
searching = input("Enter your choice: ")
if searching == "1":
search_id = input("Enter the membership ID to search: ")
for x in members:
if x.id == search_id:
search.append(x)
print("Member found!")
break
else:
print("ID not found!")
elif searching == "2":
search_name = input("Enter the first name to search: ").lower()
for x in members:
if x.first_name.lower() == search_name:
search.append(x)
if search:
for x in search:
x.display_members()
else:
print("Name not found!")
elif searching == "3":
search_status = input("Enter the membership status to search (active/inactive): ").lower()
for x in members:
if x.status.lower() == search_status:
search.append(x)
if search:
for x in search:
x.display_members()
else:
print("Status not found!")
else:
print("Invalid choice!")
def display_all_members(members):
for member in members:
member.display_members()
members = []
while True:
print("Welcome to Gym Membership Management:\n")
print("1. Add new member")
print("2. Display all members")
print("3. Search for a member")
print("4. Exit\n")
choice = input("Enter your choice: ")
if choice == "1":
clear_screen()
members.append(add_member())
print("Member added successfully!")
time.sleep(2)
clear_screen()
elif choice == "2":
clear_screen()
print("Displaying all members...")
time.sleep(2)
for i in members:
i.display_members()
elif choice == "3":
search_member(members)
time.sleep(2)
elif choice == "4":
print("Exiting...")
break
else:
print("Invalid choice, please try again.")
time.sleep(2)
clear_screen()
التعديلات:
- عند إضافة عضو جديد، يتم تنظيف الشاشة ثم عرض رسالة تأكيد بأن العضو تم إضافته بنجاح.
- عند عرض جميع الأعضاء، يتم تنظيف الشاشة أولاً، ثم عرض جميع الأعضاء بعد فترة انتظار قصيرة.
- إضافة فترة انتظار (
time.sleep(2)
) بعد عرض جميع الأعضاء وبعد البحث عن عضو لتحسين تجربة المستخدم. - عند اختيار الخروج، يتم عرض رسالة “Exiting…” ويتم الخروج من البرنامج.
بهذه الطريقة، يصبح البرنامج أكثر تفاعلية وسلاسة.
كدا عرفت الخلل .
حضرتك انت لما بتشيك بتشيك ع ال object نفسه
وليس الattribute ال بداخله سواء الاسم او id ال status + زي مقولتلك مفيش else+ بعد لما شيكت وطلعت ال المستخدم بيبحث عنه وضفته للقائمة search
المفروض بقي تطبع سواء كان موجود او لاء😉
ف هنضيف الكود ده
if search:
print(“\n Waiting…”)
time.sleep(2)
clear_terminal()
print(“Found member:\n”)
for x in search:
x.display()
else:
print(“this member isn’t found.”)
نصيحه خلي داله مسح الشاشة ف السطر 71 عشان متكررهااش كل مره المستخدم يختاار اختيار:pinching_hand:
الحلقة بسيط كل ما عليك هو تغيير الشرط قليلا فيصبح
if search_id == x.membership_id:
لأن x هنا object و نحن نريد أن نأخذ منها ال id
شكراً… جزاكم الله خيراً تم حل المشكلة
كان الخطأ في الشرط if x بدون تحديد أي معامل من الكائن
if x . id
ممتاز جدا اي مشكلة اخرى موجود للمساعدة وفق الله الجميع
بارك الله فيكم… شكراً جزيلاً