لماذا لا ينفذ الشرط الأول؟

لماذا لا ينفذ الشرط الأول ويضيف إلى القائمة؟ بل يذهب مباشرة إلى else
ملاحظة: الرقم 1 طبعته للتأكد فقط إن كان ينفذ الشرط أم لا لأنه في بعض المحاولات لا يطبع شيئاً

إعجابَين (2)

بناءً على الشيفرة التي تظهر في الصورة، المشكلة قد تكون ناتجة عن مقارنة 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 يحتوي على العناصر المتوقعة وأن البيانات فيه مطابقة للمدخلات التي تقوم بالبحث عنها.

إعجابَين (2)

** دا جزء من كود مشروع الوحدة الأولى آخر تحدي**

ببساطة ي صديقي الكود بيذهب إلى else
لأنك حاطتها بداخل لوب …بالتالي اول ميبدأ اللوب
اولا كدا لو ملقيش x تساوي هينزل ل else .
حتي لو ال id موجود.

الحل بقي انك هشيل else خالص من اللوب لان already
if دي مش عاوزالها else.
وبسكدا :heart:

إعجابَين (2)

أشكركما… جزيتما خيراً… لكن جربت الطريقتين ولم تنجح…
ها هو الكود كاملاً:

هل الكود ظاهر؟
مع أنني لصقته لكن لا يوجد شيء عندي

إعجاب واحد (1)

:thinking::joy::joy:
ولم تنجح ؟
طب لماذا

علمي علمك والله🤷🏻‍♂️

لا يوجد هنا كود حاول ترسل مرة اخرى او حتى صورة

إعجاب واحد (1)

إعجاب واحد (1)

جرب هذا الكود في صفحة مختلفة واذا عمل الكود دون اخطاء قارن بين كودك وهذا الكود لتجد الاخطاء ثم ارسلي صور مكان وجود الاخطاء لنفهم لماذا لم يعملوا واي سؤال اخر انا موجود للمساعدة

الكود المعدل:

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()

التعديلات:

  1. عند إضافة عضو جديد، يتم تنظيف الشاشة ثم عرض رسالة تأكيد بأن العضو تم إضافته بنجاح.
  2. عند عرض جميع الأعضاء، يتم تنظيف الشاشة أولاً، ثم عرض جميع الأعضاء بعد فترة انتظار قصيرة.
  3. إضافة فترة انتظار (time.sleep(2)) بعد عرض جميع الأعضاء وبعد البحث عن عضو لتحسين تجربة المستخدم.
  4. عند اختيار الخروج، يتم عرض رسالة “Exiting…” ويتم الخروج من البرنامج.

بهذه الطريقة، يصبح البرنامج أكثر تفاعلية وسلاسة.

إعجاب واحد (1)

كدا عرفت الخلل .
حضرتك انت لما بتشيك بتشيك ع ال 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::blush:

إعجاب واحد (1)

الحلقة بسيط كل ما عليك هو تغيير الشرط قليلا فيصبح
if search_id == x.membership_id:
لأن x هنا object و نحن نريد أن نأخذ منها ال id

إعجاب واحد (1)

شكراً… جزاكم الله خيراً تم حل المشكلة
كان الخطأ في الشرط if x بدون تحديد أي معامل من الكائن
if x . id

إعجاب واحد (1)

ممتاز جدا اي مشكلة اخرى موجود للمساعدة وفق الله الجميع

إعجاب واحد (1)

بارك الله فيكم… شكراً جزيلاً

إعجاب واحد (1)