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

بديل جملة switch في بايثون؟

Adam Ebrahim

السؤال

أحاول أن أقوم بعمل دالة تقوم بإرجاع قيم ثابتة fixed بناءً على مدخل معين للدالة. في لغات أخرى مثل C أو PHP كنت سأستعمل جملة switch أو case لكن في بايثون لا أعتقد أنه توجد جملة switch من الأساس.

 ما أفضل حل للقيام بمثل هذا الأمر حسب معايير PEP؟

أستعمل python 3.10 (أحدث إصدار)

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

Recommended Posts

  • 2

بداية من بايثون الإصدار 3.10 (2021) يمكنك إستعمال جملة مشابهة لـ switch وهي match .. case كالتالي:
 

x = 'a'
match x:
    case 'a':
        print("X is A")
    case 'b':
        print("X is B")

وكبديل لهذا يمكنك إستعمال القواميس في الإصدارات السابقة كالتالي:

x = {
    'a': "X is A",
    'b': "X is B",
}

print(x['a'])

 

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

  • 0

نعم لا يوجد هناك switch  بلغة البايثون و الطريقة الاستبدالها هو خلق دالة تحتوي على dic أسم الحالة هو مفتاح الحالة و قيمتها هي ما يراد عملة أو ارجاعه كالتالي :

#هنا نقوم بتعريف الدالة 


def numbers_to_strings(argument):
  # هنا نعرف القاموس او الاوبجكت الذي حتوي جميع الحالات 
    switcher = {
        0: "zero",
        1: "one",
        2: "two",
    }
   
  
  #هنا نقوم بإرجاع القيمة حسب قيمة ال Parameter
  # أن لم توجد هذه القيمة فسوف نقوم بأرجاع قيمة nothing
    return switcher.get(argument, "nothing")
  

if __name__ == "__main__":
    argument=0
    print (numbers_to_strings(argument))

 

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

  • 0

لنحاول شرح ذلك باستخدام مثال,
نقوم بعمل دالة تحتوي على dictionary ليكن اسمه switcher, يكون key أرقام وال value هي الأشهر وتقوم باسترجاع قيمة ال key الممرر للدالة كباراميتر

def switch_demo(argument):
    switcher = {
        1: "January",
        2: "February",
        3: "March",
        4: "April",
        5: "May",
        6: "June",
        7: "July",
        8: "August",
        9: "September",
        10: "October",
        11: "November",
        12: "December"
    }
    return switcher.get(argument, "Invalid month")

الآن لو ممرنا لها الرقم 1 سوف نحصل على قيمته, واذا مررنا قيمة غير موجودة في dictionary سوف يتم ارجاع قيمة Invalid month

switch_demo(1)

سوف تكون النتيجة كالتالي

January

 

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...