اذهب إلى المحتوى
  • 0

الكود يعمل. لكن هل طريقتي في كتابته سليمة وواضحة ؟

ولاء عبدالعزيز3

السؤال

مرحبًا،
ما أرغب به هو سؤال المستخدم إن كان يرغب بإضافة اسم إلى جهات اتصال، أو البحث عن طريق الاسم أو الهاتف.
مع التأكيد أن لا تقل الأرقام أو تزيد عن 10 .

الكود يعمل بشكل صحيح، لكن هل طريقة كتابتي للكود صحيحة ؟ من خلال ترتيب الفقرات ؟ هي يمكن اختصاره وأنا قمت بإطالته ؟

phone_numbers = ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666", "7777777777"]
names = ["amal", "Mohammed", "Khadijah", "Abdullah", "Rawan", "Faisal", "Layla"]


def search_by_phone_number(phone_number):
    while len(phone_number) != 10 and not int(phone_number):
        print("This is invalid number")
        search_by_phone_number(input("enter phone number: "))
    if phone_number not in phone_numbers:
        print("Sorry, the number is not found")
    else:
        print(names[phone_numbers.index(phone_number)])


def search_by_name(name):
    if name not in names:
        print("Sorry, the name is not found")
    else:
        print(phone_numbers[names.index(name)])


def add_user(username, user_phone_number):
    phone_numbers.append(user_phone_number)
    names.append(username)


print("if you want to search write \"s\"\n if you want to add write \"a\"")
want = input("I want to: ")

if want == "s":
    print("if you want to search by phone number write \"p\"\n if you want to search by name write \"n\"")
    want = input("I want to: ")
    if want == "p":
        search_by_phone_number(input("enter phone number: "))
    elif want == "n":
        search_by_name(input("enter name: "))
    else:
        print("write p or n \n please try again")
elif want == "a":
    add_user(input("enter name: "), input("enter phone number: "))
else:
    print("write s or a \n please try again")

شكرًا لكم.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

نعم ، يبدو أن الرمز صحيح. إنه برنامج بسيط يتيح لك البحث عن رقم هاتف أو اسم وإضافة مستخدمين جدد. ومع ذلك ، هناك بعض الأشياء التي يمكن تحسينها:

في دالة search_by_phone_number ، الشرط أثناء

while len(phone_number) != 10 and not int(phone_number)

 سيتم تقييمه دائمًا إلى True لأن عامل التشغيل يتطلب أن يكون كلا الشرطين صحيحًا

not int(phone_number)

سيكون دائمًا صحيحًا كما

int(phone_number)

إلى ValueError إذا لم يكن phone_number عددًا صحيحًا.

لا يتعامل الرمز مع الأخطاء التي قد تحدث ، مثل إذا قام المستخدم بإدخال رقم هاتف غير صحيح في دالةsearch_by_phone_number.

لا يتعامل الرمز مع التكرارات ، لذا فإن إضافة مستخدم برقم هاتف أو اسم موجود بالفعل سيؤدي إلى إضافة نفس رقم الهاتف أو الاسم عدة مرات.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك تنفيذ النصائح التي اخبرك بها الأستاذ بلال, بالاضافة الى انك يمكنك استخدام هياكل بيانات افضل من تخزين الاسماء والارقام على هيئة مصفوفتين, على سبيل المثال, يمكنك إنشاء object ويكون الkey للobject هو الاسم والvalue هي رقم الهاتف او العكس, سيحسن ذلك من الكود خاصتك بشكلٍ أفضل

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 2‏/2‏/2023 at 10:51 قال بلال زيادة:

نعم ، يبدو أن الرمز صحيح. إنه برنامج بسيط يتيح لك البحث عن رقم هاتف أو اسم وإضافة مستخدمين جدد. ومع ذلك ، هناك بعض الأشياء التي يمكن تحسينها:

في دالة search_by_phone_number ، الشرط أثناء

while len(phone_number) != 10 and not int(phone_number)

 سيتم تقييمه دائمًا إلى True لأن عامل التشغيل يتطلب أن يكون كلا الشرطين صحيحًا

not int(phone_number)

سيكون دائمًا صحيحًا كما

int(phone_number)

إلى ValueError إذا لم يكن phone_number عددًا صحيحًا.

لا يتعامل الرمز مع الأخطاء التي قد تحدث ، مثل إذا قام المستخدم بإدخال رقم هاتف غير صحيح في دالةsearch_by_phone_number.

لا يتعامل الرمز مع التكرارات ، لذا فإن إضافة مستخدم برقم هاتف أو اسم موجود بالفعل سيؤدي إلى إضافة نفس رقم الهاتف أو الاسم عدة مرات.

جزيت خيرًا.
قمت بتطبيق ما ذكرته .. هذا الكود كالتالي :

phone_numbers = ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666", "7777777777"]
names = ["amal", "Mohammed", "Khadijah", "Abdullah", "Rawan", "Faisal", "Layla"]


def search_by_phone_number(phone_number):
    while len(phone_number) != 10 or not phone_number.isnumeric():
        print("This is invalid number")
        phone_number = input("enter phone number: ")
    if phone_number not in phone_numbers:
        print("Sorry, the number is not found")
    else:
        print(names[phone_numbers.index(phone_number)])


def search_by_name(name):
    if name not in names:
        print("Sorry, the name is not found")
    else:
        print(phone_numbers[names.index(name)])


def add_user(username, user_phone_number):
    while username in names or user_phone_number in phone_numbers:
        print("this name or phone number is already exists")
        username = input("enter name: ")
        user_phone_number = input("enter phone number: ")
    phone_numbers.append(user_phone_number)
    names.append(username)


print("if you want to search write \"s\"\nif you want to add write \"a\"\nif you want to quit write \"q\"")
want = input("I want to: ")
while want != "q":
    if want == "s":
        print(
            "if you want to search by phone number write \"p\"\nif you want to search by name write \"n\"\nif you want to quit write \"q\"")
        want = input("I want to: ")
        if want == "p":
            search_by_phone_number(input("enter phone number: "))
        elif want == "n":
            search_by_name(input("enter name: "))
        elif want == "q":
            break
        else:
            print("write p or n \nplease try again")
    elif want == "a":
        add_user(input("enter name: "), input("enter phone number: "))
    else:
        print("write s or a \nplease try again")
    want = input("I want to: ")

'''
if want == "s":
    print("if you want to search by phone number write \"p\"\nif you want to search by name write \"n\"\nif you want to quit write \"q\"")
    want = input("I want to: ")
    if want == "p":
        search_by_phone_number(input("enter phone number: "))
    elif want == "n":
        search_by_name(input("enter name: "))
    else:
        print("write p or n \nplease try again")
elif want == "a":
    add_user(input("enter name: "), input("enter phone number: "))
else:
    print("write s or a \nplease try again")
'''


 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ On 2‏/2‏/2023 at 18:50 قال شرف الدين حفني:

يمكنك تنفيذ النصائح التي اخبرك بها الأستاذ بلال, بالاضافة الى انك يمكنك استخدام هياكل بيانات افضل من تخزين الاسماء والارقام على هيئة مصفوفتين, على سبيل المثال, يمكنك إنشاء object ويكون الkey للobject هو الاسم والvalue هي رقم الهاتف او العكس, سيحسن ذلك من الكود خاصتك بشكلٍ أفضل

بوركت على هكذا نصيحة. هذا الشكل اللي تقصده ؟ 

phone_numbers = {'amal': 1111111111,
                 "Mohammed": 2222222222,
                 "Khadijah": 3333333333,
                 "Abdullah": 4444444444,
                 "Rawan": 5555555555,
                 "Faisal": 6666666666,
                 "Layla": 7777777777}


def search_by_phone_number(phone_number):
    while len(phone_number) != 10 or not phone_number.isnumeric():
        print("This is invalid number")
        phone_number = input("enter phone number: ")
    m = True
    for key in phone_numbers:
        if int(phone_numbers[key]) == int(phone_number):
            print(key)
            m = False
    if m:
        print("Sorry, the number is not found")


def search_by_name(name):
    if name not in phone_numbers:
        print("Sorry, the name is not found")
    else:
        print(phone_numbers[name])


def add_user(username, user_phone_number):
    while username in phone_numbers:
        print("this name is already exists")
        username = input("enter name: ")
        user_phone_number = input("enter phone number: ")
    while len(user_phone_number) != 10 or not user_phone_number.isnumeric():
        print("This is invalid number")
        user_phone_number = input("enter phone number: ")
    m = True
    while m:
        for key in phone_numbers:
            if int(phone_numbers[key]) == int(user_phone_number):
                print("this phone number is already exists")
                m = False
                break
        if m:
            break
        m = True
        user_phone_number = input("enter phone number: ")
    phone_numbers[username] = user_phone_number


print("if you want to search write \"s\"")
print("if you want to add write \"a\"")
print("if you want to quit write \"q\"")
want = input("I want to: ")
while want != "q":
    if want == "s":
        print("if you want to search by phone number write \"p\"")
        print("if you want to search by name write \"n\"")
        print("if you want to quit write \"q\"")
        want = input("I want to: ")
        if want == "p":
            search_by_phone_number(input("enter phone number: "))
        elif want == "n":
            search_by_name(input("enter name: "))
        elif want == "q":
            break
        else:
            print("write \"p\" or \"n\" or \"q\"\nplease try again")
    elif want == "a":
        add_user(input("enter name: "), input("enter phone number: "))
    else:
        print("write \"s\" or \"a\" or \"q\"\nplease try again")
    want = input("I want to: ")

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 4 ساعة قال ولاء عبدالعزيز:

بوركت على هكذا نصيحة. هذا الشكل اللي تقصده ؟ 

phone_numbers = {'amal': 1111111111,
                 "Mohammed": 2222222222,
                 "Khadijah": 3333333333,
                 "Abdullah": 4444444444,
                 "Rawan": 5555555555,
                 "Faisal": 6666666666,
                 "Layla": 7777777777}


def search_by_phone_number(phone_number):
    while len(phone_number) != 10 or not phone_number.isnumeric():
        print("This is invalid number")
        phone_number = input("enter phone number: ")
    m = True
    for key in phone_numbers:
        if int(phone_numbers[key]) == int(phone_number):
            print(key)
            m = False
    if m:
        print("Sorry, the number is not found")


def search_by_name(name):
    if name not in phone_numbers:
        print("Sorry, the name is not found")
    else:
        print(phone_numbers[name])


def add_user(username, user_phone_number):
    while username in phone_numbers:
        print("this name is already exists")
        username = input("enter name: ")
        user_phone_number = input("enter phone number: ")
    while len(user_phone_number) != 10 or not user_phone_number.isnumeric():
        print("This is invalid number")
        user_phone_number = input("enter phone number: ")
    m = True
    while m:
        for key in phone_numbers:
            if int(phone_numbers[key]) == int(user_phone_number):
                print("this phone number is already exists")
                m = False
                break
        if m:
            break
        m = True
        user_phone_number = input("enter phone number: ")
    phone_numbers[username] = user_phone_number


print("if you want to search write \"s\"")
print("if you want to add write \"a\"")
print("if you want to quit write \"q\"")
want = input("I want to: ")
while want != "q":
    if want == "s":
        print("if you want to search by phone number write \"p\"")
        print("if you want to search by name write \"n\"")
        print("if you want to quit write \"q\"")
        want = input("I want to: ")
        if want == "p":
            search_by_phone_number(input("enter phone number: "))
        elif want == "n":
            search_by_name(input("enter name: "))
        elif want == "q":
            break
        else:
            print("write \"p\" or \"n\" or \"q\"\nplease try again")
    elif want == "a":
        add_user(input("enter name: "), input("enter phone number: "))
    else:
        print("write \"s\" or \"a\" or \"q\"\nplease try again")
    want = input("I want to: ")

 

أجل فإن ذلك يعطي الكود معنى أفضل كما يسهل من عملية البحث من خلال الإسم

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...