المشغلات الرئيسية في لغة البرمجة Python

المشغلات هي التراكيب التي يمكنها التحكم بقيمةالمعاملات.
عند النظر في التعبير 4+5= 9 هنا 4 و5 تسمى المعاملات وإشارة (+) هي المشغل.

أنماط المشغلات

تتضمن المشغلات في لغة البرمجة Python مايلي:

المشغلات الحسابية

مشغلات المقارنة (العلائقية)

  • مشغلات الإدخال
  • المشغلات المنطقية
  • المشغل أحادي المعامل
  • مشغلات العضوية
  • مشغلات الهوية
  • مشغلات الأفضلية

المشغلات الحسابية

بفرض المتحول a يحمل القيمة 10 والمتحول b يحمل القيمة 20 عندها :

#!/usr/bin/python

a = 21
b = 10
c = 0

c = a + b

print "Line 1 - Value of c is ", c

c = a - b

print "Line 2 - Value of c is ", c

c = a * b

print "Line 3 - Value of c is ", c

c = a / b

print "Line 4 - Value of c is ", c

c = a % b

print "Line 5 - Value of c is ", c

a = 2
b = 3
c = a**b

print "Line 6 - Value of c is ", c

a = 10

b = 5

c = a//b

print "Line 7 - Value of c is ", c

وعند تنفيذ البرنامج السابق تظهر النتيجة التالية

Line 1 - Value of c is 31

Line 2 - Value of c is 11

Line 3 - Value of c is 210

Line 4 - Value of c is 2

Line 5 - Value of c is 1

Line 6 - Value of c is 8

Line 7 - Value of c is 2
المشغل الوصف المثال
(+) تستخدم لجمع القيمتين على جانبي المشغل a + b = 30
(-) تستخدم لطرح القيمة اليمنى من اليسرى a – b = -10
(*) تستخدم لضرب القميتين على جانبي المشغل a * b = 200
(/) القسمة تستخدم لقسمة الطرف اليميني على الطرف اليساري b / a = 2
(%) النسبة المئوية تستخدم لقسمة الطرف اليميني على الطرف اليساري واسترجاع الباقي b % a = 0
(**) المفسّر يستخدم لحسابات تفسيرية(القوة) a**b =10 to the power 20
// تستخدم للقسمة حيث إن نتيجة القسمة هي الناتج الذي تحذف منه الأرقام بعد الفاصلة العشرية 9//2 = 4 and 9.0//2.0 = 4.0

 

مشغلات المقارنة (العلائقية)

تستخدم هذه المشغلات للمقارنة بين القيم الواقعة على جانبي المشغل وتعطي العلاقة بينهما.

بفرض المتحول a يحمل القيمة 10 والمتحول b يحمل القيمة 20 عندها :

#!/usr/bin/python

a =21
b =10
c =0

if( a == b ):

print"Line 1 - a is equal to b"

else:

print"Line 1 - a is not equal to b"

if( a != b ):

print"Line 2 - a is not equal to b"

else:

print"Line 2 - a is equal to b"

if( a <> b ):

print"Line 3 - a is not equal to b"

else:

print"Line 3 - a is equal to b"

if( a < b ):

print"Line 4 - a is less than b"

else:

print"Line 4 - a is not less than b"

if( a > b ):

print"Line 5 - a is greater than b"

else:

print"Line 5 - a is not greater than b"

a =5;

b =20;

if( a <= b ):

print"Line 6 - a is either less than or equal to b"

else:

print"Line 6 - a is neither less than nor equal to b"

if( b >= a ):

print"Line 7 - b is either greater than or equal to b"

else:

print"Line 7 - b is neither greater than nor equal to b"

عند تطبيق هذا البرنامج تظهر النتيجة التالية:

Line 1 - a is not equal to b

Line 2 - a is not equal to b

Line 3 - a is not equal to b

Line 4 - a is not less than b

Line 5 - a is greater than b

Line 6 - a is either less than or equal to b

Line 7 - b is either greater than or equal to b
المشغل الوصف مثال
== إذا كان المعاملان لهما القيمة نفسها عندها يتحقق الشرط (a == b) غير صحيحة
!= إذا كان المعاملان مختلفان بالقيمة عندها يتحقق الشرط (a <> b) صحيحة وهذا يشبه عمل المشغل !=
<> إذا كان المعاملان مختلفان بالقيمة فإن الشرط صحيح (a <> b) صحيحة وهذا يشبه عمل المشغل !=
> إذا كانت قيمة المعامل على يسار المشغل أكبر من قيمة المعامل على يمينه عندها يتحقق الشرط (a > b) غير صحيح
< إذا كانت قيمة المعامل على يسار المشغل أصغر من قيمة المعامل على يمينه عندها يتحقق الشرط (a < b) is true صحيحة
>= إذا كانت قيمة المعامل على يسار المشغل أكبر أو تساوي من قيمة المعامل على يمينه عندها يتحقق الشرط (a >= b) غير صحيحة
<= إذا كانت قيمة المعامل على يسار المشغل أصغر أو تساوي من قيمة المعامل على يمينه عندها يتحقق الشرط (a <= b) صحيحة

مشغلات الإدخال

بفرض المتحول a يحمل القيمة 10 والمتحول b يحمل القيمة 20 عندها:

#!/usr/bin/python

a = 21

b = 10

c = 0

c = a + b

print "Line 1 - Value of c is ", c

c += a

print "Line 2 - Value of c is ", c

c *= a

print "Line 3 - Value of c is ", c

c /= a

print "Line 4 - Value of c is ", c

c = 2

c %= a

print "Line 5 - Value of c is ", c

c **= a

print "Line 6 - Value of c is ", c

c //= a

print "Line 7 - Value of c is ", c

فتظهر النتيجة التالية:

#!/usr/bin/python

a = 21

b = 10

c = 0

c = a + b

print "Line 1 - Value of c is ", c

c += a

print "Line 2 - Value of c is ", c

c *= a

print "Line 3 - Value of c is ", c

c /= a

print "Line 4 - Value of c is ", c

c = 2

c %= a

print "Line 5 - Value of c is ", c

c **= a

print "Line 6 - Value of c is ", c

c //= a

print "Line 7 - Value of c is ", c
المشغل الوصف مثال
= إسناد قيمة المعامل على الطرف اليميني إلى المعامل الواقع على الطرف اليساري c = a + b تعني إسناد القيمة a + b إلى c
+= AddAND تستخدم لإضافة المعامل اليميني إلى المعامل اليساري وإسناد القيمة الناتجة إلى المعامل اليساري. c += a تكافئ c = c + a
-= SubtractAND تستخدم لطرح المعامل اليميني من المعامل اليساري وإسناد القيمة الناتجة إلى المعامل اليساري. c -= تكافئ c = c – a
*= MultiplyAND تستخدم لصرب المعامل اليمينيبالمعامل اليساري وإسناد القيمة الناتجة إلى المعامل اليساري. c *= a تكافئ c = c * a
/= DivideAND تستخدم لقسمة المعامل اليميني على المعامل اليساري وإسناد القيمة الناتجة إلى المعامل اليساري. c /= a تكافئ c = c / a
c /= a تكافئ c = c / a
%= ModulusAND تستخدم لحساب النسبة المئوية لمعاملين وإسناد القيمة إلى المعامل اليساري. c %= a تكافئ c = c %
**= ExponentAND تستخدم لحساب القوة (الأس) وإسناد القيمة الناتجة إلى المعامل اليساري c **= تكافئ c = c ** a
//= FloorDivision تستخدم لقسمة الكلمة على المشغلات وإسناد القيمة الناتجة إلى المعامل اليساري c //= a تكافئ c = c // a

المشغلات أحادية المعامل

تعمل هذه المشغلات على مستوى البتات وتنجز العمل واحداً تلو الآخر. بفرض a=60 و b=13عندها يكتبان بالصيغة الثنائية على الشكل التالي:

a = 0011 1100

b = 0000 1101

-----------------

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a = 1100 0011

مثال

#!/usr/bin/python

a = 60 # 60 = 0011 1100

b = 13 # 13 = 0000 1101

c = 0

c = a & b; # 12 = 0000 1100

print "Line 1 - Value of c is ", c

c = a | b; # 61 = 0011 1101

print "Line 2 - Value of c is ", c

c = a ^ b; # 49 = 0011 0001

print "Line 3 - Value of c is ", c

c = ~a; # -61 = 1100 0011

print "Line 4 - Value of c is ", c

c = a << 2; # 240 = 1111 0000

print "Line 5 - Value of c is ", c

c = a >> 2; # 15 = 0000 1111

print "Line 6 - Value of c is ", c

فتظهر النتيجة التالية:

Line 1 - Value of c is 12

Line 2 - Value of c is 61

Line 3 - Value of c is 49

Line 4 - Value of c is -61

Line 5 - Value of c is 240

Line 6 - Value of c is 15

يبين الجدول التالي المشغلات أحادية المعامل المستخدمة في لغة البرمجة Python

المشغل الوصف مثال
& Binary AND يستخدم لنسخ بت إلى النتيجة إذا كان موجوداً في المعاملين (a & b) تعني 0000 1100))
| Binary OR يستخدم لنسخ البت إذا كان موجوداً في أي من المعاملين (a | b) =61 يعني (0011 1101)
^ Binary XOR يستخدم لنسخ البت إذا كان موجوداً في أحد المعاملين وغير موجود في الآخر (a ^ b) = 49 (means 0011 0001)
~ Binary Ones Complement مشغل أحادي وله تأثير على بتات القلاب (~a ) = -61 (means 1100 0011 in 2’s complement form due to a signed binary number.
<< Binary Left Shift يستخدم لإزاحة قيمة المعامل اليساري إلى اليسار بعدد بتات تحدد بالمعامل اليميني a << = 240 (means 1111 0000)
>> Binary Right Shift يستخدم لإزاحة قيمة المعامل اليساري إلى اليمين بعدد بتات تحدد بالمعامل اليميني a >> = 15 (means 0000 1111)

المشغلات المنطقية

يبين الجدول التالي المشغلات المنطقية في لغة البرمجة Python

المشغل الوصف المثال
and Logical AND عندما يكون المعاملان صحيحان عندها الشرط محقق a and b) ) صحيحة
or Logical OR عندما يكون أحد المعاملين لا يساوي الصفر عندها الشرط محقق (a or b) صحيحة
not Logical NOT تستخدم لعكس الحالة المنطقية للمعامل Not(a and b) خاطئة

معاملات العضوية

تستخدم معاملات العضوية لاختبار عضوية المكونات في تتالي معين مثل سلسلة او قائمة أو وحدات. هناك نوعان من مشغلات العضوية كما في التالي:

المشغل الوصف مثال
in تشير إلى أن النتيجة صحيحة عند وجود متحول في تتالي معين وتشير إلى النتيجة خطأ عند غير ذلك. x هو y هنا تكون النتيجة 1 عندماid(x) تساوي id(y)
not in تشير إلى أن النتيجة صحيحة عند عدم وجود متحول في تتالي معين وتشير إلى النتيجة خطأ عند غير ذلك. x ليس y هنا تكون النتيجة 1 عندماid(x)لا تساوي id(y)

مثال :

#!/usr/bin/python

a = 10

b = 20

list = [1, 2, 3, 4, 5 ];

if ( a in list ):

print "Line 1 - a is available in the given list"

else:

print "Line 1 - a is not available in the given list"

if ( b not in list ):

print "Line 2 - b is not available in the given list"

else:

print "Line 2 - b is available in the given list"

a = 2

if ( a in list ):

print "Line 3 - a is available in the given list"

else:

print "Line 3 - a is not available in the given list"

فتظهر النتيجة التالية:

Line 1 - a is not available in the given list

Line 2 - b is not available in the given list

Line 3 - a is available in the given list

مشغلات الهوية

تستخدم هذه المشغلات للمقارنة بين مواقع الذاكرة لغرضين. يوجد مشغلان للهوية كما هو مبين في الجدول التالي:

المشغل الوصف المثال
is يشير إلى صحة النتيجة إذا كانت المتحولات على احد جانبي المعامل تشير إلى الغرض نفسه وتشير إلى خطأ النتيجة عند غير ذلك x هو y هنا تكون النتيجة 1 عندماid(x) تساوي id(y)
is not يشير إلى خطأ النتيجة إذا كانت المتحولات على احد جانبي المعامل تشير إلى الغرض نفسه وتشير إلى صحة النتيجة عند غير ذلك x ليس y هنا تكون النتيجة 1 عندماid(x) لا تساوي id(y)

مشغلات الأسبقية (الأفضلية)

يبين الجدول التالي مشغلات الأسبقية مرتبة من الأسبقية الأعلى إلى الأدنى:

المشغل الوصف
** الأسية (الرفع إلى قوة)
~ + – التكملة ولها طريقتان للتسمية (+ أحادية) أو (+@) و (- أحادية) أو (-@)
* / % // الضرب والقسمة والنسبة المئوية والقسمة مع إظهار الباقي
+ – الجمع والطرح
>><< الإزاحة نحو اليمين واليسار بمقدار بتات
& جمع البتات
^ | تستخدم حصريا لأحادي المعامل وللمعامل OR المعروف
<= <>>= مشغلات المقارنة
<> == != مشغلات المعادلة
= %= /= //= -= += *= **= مشغلات الإدخال
is is not مشغلات الهوية
in not in مشغلات العضوية
not or and المشغلات المنطقية

يتأثر مشغل الأسبقية بطريقة تقييم التعبير (التركيب المستخدم).
مثال:

بفرض x = 7 + 3 * 2 حيث أسندت القيمة 13 للمتحول x وليس 20 لأن المشغل * له الأسبقية على المشغل + لذلك تتم أولاً عملية الضرب 3*2 ومن ثم يجمع الناتج الى 7.

مثال:

#!/usr/bin/python

a = 20

b = 10

c = 15

d = 5

e = 0


e = (a + b) * c / d #( 30 * 15 ) / 5

print "Value of (a + b) * c / d is ", e

e = ((a + b) * c) / d # (30 * 15 ) / 5

print "Value of ((a + b) * c) / d is ", e

e = (a + b) * (c / d); # (30) * (15/5)

print "Value of (a + b) * (c / d) is ", e

e = a + (b * c) / d; # 20 + (150/5)

print "Value of a + (b * c) / d is ", e

فتظهر النتيجة التالية:

Value of (a + b) * c / d is 90

Value of ((a + b) * c) / d is 90

Value of (a + b) * (c / d) is 90

Value of a + (b * c) / d is 50