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

تعرف على المتغيرات وكيفية التعامل معها في بايثون


عبدالهادي الديوري

بعد أن تعرّفنا في الدّرس السّابق على طريقة تنصيب بايثون وكيفيّة العمل معها، سنكمل في هذا الدّرس مشوار تعلّم هذه اللغة بتعلّم كيفيّة التّعامل مع البيانات مثل المُتغيّرات وأنواعها كالأرقام وإسناد القيم. ولكن قبل ذلك عليك أن تتعرّف على طريقة دعم اللغة العربيّة، ويجب عليك أن تفهم بعض المُصطلحات المتداولة في مجال البرمجة (والتّي اعتَمدتُ عليها في هذا الدّرس).

variables-python.png

تذكير: نقوم بتنفيذ الأسطر البرمجيّة مُباشرة من مُفسّر بايثون، لمزيد من المعلومات عن المُفسّر راجع الدّرس السّابق. وللتوسع في لغة بايثون وتعلمها أكاديميًا، ننصحك بالانضمام إلى دورة تطوير تطبيقات باستخدام لغة بايثون التي تقدمها أكاديمية حسوب.

دعم اللغة العربية في بايثون

قد تواجه خطأ إذا حاولت تنفيذ أمر طباعة جملة "مرحبا بالعالم" مُستخدما حروفا عربية، لذلك يجب عليك أن تكتب السّطر التّالي، قبل كتابة أي أمر يحتوي على كلمات عربية:

# -*- coding: utf-8 -*-

المصطلحات

مخرج Output: تعني الجواب أو النّتيجة الذي يُقدّمها مُفسّر بايثون، فمثلا إذا طلبت من مُفسّر بايثون طباعة كلمة Hello، فستستخدم السّطر التّالي:

>>> print "Hello" 
Hello

هنا نُسمّي Hello المُخرج الذي يُرجعه البرنامج (أي نتيجة الأمر). 

مُتغيّر: وهو الاسم الذي نُطلقه على حرف أو “كلمة” تحمل قيمة مُعيّنة، مثلا: 

>>> name = "abdelhadi"

هنا قُمنا بإنشاء مُتغيّر name وأسندنا له القيمة abdelhadi
وإذا أردنا إظهار القيمة abdelhadi فيكفي أن نكتب اسم المُتغيّر في مُفسّر بايثون:

>>> print name

كما يُمكن أن نضيف تحّية على الشّكل التّالي:

>>> print "Hello " + name

تُفسّر الشيفرة أعلاه وتكون مُخرجاتها:

Hello Abdelhadi 

يُمكن أن يحمل المُتغيّر عدّة أنواع من القيم، كالأرقام والنّصوص والأحرف…

تعيين القيم

يُعتبر تعيين قيمة لاسم معيّن من أهمّ أساسيّات البرمجة، وهذا الاسم معروف في البرمجة بالمُتغيّر، وإليك مثالا على ذلك:

>>> x = 4 
>>> x * x 
16

قمنا في المثال أعلاه بوضع القيمة 4 للمتغيّر x، بعبارة أخرى المُتغيّر x يحمل القيمة 4. بحيث يُمكننا استعمال x عوضا عن 4 في باقي الأسطر في برنامجنا. وبعدها قمنا بالعمليّة الحسابيّة x * x أي 4 * 4 وحصلنا على 16 كنتيجة. 

إذا حاولت أن تستخدم مُتغيّرًا لم يُعرّف من قبل في برنامجك، فستحصل على خطأ كالتّالي:

>>> foo 
Traceback (most recent call last): 
  File "<stdin>", line 1, in ? 
NameError: name 'foo' is not defined 

>>> foo = 4 
>>> foo 
4

حاولنا أعلاه أن نقوم باستخدام المُتغيّر foo الذي لم نعرّفه أساساً، فحصلنا على رسالة من مُفسّر بايثون مفادها بأنّ المُتغيّر foo ليس موجودا. وبعد تعريفه وتعيين القيمة "4" له أصبح بإمكاننا استدعاؤه بدون أي مشكلة.

إذا وضعت قيمة مُغايرة لمتغيّر يحمل مُسبقاً قيمة ما، فالقيمة القديمة تُستَبدَل بالقيمة الجديدة، بحيث يحمل المتغيّر القيمة الجديدة.

>>> x = 4 
>>> x 
4 
>>> x = 'hello' 
>>> x 
'hello'

في المثال أعلاه، قمنا بتحديد القيمة "4" للمتغيّر x ثمّ بعد ذلك قمنا بتحديد "hello" لنفس المُتغيّر فأصبح x يحمل القيمة hello في نهاية المطاف.

ويُمكنك تعيين أكثر من قيمة لأكثر من مُتغيّر في آن واحد.

>>> a, b = 1, 2 
>>> a 
1 
>>> b 
2 
>>> a + b 
3

ومُبادلة قيمتي مُتغيّرين (بحيث يحمل المُتغيّر قيمة الآخر) سهل جدّا في لغة بايثون:

>>> a, b = 1, 2 
>>> a, b = b, a 
>>> a 
2 
>>> b 
1

عند تعيينِ قيمة في بايثون، تكون الأهميّة للجانب الأيمن قبل الأيسر، بحيث يقوم بايثون بالتّعرّف على القيّم في الجانب الأيمن ثمّ يقوم بتعيينها للمتغيّرات في الجانب الأيسر لعلامة = . إذ ما يقع على يسار علامة = هو المُتغير وما يقع على يمينها هو القيمة.

التعليقات

تُستعمل التّعليقات في البرمجة لشرح وظيفة سطر معين أو لإعطاء فكرة عن برنامجك لمن يقرأ شيفرته، وتكون التّعليقات مسبوقة بعلامة # إما في سطر مستقل أو في نفس سطر الشّيفرة، وتتميّز بأنّها لا تؤثّر على عمل البرنامج إذ يتجاهلها المُفسّر ولا تُنفّذ، وهي عموما اختيارية، لذا فأنت لست مُجبرا على كتابتها، وإليك مثالاً على التّعليقات:

>>> # السّطر التّالي عبارة عن تعيين قيمة لمتغيّر 
>>> x = 'hello' # هذا السّطر عبارة عن تعيين قيمة لمتغيّر

الأرقام

لقد تعرّفنا من قبل حول كيفيّة التّعامل مع الأرقام بشكل بسيط.

>>> 42 
42 
>>> 4 + 2 
6

تدعم بايثون الأعداد العشريّة كذلك.

>>> 4.2 
4.2 
>>> 4.2 + 2.3 
6.5

وتدعم العمليّات المُختلفة مثل الإضافة والفرق وغيرهما من العمليّات الحسابيّة:

  • + إضافة
  • - الفرق
  • * الضّرب
  • / القسمة
  • ** الأس (القوة)
  • % باقي القسمة

لنجرّب هذه العمليّات على الأعداد الصّحيحة:

# عمليّة إضافة
>>> 7 + 2 
9
 
# عمليّة فرق 
>>> 7 - 2 
5
 
# عمليّة ضرب 
>>> 7 * 2 
14
 
# عمليّة قسمة 
>>> 7 / 2 
3 

# الأس 
>>> 7 ** 2 
49 

# باقي القسمة 
>>> 7 % 2 
1

إذا تمعّنت في النّظر ستجد أنّ ناتج قسمة 7 على 2 يُساوي 3 وليس 3.5 وهذا لأنّ الرّمز / يُرجع الأرقام الصحيحة فقط عندما يعمل معها، لننظر مالذي سيحدث إذا جرّبنا نفس الأمر لكن بأعداد عشريّة هذه المرّة:

>>> 7.0 / 2.0 
3.5 
>>> 7.0 / 2 
3.5 
>>> 7 / 2.0 
3.5

يُمكن القيّام بالعمليّات الحسابيّة بالاعتماد على أكثر من عامل:

>>> 7 + 2 + 5 - 3 
11 
>>> 2 * 3 + 4 
10

هذا مهمّ جدّا وذلك لفهم كيفيّة تعامل لغة بايثون مع العمليّات الحسابيّة، حيث هناك أولويّات للعمليّات وذلك كالقائمة التّالية، من الأقل أولويّة إلى الأه:

+  -  

*  /  

%  **

ولفهم ذلك أكثر، إليك هذا المثال: عند تنفيذ العمليّة 2 + 3 * 4 في بايثون فالعمليّة الأولى التّي تُنفّذ هي 3 * 4 ، لأن العامل * أكثر أولويّة من عامل +، وبعد ذلك تضاف القيمة إلى 2.

>>> 2 + 3 * 4 
14

يُمكننا أن نعتمد على الأقواس () لتحديد أولويّات العمليّات، انظر المثال التّالي:

>>> (2 + 3) * 4 
20

في المثال أعلاه، قمنا بوضع العمليّة 2+3 بين قوسين لإخبار مُفسّر بايثون بأنّ لهذه العملية الأولويّة ويجب حسابها أوّلا، فإن لم نقم بوضع القوسين لقام المُفسّر بحساب العمليّة 4*3 ثم إضافة العدد 2.

جميع العمليّات باستثناء ** يبدأ تطبيقها من اليسار ثمّ اليمين.

1 + 2 + 3 * 4 + 5 
   
  3   + 3 * 4 + 5 
           
  3   +   12  + 5 
       
      15      + 5 
               
              20

تمارين

تمرين 1

ما هي مُخرجات (القيّم التّي سيطبعها) البرنامج التّالي:

x = 4 
y = x + 1 
x = 2 
print x, y

تمرين 2

ما هي مُخرجات (نتيجة) البرنامج التّالي:

x, y = 2, 6 
x, y = y, x + 2 
print x, y

تمرين 3

ما هي مُخرجات البرنامج التّالي:

a, b = 2, 3 
c, b = a, c + 1 
print a, b, c

ترجمة -وبتصرف- للكتاب Python Practice Book لصاحبه Anand Chitipothu.


تفاعل الأعضاء

أفضل التعليقات

شكر لك على  هذه الدورة المميزة واسأل الله تعالى ان يوفقك لما فيه الخير

(1) - ما هي مُخرجات (القيّم التّي سيطبعها) البرنامج التّالي:

اقتباس

 

x = 4

y = x + 1

x = 2

print x, y

 

 

اقتباس

الجواب :  x =2       ,     y=5

 

(2)ما هي مُخرجات (نتيجة) البرنامج التّالي:

اقتباس

x, y = 2, 6

x, y = y, x + 2

print x, y

اقتباس

الجواب  y = 6      و x = 4

 

(3)ما هي مُخرجات البرنامج التّالي:

اقتباس

a, b = 2, 3

c, b = a, c + 1

print a, b, c

اقتباس

الجواب :                                                              NameError: name 'c' is not defined

هنا اعتقدت انه يوجد خطأ   ولأتأكد من كلامي  قمت بكتابته على بايثون شيل  وظهر لي  الخطأ أي  كلامي كان صحيحآ

المتغير   c  يساوي المتغير a يعني اذا كن المتغير a يحمل القيمه 2 فإن المتغير c يحمل نفس القيمه الى هنا الكود صحيحآ ولاكن سبب الخطآ  اعتقد انه كان هنا c +1   فقمت تعديل بسيط ليصحح القيمه ولا أعلم اذا كنت انت بقصد ان تضع الخطأ او لا  ولاكن على كل حال قمت بتعديله بطريتقين

 

اقتباس

a, c = 2, 3
a,b = a, c + 1

print a, b, c

والجواب حيكون    :      2 4 3

أو      OR

اقتباس

a, b = 2, 3
c,b = a, b + 1
print a, b, c

والجواب حيكون  2 4 2

 على كل الأحوال  اننا نقدر نلعب في القيم لنصحح الأخطاء فمان الله

تم التعديل في بواسطة مدمن
خطآ أملائي
رابط هذا التعليق
شارك على الشبكات الإجتماعية



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

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

زائر
أضف تعليق

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


×
×
  • أضف...