البرمجة

المتغيرات وأنواع البيانات في Python — الشرح الكامل

📅 2026-09-26⏱ 9 دقائق قراءة
في المقال السابق، كتبت أول برنامج لك وطبعت "Hello, World!". الآن حان الوقت لفهم أهم مفهوم في البرمجة: **المتغيرات وأنواع البيانات**. بدون المتغيرات، لا يمكن لأي برنامج أن يحفظ بيانات أو يتعامل معها. هي أساس كل شيء في Python. بنهاية هذا المقال، ستكون قادراً على: - إنشاء متغيرات واستخدامها - فهم الفرق بين أنواع البيانات المختلفة - تحويل الأنواع من نوع لآخر - استخدام القوائم والقواميس - تجنب الأخطاء الشائعة ## 1. ما هو المتغير؟ **المتغير** هو مكان في ذاكرة الحاسوب نخزن فيه قيمة، ونعطيه اسماً لنشير إليه لاحقاً. ### القياس العملي: تخيل المتغير كـ **صندوق** عليه ملصق باسمه: - الصندوق = مساحة في الذاكرة - الملصق = اسم المتغير - المحتوى = القيمة المخزنة ### إنشاء متغير: ```python name = "أحمد" age = 25 is_student = True ``` **شرح:** - `name` = اسم المتغير - `=` = علامة الإسناد (وليست "يساوي") - `"أحمد"` = القيمة المخزنة ### استخدام المتغير: ```python name = "سارة" print(name) # سارة print(f"مرحباً {name}") # مرحباً سارة ``` ## 2. قواعد تسمية المتغيرات <table> <thead> <tr> <th>القاعدة</th> <th>صحيح</th> <th>خطأ</th> </tr> </thead> <tbody> <tr> <td>يبدأ بحرف أو _</td> <td><code>name</code>, <code>_age</code></td> <td><code>2name</code></td> </tr> <tr> <td>بدون مسافات</td> <td><code>first_name</code></td> <td><code>first name</code></td> </tr> <tr> <td>لا يستخدم كلمات محجوزة</td> <td><code>my_print</code></td> <td><code>print</code></td> </tr> <tr> <td>حساس لحالة الأحرف</td> <td><code>Name</code> ≠ <code>name</code></td> <td>—</td> </tr> <tr> <td>يفضل snake_case</td> <td><code>user_age</code></td> <td><code>UserAge</code></td> </tr> </tbody> </table> ## 3. أنواع البيانات الأساسية Python لديها عدة أنواع بيانات. أهم 6 أنواع: ### 1. النصوص (String — `str`) ```python name = "أحمد" city = 'عمّان' message = """ هذا نص متعدد الأسطر """ print(type(name)) # <class 'str'> ``` **ملاحظة:** النص يوضع بين `"..."` أو `'...'`. ### 2. الأعداد الصحيحة (Integer — `int`) ```python age = 25 year = 2026 temperature = -5 print(type(age)) # <class 'int'> ``` ### 3. الأعداد العشرية (Float — `float`) ```python price = 19.99 pi = 3.14159 ratio = 0.5 print(type(price)) # <class 'float'> ``` ### 4. القيم المنطقية (Boolean — `bool`) ```python is_active = True is_deleted = False print(type(is_active)) # <class 'bool'> ``` **قيمتان فقط:** `True` أو `False`. ### 5. القوائم (List — `list`) ```python fruits = ["تفاح", "موز", "برتقال"] numbers = [1, 2, 3, 4, 5] mixed = ["أحمد", 25, True, 3.14] print(type(fruits)) # <class 'list'> ``` **القائمة:** مجموعة **مرتبة** و**قابلة للتعديل**. ### 6. القواميس (Dictionary — `dict`) ```python person = { "name": "أحمد", "age": 25, "city": "عمّان" } print(type(person)) # <class 'dict'> ``` **القاموس:** مجموعة من **أزواج مفتاح-قيمة**. ### جدول مقارنة: <table> <thead> <tr> <th>النوع</th> <th>الاسم</th> <th>مثال</th> <th>الاستخدام</th> </tr> </thead> <tbody> <tr> <td><code>str</code></td> <td>نص</td> <td><code>"أحمد"</code></td> <td>أسماء، رسائل، عناوين</td> </tr> <tr> <td><code>int</code></td> <td>عدد صحيح</td> <td><code>25</code></td> <td>أعمار، أعداد، سنوات</td> </tr> <tr> <td><code>float</code></td> <td>عدد عشري</td> <td><code>19.99</code></td> <td>أسعار، نسب، قياسات</td> </tr> <tr> <td><code>bool</code></td> <td>منطقي</td> <td><code>True</code></td> <td>حالات، شروط، إعدادات</td> </tr> <tr> <td><code>list</code></td> <td>قائمة</td> <td><code>[1, 2, 3]</code></td> <td>مجموعات مرتبة</td> </tr> <tr> <td><code>dict</code></td> <td>قاموس</td> <td><code>{"a": 1}</code></td> <td>بيانات مترابطة</td> </tr> </tbody> </table> ## 4. معرفة نوع المتغير استخدم دالة `type()`: ```python name = "أحمد" age = 25 price = 19.99 is_active = True print(type(name)) # <class 'str'> print(type(age)) # <class 'int'> print(type(price)) # <class 'float'> print(type(is_active)) # <class 'bool'> ``` ## 5. تحويل الأنواع (Type Conversion) يمكنك تحويل نوع لآخر: ```python # نص إلى عدد صحيح age_str = "25" age_int = int(age_str) print(age_int + 5) # 30 # عدد صحيح إلى نص num = 100 num_str = str(num) print("الرقم: " + num_str) # الرقم: 100 # نص إلى عدد عشري price_str = "19.99" price_float = float(price_str) print(price_float * 2) # 39.98 # عدد إلى منطقي print(bool(1)) # True print(bool(0)) # False print(bool("")) # False (نص فارغ) ``` ### استخدامات عملية: ```python # قراءة رقم من المستخدم age = int(input("كم عمرك؟ ")) print(f"بعد 10 سنوات سيكون عمرك: {age + 10}") ``` ## 6. العمل مع النصوص (Strings) ### العمليات الأساسية: ```python text = "Python" # الطول print(len(text)) # 6 # الوصول لحرف print(text[0]) # P print(text[-1]) # n # الشرائح print(text[1:4]) # yth print(text[:3]) # Pyt print(text[3:]) # hon ``` ### الطرق الشائعة: <table> <thead> <tr> <th>الطريقة</th> <th>النتيجة</th> </tr> </thead> <tbody> <tr> <td><code>text.upper()</code></td> <td>PYTHON</td> </tr> <tr> <td><code>text.lower()</code></td> <td>python</td> </tr> <tr> <td><code>text.replace("P", "J")</code></td> <td>Jython</td> </tr> <tr> <td><code>"y" in text</code></td> <td>True</td> </tr> <tr> <td><code>text.startswith("P")</code></td> <td>True</td> </tr> </tbody> </table> ### تنسيق النصوص: ```python name = "أحمد" age = 25 # f-String (الأفضل) print(f"اسمي {name}، عمري {age}") # format print("اسمي {}، عمري {}".format(name, age)) # Concatenation print("اسمي " + name) ``` ## 7. العمل مع الأرقام ### العمليات الحسابية: ```python a = 10 b = 3 print(a + b) # 13 (جمع) print(a - b) # 7 (طرح) print(a * b) # 30 (ضرب) print(a / b) # 3.333... (قسمة) print(a // b) # 3 (قسمة صحيحة) print(a % b) # 1 (باقي القسمة) print(a ** b) # 1000 (قوة) ``` ### عمليات مختصرة: ```python counter = 0 counter += 1 # counter = counter + 1 counter -= 1 counter *= 2 counter /= 2 ``` ### دوال رياضية: ```python import math print(abs(-5)) # 5 print(round(3.7)) # 4 print(max(1, 5, 3)) # 5 print(min(1, 5, 3)) # 1 print(sum([1, 2, 3])) # 6 print(math.sqrt(16)) # 4.0 print(math.pi) # 3.14159... ``` ## 8. العمل مع القوائم (Lists) ### إنشاء قائمة: ```python fruits = ["تفاح", "موز", "برتقال"] numbers = [1, 2, 3, 4, 5] empty = [] ``` ### الوصول للعناصر: ```python fruits = ["تفاح", "موز", "برتقال"] print(fruits[0]) # تفاح print(fruits[1]) # موز print(fruits[-1]) # برتقال (آخر عنصر) ``` ### التعديل: ```python fruits = ["تفاح", "موز"] fruits.append("برتقال") # إضافة في النهاية fruits.insert(0, "عنب") # إدراج في موضع fruits.remove("موز") # حذف بالاسم fruits.pop() # حذف الأخير fruits.pop(0) # حذف بالموقع print(fruits) ``` ### الشرائح: ```python numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print(numbers[0:3]) # [1, 2, 3] print(numbers[:5]) # [1, 2, 3, 4, 5] print(numbers[5:]) # [6, 7, 8, 9, 10] print(numbers[-3:]) # [8, 9, 10] print(numbers[::2]) # [1, 3, 5, 7, 9] print(numbers[::-1]) # [10, 9, 8, ..., 1] ``` ### الطول والترتيب: ```python numbers = [3, 1, 4, 1, 5, 9, 2, 6] print(len(numbers)) # 8 print(sorted(numbers)) # [1, 1, 2, 3, 4, 5, 6, 9] numbers.sort() # ترتيب في المكان numbers.reverse() # عكس الترتيب ``` ## 9. العمل مع القواميس (Dictionaries) ### إنشاء قاموس: ```python person = { "name": "أحمد", "age": 25, "city": "عمّان" } ``` ### الوصول للقيم: ```python print(person["name"]) # أحمد print(person.get("age")) # 25 print(person.get("x", "غير موجود")) # غير موجود ``` ### التعديل والإضافة: ```python person = {"name": "أحمد"} person["age"] = 25 # إضافة person["name"] = "محمد" # تعديل del person["age"] # حذف ``` ### التكرار: ```python person = {"name": "أحمد", "age": 25, "city": "عمّان"} # المفاتيح for key in person.keys(): print(key) # القيم for value in person.values(): print(value) # الاثنان for key, value in person.items(): print(f"{key}: {value}") ``` ### التحقق من الوجود: ```python person = {"name": "أحمد", "age": 25} if "name" in person: print("يوجد اسم") if "city" in person: print("يوجد مدينة") else: print("لا توجد مدينة") ``` ## 10. أخطاء شائعة ### 1. خلط الأنواع: ```python # خطأ age = "25" result = age + 5 # TypeError # صحيح age = int("25") result = age + 5 # 30 ``` ### 2. الوصول لعنصر غير موجود: ```python fruits = ["تفاح", "موز"] # خطأ print(fruits[5]) # IndexError # صحيح if len(fruits) > 5: print(fruits[5]) ``` ### 3. نسيان علامات التنصيص: ```python # خطأ name = أحمد # NameError # صحيح name = "أحمد" ``` ### 4. استخدام = بدلاً من ==: ```python # خطأ (في الشرط) if x = 5: # SyntaxError # صحيح if x == 5: ``` ## 11. مشروع عملي — بطاقة شخصية دعنا نطبق كل ما تعلمناه: ```python # بطاقة شخصية تفاعلية print("=" * 40) print("📝 إنشاء بطاقة شخصية") print("=" * 40) print() # جمع البيانات name = input("ما اسمك؟ ") age = int(input("كم عمرك؟ ")) city = input("من أي مدينة أنت؟ ") hobbies_input = input("ما هواياتك؟ (افصل بينها بفاصلة) ") # تحويل الهوايات إلى قائمة hobbies = [h.strip() for h in hobbies_input.split(",")] # إنشاء قاموس person = { "الاسم": name, "العمر": age, "المدينة": city, "الهوايات": hobbies, } # عرض البطاقة print() print("=" * 40) print("📋 بطاقتك الشخصية") print("=" * 40) print(f"👤 الاسم: {person['الاسم']}") print(f"🎂 العمر: {person['العمر']} سنة") print(f"📍 المدينة: {person['المدينة']}") print(f"🎯 الهوايات:") for hobby in person["الهوايات"]: print(f" • {hobby}") print("=" * 40) print(f"\n✨ شكراً {name}! بطاقة جميلة!") ``` ### عند التشغيل: ``` ======================================== 📝 إنشاء بطاقة شخصية ======================================== ما اسمك؟ أحمد كم عمرك؟ 25 من أي مدينة أنت؟ عمّان ما هواياتك؟ القراءة، البرمجة، الرياضة ======================================== 📋 بطاقتك الشخصية ======================================== 👤 الاسم: أحمد 🎂 العمر: 25 سنة 📍 المدينة: عمّان 🎯 الهوايات: • القراءة • البرمجة • الرياضة ======================================== ✨ شكراً أحمد! بطاقة جميلة! ``` ## 12. تمارين عملية ### التمرين 1: حساب المساحة اكتب برنامجاً يطلب طول وعرض مستطيل، ثم يطبع مساحته. ### التمرين 2: تحويل درجات الحرارة اكتب برنامجاً يحول درجة الحرارة من مئوية إلى فهرنهايت. **القانون:** `F = C × 9/5 + 32` ### التمرين 3: قائمة التسوق اكتب برنامجاً: - يطلب من المستخدم 5 عناصر - يخزنها في قائمة - يطبع القائمة مع أرقامها ### التمرين 4: معلومات كتاب اكتب برنامجاً ينشئ قاموساً لكتاب يحتوي على: - العنوان - المؤلف - سنة النشر - عدد الصفحات ثم يطبع المعلومات بشكل منسق. ## قائمة تحقق — هل تعلمت؟ <table> <thead> <tr> <th>المهارة</th> <th>الحالة</th> </tr> </thead> <tbody> <tr> <td>إنشاء المتغيرات واستخدامها</td> <td>⬜</td> </tr> <tr> <td>فهم أنواع البيانات الستة</td> <td>⬜</td> </tr> <tr> <td>استخدام <code>type()</code> لمعرفة النوع</td> <td>⬜</td> </tr> <tr> <td>تحويل الأنواع</td> <td>⬜</td> </tr> <tr> <td>العمل مع النصوص</td> <td>⬜</td> </tr> <tr> <td>العمل مع الأرقام</td> <td>⬜</td> </tr> <tr> <td>إنشاء القوائم والتعديل عليها</td> <td>⬜</td> </tr> <tr> <td>إنشاء القواميس والوصول إليها</td> <td>⬜</td> </tr> </tbody> </table> ## الخلاصة في هذا المقال، تعلمت: 1. **المتغيرات** — صناديق لتخزين البيانات 2. **أنواع البيانات الستة** — str, int, float, bool, list, dict 3. **تحويل الأنواع** — من نوع لآخر 4. **العمل مع النصوص** — العمليات والطرق 5. **العمل مع الأرقام** — العمليات والدوال 6. **القوائم** — إنشاء وتعديل والشرائح 7. **القواميس** — أزواج مفتاح-قيمة **هذه هي الأساسيات التي ستبني عليها كل ما ستتعلمه لاحقاً في Python!** **في المقال القادم:** سنتعلم **الشروط (if/else)** — كيف تجعل برنامجك يتخذ قرارات! **جرب التمارين الأربعة قبل الانتقال للمقال التالي. الممارسة هي المفتاح!** **ما نوع البيانات الذي وجدته الأكثر إثارة؟ شاركنا في التعليقات!**