المتغيرات وأنواع البيانات في بايثون: شرح عملي بالأمثلة
كيف تخزن بايثون المعلومات: المتغيرات، والأعداد، والنصوص، والقيم المنطقية، والقوائم والقواميس، وتحويل الأنواع، مع أمثلة قصيرة وتمارين وأخطاء يقع فيها المبتدئون.
- 6 دقائق قراءة
كل برنامج تستخدمه يتعامل مع معلومات: تطبيق الطقس يتعامل مع درجات الحرارة، ومتجر الإنترنت مع الأسعار وأسماء المنتجات، ومنصة التعليم مع أسماء الطلاب ودرجاتهم. ولكي يتعامل البرنامج مع هذه المعلومات، يحتاج إلى مكان يحفظها فيه وطريقة يعرف بها نوعها. هذا بالضبط ما تقدمه المتغيرات وأنواع البيانات في بايثون. في هذا المقال نشرح الموضوع خطوة بخطوة بأمثلة قصيرة تستطيع تجربتها بنفسك، ثم نختم بتمارين وأخطاء شائعة، حتى تخرج بفهم حقيقي لا بمجرد حفظ للقواعد.
ماذا ستتعلم في هذا المقال؟
- ما المتغير، وكيف تنشئه، وقواعد تسميته.
- أنواع البيانات الأساسية: الأعداد الصحيحة والعشرية والنصوص والقيم المنطقية.
- المجموعات: القوائم والقواميس والصفوف والمجموعات.
- تحويل الأنواع، وأخطاء المبتدئين، وتمارين للتطبيق.
ما هو المتغير؟
تخيل المتغير كأنه صندوق عليه ملصق باسم، تضع فيه قيمة لتستخدمها لاحقًا. في بايثون تنشئ المتغير بمجرد أن تعطيه قيمة باستخدام علامة المساواة:
student_name = "مريم"
age = 14
average = 91.5
هنا أنشأنا ثلاثة متغيرات. علامة = في البرمجة لا تعني «يساوي» كما في الرياضيات، بل تعني «احفظ القيمة التي على اليمين في المتغير الذي على اليسار». لهذا يمكنك أن تكتب age = age + 1، وهي جملة لا معنى لها رياضيًا، لكنها في البرمجة تعني: خذ القيمة الحالية، وأضف إليها واحدًا، واحفظ النتيجة في المتغير نفسه.
قواعد تسمية المتغيرات
- يبدأ الاسم بحرف أو بشرطة سفلية، ولا يبدأ برقم.
- لا يحتوي على مسافات؛ استخدم الشرطة السفلية بدلًا منها، مثل
total_score. - بايثون تفرق بين الحروف الكبيرة والصغيرة، فالمتغير
Ageغير المتغيرage. - لا تستخدم الكلمات المحجوزة في اللغة، مثل
ifوforوclass. - اختر أسماء واضحة تشرح المحتوى.
priceأفضل منp، وstudent_countأفضل منx.
أنواع البيانات الأساسية
كل قيمة في بايثون لها نوع يحدد ما يمكنك أن تفعله بها. لا تحتاج إلى كتابة النوع بنفسك، فبايثون تستنتجه من القيمة، ويمكنك معرفته بالدالة type().
| النوع | الاسم في بايثون | مثال | يُستخدم في |
|---|---|---|---|
| عدد صحيح | int | 25، -3، 0 | الأعمار، والأعداد، والعدّ |
| عدد عشري | float | 3.14، 91.5 | الأسعار، والمتوسطات، والقياسات |
| نص | str | “أحمد”، ‘Python’ | الأسماء، والرسائل، والعناوين |
| قيمة منطقية | bool | True، False | الإجابة بنعم أو لا: هل نجح الطالب؟ |
| لا قيمة | NoneType | None | تمثيل غياب القيمة |
الأعداد والعمليات الحسابية
تدعم بايثون العمليات المعتادة: الجمع +، والطرح -، والضرب *، والقسمة /. وهناك ثلاث عمليات مفيدة يجهلها كثير من المبتدئين: القسمة الصحيحة // التي تعطي الناتج دون الكسر، وباقي القسمة %، والأس **. مثلًا 17 // 5 تعطي 3، و17 % 5 تعطي 2، و2 ** 10 تعطي 1024. لاحظ أن القسمة العادية / تعطي دائمًا عددًا عشريًا، حتى لو كانت القسمة بدون باقٍ.
النصوص
النص سلسلة من الحروف بين علامتي تنصيص مفردتين أو مزدوجتين. يمكنك دمج النصوص بعلامة الجمع، وتكرارها بعلامة الضرب، ومعرفة طولها بالدالة len(). والطريقة الأحدث والأوضح لدمج المتغيرات داخل النص هي «النصوص المنسقة» (f-strings):
name = "مريم"
score = 91.5
print(f"حصلت {name} على {score} درجة")
القيم المنطقية
القيمة المنطقية إما True أو False، وتنتج غالبًا من المقارنات مثل score >= 50. هذه القيم هي أساس اتخاذ القرارات في البرنامج باستخدام الشرط if.
المجموعات: عندما تحتاج إلى أكثر من قيمة
ماذا لو أردت حفظ درجات ثلاثين طالبًا؟ لن تنشئ ثلاثين متغيرًا. بايثون توفر أنواعًا تجمع عدة قيم:
- القائمة (list): مجموعة مرتبة قابلة للتعديل، مثل
scores = [90, 75, 88]. تضيف إليها بالدالةappend، وتصل إلى أول عنصر بالمؤشر صفر:scores[0]. - القاموس (dict): أزواج من مفتاح وقيمة، مثل
student = {"name": "مريم", "age": 14}. تصل إلى القيمة بالمفتاح:student["name"]. - الصف (tuple): مثل القائمة لكنه لا يُعدل بعد إنشائه، مناسب لقيم ثابتة مثل الإحداثيات.
- المجموعة (set): قيم بلا تكرار وبلا ترتيب، مفيدة لإزالة التكرار بسرعة.
مثال يوضح الاختيار: إذا أردت حفظ درجات مريم في خمس مواد بترتيب الاختبارات، فالقائمة مناسبة. أما إذا أردت أن تعرف درجة مادة بعينها باسمها، مثل الرياضيات أو العلوم، فالقاموس أفضل، لأنك تكتب scores["math"] بدل أن تتذكر أن الرياضيات هي العنصر الثالث. اختيار النوع المناسب يجعل الكود أقصر وأوضح وأقل عرضة للأخطاء.
ماذا يحدث في الذاكرة؟ الأسماء والقيم
تشبيه الصندوق مفيد في البداية، لكن الحقيقة في بايثون أدق قليلًا: المتغير اسم يشير إلى قيمة موجودة في الذاكرة، أشبه بملصق يُلصق على شيء، لا صندوق يحتويه. يظهر الفرق عندما تكتب b = a وكانت a قائمة: لن تُنسخ القائمة، بل سيصبح لديك اسمان يشيران إلى القائمة نفسها. فإذا أضفت عنصرًا عبر b ستجده أيضًا عند طباعة a. هذا السلوك يحير المبتدئين كثيرًا، ويرتبط بفكرة مهمة: بعض الأنواع قابلة للتعديل مثل القوائم والقواميس والمجموعات، وبعضها غير قابل للتعديل مثل الأعداد والنصوص والصفوف. عندما «تغير» نصًا، فإن بايثون تنشئ نصًا جديدًا في الحقيقة. وإذا أردت نسخة مستقلة من قائمة، فاستخدم b = a.copy().
تحويل الأنواع
من أشهر المواقف: تطلب من المستخدم إدخال عمره بالدالة input()، ثم تحاول إضافة واحد إليه فيظهر خطأ. السبب أن input() تعيد دائمًا نصًا، حتى لو كتب المستخدم رقمًا. الحل هو التحويل:
age = int(input("كم عمرك؟ "))
print("عمرك العام القادم:", age + 1)
الدوال int() وfloat() وstr() تحول بين الأنواع. لكن انتبه: محاولة تحويل نص مثل «خمسة» إلى عدد ستسبب خطأ، لأن بايثون لا تفهم الأرقام المكتوبة بالحروف. في البرامج الحقيقية نتعامل مع هذا الاحتمال حتى لا يتوقف البرنامج عند إدخال خاطئ.
إذا أردت مشاهدة شرح مفصل لهذه الأساسيات وغيرها، فالدورة الشاملة من قناة freeCodeCamp.org تغطيها بالتفصيل، باللغة الإنجليزية:
أخطاء شائعة يقع فيها المبتدئون
- جمع نص مع عدد:
"العمر: " + 14يسبب خطأ. استخدمstr(14)أو النصوص المنسقة. - نسيان علامات التنصيص: كتابة
name = مريمتجعل بايثون تبحث عن متغير اسمه مريم. - الخلط بين = و ==: الأولى للحفظ، والثانية للمقارنة.
- نسيان أن الفهرسة تبدأ من صفر: العنصر الأول في القائمة هو
[0]لا[1]. - تسمية متغير باسم دالة موجودة: مثل
listأوprint، فتفقد الدالة الأصلية.
تمارين للتطبيق
- اكتب برنامجًا يطلب اسم المستخدم وسنة ميلاده، ثم يطبع عمره التقريبي في رسالة مرحبة.
- أنشئ قائمة بخمس درجات، واحسب مجموعها ومتوسطها باستخدام
sum()وlen(). - أنشئ قاموسًا لكتاب يحتوي على العنوان والمؤلف وعدد الصفحات، واطبع جملة تصفه.
- اكتب برنامجًا يحول درجة الحرارة من مئوية إلى فهرنهايت باستخدام المعادلة: ف = م × 9 ÷ 5 + 32.
بعد أن تتقن المتغيرات، الخطوة التالية هي تنظيم الكود في دوال. وإذا لم تثبت بايثون بعد، فابدأ بمقال لماذا تبدأ البرمجة ببايثون. وفي كورس بايثون في أكاديمية بدر التعليمية نتدرب على هذه المفاهيم بتمارين متدرجة ومراجعة من المدرب. ولمصادر إضافية زر المكتبة التعليمية، ولخطة كاملة جرب أداة اكتشف مسارك.
الخلاصة
المتغير اسم يشير إلى قيمة، ولكل قيمة نوع يحدد ما يمكنك فعله بها. تعرف على الأنواع الأساسية والمجموعات، وتذكر أن input() تعيد نصًا دائمًا، وأن الفهرسة تبدأ من صفر. جرّب كل مثال بنفسك، وغيّر فيه، فالتجربة أسرع طريق للفهم.
© 2026 أكاديمية بدر التعليمية – هذا المحتوى حصري لأكاديمية بدر التعليمية. يُسمح بالاقتباس القصير مع ذكر المصدر ورابط الصفحة.
القسم: البرمجة
التعليقات (0)
يمكنك التعليق بدون حساب، ويظهر تعليقك بعد مراجعة الإدارة، وقد تُعدّل الصياغة قبل النشر.
لا توجد تعليقات بعد – كن أول من يشارك.


أضف تعليقًا