Adam Ebrahim نشر 3 يونيو 2021 أرسل تقرير نشر 3 يونيو 2021 أحاول أن أقوم بعمل دالة تقوم بإرجاع قيم ثابتة fixed بناءً على مدخل معين للدالة. في لغات أخرى مثل C أو PHP كنت سأستعمل جملة switch أو case لكن في بايثون لا أعتقد أنه توجد جملة switch من الأساس. ما أفضل حل للقيام بمثل هذا الأمر حسب معايير PEP؟ أستعمل python 3.10 (أحدث إصدار) 1 اقتباس
2 سامح أشرف نشر 4 يونيو 2021 أرسل تقرير نشر 4 يونيو 2021 بداية من بايثون الإصدار 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']) 2 اقتباس
0 Nuhla Almasri نشر 3 يونيو 2021 أرسل تقرير نشر 3 يونيو 2021 نعم لا يوجد هناك 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)) 1 اقتباس
0 محمد أبو عواد نشر 3 يونيو 2021 أرسل تقرير نشر 3 يونيو 2021 لنحاول شرح ذلك باستخدام مثال, نقوم بعمل دالة تحتوي على 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 1 اقتباس
السؤال
Adam Ebrahim
أحاول أن أقوم بعمل دالة تقوم بإرجاع قيم ثابتة fixed بناءً على مدخل معين للدالة. في لغات أخرى مثل C أو PHP كنت سأستعمل جملة switch أو case لكن في بايثون لا أعتقد أنه توجد جملة switch من الأساس.
ما أفضل حل للقيام بمثل هذا الأمر حسب معايير PEP؟
أستعمل python 3.10 (أحدث إصدار)
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.