البرمجة
المتغيرات وأنواع البيانات في 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)** — كيف تجعل برنامجك يتخذ قرارات!
**جرب التمارين الأربعة قبل الانتقال للمقال التالي. الممارسة هي المفتاح!**
**ما نوع البيانات الذي وجدته الأكثر إثارة؟ شاركنا في التعليقات!**