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

السؤال

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

يتم تسمية العملية بترابطية إذا لم يتغير الناتج الخاص بها بتغيير ترتيب الأقواس عند تنفيذها على أكثر من عنصر فمثلا عمليات الجمع والضرب هي ترابطية لأن النتائج لا تختلف بإختلاف ترتيب تنفيذ العملية :

( 2 + 3 ) + 4
2 + ( 3 + 4 )

ففي المثال السابق هنا النتيجة واحدة للعمليتين فلا إختلاف في الناتج النهائي إذا فهي ترابطية .

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

أما بالنسبة إلى سؤالك عن عوامل المقارنة فهي ليست ترابطية لأن ناتج المقارنة هو قيمة منطقية (Boolean) وعندما تقوم بمقارنة أخرى بعدها فإنك تقارن بين نتيجة منطقية وعدد أو نتيجتين منطقيتين مما يغير معنى العملية.

5 > 3 > 1

فمثلا هنا أولا يتم تنفيذ 5 > 3 والتيجة true وبعد ذلك يتم مقارنة  true > 1 وهنا نحول true إلى 1، فتصبح المقارنة 1 > 1 أى النتيجة النهائية ب false.

لكن في نفس المثال السابق قمنا بتغير ترتيب تنفيذ العملية هكذا :

5 > (3 > 1)

هنا أولا 3 > 1 تساوي trueوبعد ذلك نقارن 5 > true أى 5 > 1 وستكون النتيجة النهائية true.

وهكذا بما أن الناتج مختلف حسب ترتيب تنفيذ العملية فإذا العامل > ليس ترابطي.

إذا لم تكن تقصد ما سبق يرجى توضيح سؤالك . ولو كان هذا السؤال مرتبط بإحدى دروس الدورات فستجد في أسفل الدرس صندوق للتعليقات كما هنا يرجى وضع سؤالك هناك أسفل الدروة لمساعدتك بشكل أفضل.

  • 0
نشر

السلام عليكم.

وجدت ضالتي في جوابك ،شكرا. ولكن كيف نقارن أو كيف يمكن الحصول على نتيجة من خلال المقارنة  بين شيئين مختلفين :نتيجة منطقية وعدد ؟ أم ان بايثون تفهم false على أنه 0 و true على أنه 1.

  • 0
نشر
بتاريخ On 8‏/6‏/2025 at 11:44 قال يوسف اوردو2:

السلام عليكم.

وجدت ضالتي في جوابك ،شكرا. ولكن كيف نقارن أو كيف يمكن الحصول على نتيجة من خلال المقارنة  بين شيئين مختلفين :نتيجة منطقية وعدد ؟ أم ان بايثون تفهم false على أنه 0 و true على أنه 1.

وعليكم السلام ورحمة الله وبركاته.

نعم، إجابتك صحيحة تمامًا حيث أن 

  • True يعامل كـ 1
  • False يعامل كـ 0

وهذا يعني أنك عند إجراء مقارنة بين قيمة منطقية وعدد، فإن بايثون تقوم تلقائيًا بتحويل القيمة المنطقية إلى عدد صحيح (int)

  • 0
نشر
بتاريخ On 8‏/6‏/2025 at 11:44 قال يوسف اوردو2:

السلام عليكم.

وجدت ضالتي في جوابك ،شكرا. ولكن كيف نقارن أو كيف يمكن الحصول على نتيجة من خلال المقارنة  بين شيئين مختلفين :نتيجة منطقية وعدد ؟ أم ان بايثون تفهم false على أنه 0 و true على أنه 1.

بالضبط، بإجراء عمليات حسابية أو مقارنات بين قيمة منطقية ورقم، تقوم بايثون بشكل ضمني أي في الخلفية بتحويل القيمة المنطقية إلى ما يعادلها من الأعداد الصحيحة 1 لـ True و 0 لـ False ثم تجري العملية.

وذلك لآنّ النوع bool في بايثون هو في الواقع نوع فرعي من النوع int 

وتستطيع حتى استخدام القيم المنطقية في عمليات الجمع والطرح والضرب:

result_add = 5 + True
print(result_add)  

result_mul = 10 * False
print(result_mul)  

result_sub = 100 - True
print(result_sub) 

لكن هناك أمر هام وهو True == 1 نتيجتها True لأن قيمهما متساوية، لكن True is 1 تُعيد False، حيث ==يتحقق من تساوي القيمة.

بينما is يتفقد هل المتغيران يشيران إلى نفس الكائن في الذاكرة أم لا؟ وبما أنّ True هو كائن من النوع bool، و 1 هو كائن من النوع int لذا هما نوعان مختلفان، وبالتالي ليسا نفس الكائن.

print(True == 1)  
print(True is 1)  

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...