الإجابة السريعة: لمعرفة هل العدد زوجي أم فردي في بايثون، استخدم عامل باقي القسمة %. إذا كان الشرط number % 2 == 0 صحيحًا فالعدد زوجي، وإذا لم يتحقق فالعدد فردي. هذه القاعدة تعمل مع الأعداد الصحيحة الموجبة والسالبة، كما أن الصفر عدد زوجي.
الكود العملي التالي يستقبل عددًا من المستخدم باستخدام input()، ويحوله إلى عدد صحيح باستخدام int()، ثم يفحص باقي قسمته على 2:
number = int(input("أدخل عددًا صحيحًا: "))
if number % 2 == 0:
print("العدد زوجي")
else:
print("العدد فردي")
هذا هو الحل الأساسي الذي يحتاجه معظم الباحثين عن كود العدد الزوجي والفردي في بايثون. وفي بقية الدرس سنشرح لماذا يعمل الشرط، وما وظيفة % وif وinput() وint()، ثم نراجع الصفر والأعداد السالبة والأخطاء الشائعة. هذا الدرس هو المثال رقم 2 من سلسلة بايثون بالمثال.
{getToc} $title={محتوى المقال}
كيف تعرف أن العدد زوجي أو فردي في بايثون؟
الفكرة تعتمد على باقي القسمة على 2. إذا كان العدد يقبل القسمة على 2 دون باقي فهو زوجي، وإذا بقي 1 فهو فردي. لذلك نكتب الشرط:
number % 2 == 0
إذا أعاد هذا الشرط القيمة True فالعدد زوجي. وإذا أعاد False فالعدد فردي.
{alertSuccess}
القاعدة المختصرة: number % 2 == 0 تعني أن العدد زوجي، وأي عدد صحيح لا يحقق هذا الشرط يكون فرديًا.
ما معنى العدد الزوجي والعدد الفردي؟
العدد الزوجي هو عدد صحيح يقبل القسمة على 2 دون باقي، مثل 4 و10 و-8. أما العدد الفردي فهو عدد صحيح لا يقبل القسمة على 2 دون باقي، مثل 7 و15 و-3.
10 % 2يساوي0، لذلك 10 عدد زوجي.7 % 2يساوي1، لذلك 7 عدد فردي.0 % 2يساوي0، لذلك الصفر عدد زوجي.
كيف يعمل عامل باقي القسمة % في بايثون؟
العامل % يعيد باقي القسمة بين عددين. وهو الجزء الأساسي في هذا المثال لأننا نحتاج معرفة ما إذا كانت قسمة العدد على 2 تترك باقيًا أم لا. إذا أردت شرحًا أوسع للعوامل الحسابية والمقارنات، راجع شرح العوامل Operators في بايثون.
مثال مع عدد زوجي:
print(10 % 2)
الناتج:
0
ومثال مع عدد فردي:
print(7 % 2)
الناتج:
1
شرح كود العدد الزوجي والفردي خطوة بخطوة
لنبدأ بنسخة بسيطة يكون فيها العدد موجودًا داخل المتغير:
number = 8
if number % 2 == 0:
print("العدد زوجي")
else:
print("العدد فردي")
الناتج:
العدد زوجي
1. تخزين العدد في متغير
number = 8
المتغير number يحمل العدد الذي نريد فحصه.
2. فحص باقي القسمة باستخدام if
if number % 2 == 0:
هذا السطر يسأل: هل باقي قسمة number على 2 يساوي صفرًا؟ إذا كانت الإجابة نعم، ينفذ البرنامج الفرع الخاص بالعدد الزوجي.
3. استخدام else للحالة الفردية
else:
print("العدد فردي")
إذا لم يتحقق شرط if، فهذا يعني أن العدد الصحيح ليس زوجيًا، فينفذ البرنامج فرع else. لمراجعة الشروط بتفصيل أكبر، اقرأ شرح if وelse في بايثون للمبتدئين.
إدخال العدد باستخدام input() وint()
في البرنامج العملي لا نريد تغيير قيمة المتغير يدويًا كل مرة. نستخدم input() لاستقبال الإدخال من المستخدم، ثم int() لتحويل النص إلى عدد صحيح:
number = int(input("أدخل عددًا صحيحًا: "))
if number % 2 == 0:
print(f"العدد {number} زوجي")
else:
print(f"العدد {number} فردي")
دالة input() ترجع قيمة نصية، حتى عندما يكتب المستخدم أرقامًا. لذلك نستخدم int() لتحويل الإدخال إلى عدد صحيح قبل تطبيق العامل %. ويمكنك مراجعة أنواع البيانات في بايثون لفهم الفرق بين النصوص والأعداد.
إذا أدخل المستخدم 12 فستكون النتيجة:
العدد 12 زوجي
وإذا أدخل 15 فستكون النتيجة:
العدد 15 فردي
هل الصفر عدد زوجي في بايثون؟
نعم. الصفر عدد زوجي لأن باقي قسمته على 2 يساوي صفرًا:
print(0 % 2)
الناتج:
0
لا تحتاج إلى شرط خاص للصفر إذا كان هدفك فقط تحديد الزوجي والفردي؛ فالشرط number % 2 == 0 يصنفه زوجيًا تلقائيًا.
هل تعمل الطريقة مع الأعداد السالبة؟
نعم. نفس الشرط يعمل مع الأعداد الصحيحة السالبة أيضًا. مثلًا:
print(-4 % 2)
print(-7 % 2)
الناتج:
0
1
لذلك -4 زوجي و-7 فردي، ولا نحتاج إلى منطق مختلف للأعداد السالبة.
أخطاء شائعة عند كتابة برنامج الزوجي والفردي
نسيان int() مع input()
هذا الكود غير صحيح لأن input() يعيد نصًا:
number = input("أدخل عددًا صحيحًا: ")
if number % 2 == 0:
print("العدد زوجي")
الصحيح هو تحويل الإدخال إلى عدد صحيح:
number = int(input("أدخل عددًا صحيحًا: "))
استخدام = بدل == داخل الشرط
الرمز = يستخدم لإسناد قيمة، بينما == يستخدم للمقارنة. لذلك الشرط الصحيح هو:
if number % 2 == 0:
نسيان النقطتين أو المسافات البادئة
يجب أن تنتهي جملة if بنقطتين :، ويجب إزاحة السطر الذي ينفذ داخل الشرط بمسافة بادئة صحيحة:
if number % 2 == 0:
print("العدد زوجي")
{alertInfo} إذا ظهرSyntaxErrorفي هذا المثال، راجع النقطتين بعدifوelseوالمسافات البادئة داخل الشرط.
التعامل مع إدخال غير صحيح باستخدام try وexcept
إذا كتب المستخدم نصًا مثل hello بدل عدد صحيح، فلن تستطيع int() تحويله وسيظهر ValueError. يمكن معالجة ذلك باستخدام try وexcept:
try:
number = int(input("أدخل عددًا صحيحًا: "))
if number % 2 == 0:
print(f"العدد {number} زوجي")
else:
print(f"العدد {number} فردي")
except ValueError:
print("الرجاء إدخال عدد صحيح فقط")
إذا أردت فهم سبب هذا الخطأ بالتفصيل، راجع حل خطأ ValueError عند التحويل باستخدام int().
ملخص سريع لأجزاء الكود
| الجزء | وظيفته | مثال |
|---|---|---|
input() |
استقبال إدخال من المستخدم كنص | input("أدخل عددًا: ") |
int() |
تحويل النص إلى عدد صحيح | int("12") |
% |
إرجاع باقي القسمة | 12 % 2 |
== |
مقارنة قيمتين | number % 2 == 0 |
if |
تنفيذ كود عندما يتحقق الشرط | if number % 2 == 0: |
else |
تنفيذ الحالة البديلة | else: |
أسئلة شائعة
ما أسرع طريقة لمعرفة هل العدد زوجي أم فردي في بايثون؟
استخدم الشرط number % 2 == 0. إذا تحقق فالعدد زوجي، وإلا فهو فردي.
هل يمكن فحص الأعداد العشرية بهذه الطريقة؟
مفهوم الزوجي والفردي يطبق على الأعداد الصحيحة. لهذا المثال نستخدم int() ونتعامل مع قيم صحيحة، لا مع أعداد عشرية مثل 3.5.
هل يجب كتابة شرط خاص للصفر؟
لا. الشرط الأساسي number % 2 == 0 يعامل الصفر كعدد زوجي تلقائيًا. أضف شرطًا خاصًا فقط إذا كنت تريد رسالة مختلفة للصفر.
روابط مفيدة مرتبطة بالمثال
- سلسلة بايثون بالمثال
- شرح العوامل Operators في بايثون
- شرح if وelse في بايثون للمبتدئين
- أنواع البيانات في بايثون
- حل خطأ ValueError عند استخدام int()
- محرر بايثون العرب لتجربة الكود أونلاين
- توثيق بايثون الرسمي للعوامل والتعبيرات
خلاصة المثال
لمعرفة هل العدد زوجي أم فردي في بايثون، افحص باقي قسمته على 2. إذا كان number % 2 == 0 فالعدد زوجي، وإلا فهو فردي. وعند استقبال العدد من المستخدم، استخدم input() ثم int() قبل تطبيق الشرط.
number = int(input("أدخل عددًا صحيحًا: "))
if number % 2 == 0:
print("العدد زوجي")
else:
print("العدد فردي")
{alertSuccess} الخلاصة:%يعطيك باقي القسمة، وifيستخدم النتيجة لاتخاذ القرار بين العدد الزوجي والفردي.
تمرين بسيط
عدّل البرنامج بحيث يطبع العدد نفسه مع النتيجة، ثم جرّبه مع 0 وعدد سالب وعدد موجب. بعد ذلك أضف try وexcept حتى لا يتوقف البرنامج إذا أدخل المستخدم نصًا بدل عدد صحيح.