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

 


 

المتغير: اسم لقيمة نحتاجها لاحقًا

المتغير اسم يرتبط بقيمة داخل البرنامج، فيسمح باستخدامها أكثر من مرة وتحديثها عند الحاجة. بدل تكرار القيمة نفسها، يمكن إعطاؤها اسمًا يوضح معناها.

student_name = "علي"
age = 15
average = 95.8

تتكون جملة الإسناد من اسم على اليسار، وعامل الإسناد =، وقيمة أو تعبير على اليمين.

  • تقرأ بايثون الجهة اليمنى أولًا.
  • تحسب القيمة إن كانت تعبيرًا.
  • تربط النتيجة بالاسم الموجود على اليسار.

لا تعني = اختبار التساوي كما في الرياضيات؛ بل تعني إسناد القيمة. أما فحص التساوي فيستخدم ==.

الاسم أم القيمة؟
  • print(age) تعرض القيمة المخزنة في age.
  • print("age") تعرض الكلمة نفسها لأنها مكتوبة كنص.

اسم المتغير جزء من وضوح البرنامج

لا تقبل بايثون أي شكل لاسم المتغير، كما أن الاسم الصحيح نحويًا قد يكون ضعيفًا إذا لم يوضح معنى القيمة.

  • يبدأ الاسم بحرف أو شرطة سفلية _، ولا يبدأ برقم.
  • يمكن أن يحتوي على حروف وأرقام وشرطات سفلية فقط.
  • لا يقبل المسافات أو الشرطة العادية - أو الرموز مثل !.
  • الأسماء حساسة لحالة الأحرف؛ فـage وAge اسمان مختلفان.
اسم صالح اسم غير صالح السبب
student_name student name وجود مسافة
score2 2score البدء برقم
user_age user-age استخدام الشرطة العادية

الأسلوب الشائع في بايثون هو snake_case: أحرف صغيرة، وشرطة سفلية بين الكلمات، مثل total_price. ويُفضّل تجنب أسماء الدوال المدمجة مثل print حتى لا يفقد الاسم وظيفته الأصلية داخل الكود.


القيمة هي التي تحدد النوع

لا يلزم إعلان نوع المتغير مسبقًا في بايثون؛ فهي تستنتج النوع من القيمة المسندة إليه.

name = "سارة"     # str
age = 16          # int
price = 12.5      # float
is_ready = True   # bool

يمكن التأكد من النوع باستخدام type(). ويمكن أيضًا إعادة إسناد الاسم إلى قيمة جديدة، حتى إن كان نوعها مختلفًا:

data = 10
data = "hello"

يرتبط data أولًا بعدد صحيح، ثم يصبح مرتبطًا بنص. لا تُدمج القيمتان، ولا يبقى النوع القديم ثابتًا.

هذه المرونة مفيدة، لكن تغيير معنى المتغير ونوعه بلا سبب يجعل الكود أصعب في الفهم. الأفضل أن يحافظ الاسم على غرض واضح، مثل أن يبقى student_name مخصصًا لاسم الطالب.


الحساب بالمتغيرات وترتيب العمليات

يمكن استخدام المتغيرات العددية داخل التعبيرات كما تُستخدم الأعداد مباشرةً.

العامل العملية مثال عند a = 10 وb = 3
+ الجمع a + b تعطي 13
- الطرح a - b تعطي 7
* الضرب a * b تعطي 30
/ القسمة a / b تعطي تقريبًا 3.333

عندما يحتوي التعبير على أكثر من عملية، تنفذ بايثون الضرب والقسمة قبل الجمع والطرح، وتستخدم الأقواس لتغيير هذا الترتيب.

x = 10
y = 3
result1 = x * y + 2      # 32
result2 = x * (y + 2)    # 50

كما أن العملية بين عدد صحيح وعدد عشري تنتج عادةً عددًا عشريًا؛ فنتيجة 15 * 2.5 هي 37.5 من النوع float.


تحديث القيمة يعني بناء حالة جديدة

يمكن أن تتغير قيمة المتغير أثناء تشغيل البرنامج. وقد تكون القيمة الجديدة مستقلة، أو مبنية على القيمة القديمة.

level = 1
level = 2

score = 100
score = score + 20

في السطر الأخير تُقرأ قيمة score القديمة أولًا، ثم يضاف إليها 20، وبعد ذلك تُسند النتيجة 120 إلى الاسم نفسه.

توفر عوامل الإسناد المركبة صيغة أقصر للتحديث:

  • score += 20 تكافئ score = score + 20.
  • score -= 10 تكافئ score = score - 10.
  • price *= 2 تكافئ price = price * 2.
تتبع القيم بالترتيب
score = 100
score -= 20
score += 5
score *= 2

تتحول القيمة من 100 إلى 80، ثم 85، ثم 170. كل سطر يبدأ من أحدث قيمة، لا من القيمة الأولى.


من البيانات إلى نتيجة مفيدة

تظهر قوة المتغيرات عندما تمثل أجزاء حقيقية من المشكلة، ثم تربطها العمليات في نتيجة ذات معنى.

price_per_book = 50
number_of_books = 3
price_per_pen = 5
number_of_pens = 10

books_cost = price_per_book * number_of_books
pens_cost = price_per_pen * number_of_pens
final_total = books_cost + pens_cost

print("المجموع النهائي:", final_total)

تحتفظ المتغيرات بالأسعار والكميات، وتحسب تكلفة كل صنف، ثم تجمع النتيجتين. إذا تغير سعر أو كمية، يعاد الحساب بالكود نفسه من دون إعادة كتابة الناتج يدويًا.

الأسماء الواضحة تجعل التعبير مقروءًا: يمكن فهم final_total = books_cost + pens_cost حتى قبل معرفة القيم الرقمية.


التمارين المرتبطة بهذا الدرس

  • التمرين الأول: المتغيرات والعمليات الحسابية
  • التمرين الثاني: تتبع القيم والعوامل
المزيد من المحتوى؟

سجل للوصول إلى المزيد