الفصل الرابع: المتغيرات وأنواع البيانات الأساسية
مقدمة الفصل
في الفصل السابق، أخذنا لمحة سريعة عن المتغيرات. في هذا الفصل، سنبني على تلك المعرفة ونغوص أعمق في هذا المفهوم الجوهري. سنتعلم قواعد تسمية المتغيرات بشكل صحيح، وسنستكشف بالتفصيل أنواع البيانات الأساسية (Primitive Data Types): النصوص، الأعداد الصحيحة، الأعداد العشرية، والقيم المنطقية. هذه الأنواع هي حجر الأساس الذي ستستخدمه لتخزين كل معلومة في برامجك.
1. فهم أعمق للمتغيرات
المتغير هو أكثر من مجرد اسم؛ إنه عنوان لمكان في ذاكرة الحاسوب تقوم بتخزين بيانات فيه. عند إنشاء متغير، فأنت تطلب من بايثون حجز مساحة صغيرة وتسميتها بالاسم الذي اخترته.
قواعد تسمية المتغيرات
لغة بايثون لديها قواعد واضحة لتسمية المتغيرات يجب الالتزام بها:
- يجب أن يبدأ اسم المتغير بحرف (a-z, A-Z) أو بشرطة سفلية (
_
). - لا يمكن أن يبدأ اسم المتغير برقم.
- يمكن أن يحتوي الاسم على حروف وأرقام وشرطات سفلية فقط.
- أسماء المتغيرات حساسة لحالة الأحرف (
age
,Age
,AGE
هي ثلاثة متغيرات مختلفة). - لا يمكن استخدام الكلمات المحجوزة في بايثون كأسماء للمتغيرات (مثل
if
,for
,class
).
اسم صالح | اسم غير صالح | السبب |
---|---|---|
my_age |
my-age |
يحتوي على شرطة (-) |
age2 |
2age |
يبدأ برقم |
_name |
user name |
يحتوي على مسافة |
2. أنواع البيانات الأساسية (Primitive Types)
هذه الأنواع هي أبسط أشكال البيانات، حيث أن كل متغير منها يحمل قيمة واحدة فقط.
أ. النصوص (Strings)
النص هو سلسلة من الأحرف تُستخدم لتمثيل الكلمات والجمل. يجب وضعها دائمًا بين علامتي تنصيص ""
أو ' '
.
صيغ متقدمة للنصوص:
-
f-strings (النصوص المنسقة): هي الطريقة الأحدث والأسهل لدمج قيم المتغيرات داخل النصوص.
name = "خالد" age = 30 # الطريقة التقليدية print("اسمي هو " + name + " وعمري هو " + str(age)) # استخدام f-string (أفضل وأوضح) print(f"اسمي هو {name} وعمري هو {age}")
-
بعض دوال النصوص المفيدة:
message = " مرحباً بالعالم " print(len(message)) # لحساب عدد الأحرف print(message.upper()) # لتحويل كل الأحرف إلى كبيرة print(message.lower()) # لتحويل كل الأحرف إلى صغيرة print(message.strip()) # لإزالة المسافات الزائدة من البداية والنهاية
ب. الأعداد الصحيحة (Integers)
هي الأعداد الكاملة التي لا تحتوي على فاصلة عشرية، سواء كانت موجبة، سالبة، أو صفر.
user_count = 150
temperature = -5
total_items = 0
ج. الأعداد العشرية (Floats)
هي الأعداد التي تحتوي على فاصلة عشرية، وتُستخدم لتمثيل القيم التي تتطلب دقة أكبر.
price = 99.50
pi_value = 3.14159
scientific_notation = 1.5e3 # هذا يعني 1.5 * 10^3 وهو يساوي 1500.0
د. القيم المنطقية (Booleans)
النوع المنطقي له قيمتان فقط لا غير: True
(صحيح) أو False
(خطأ). هذا النوع أساسي جدًا في اتخاذ القرارات والتحكم في سير البرنامج، وغالبًا ما يكون ناتجًا عن عمليات المقارنة.
is_logged_in = True
has_permission = False
# ناتج المقارنة يكون قيمة منطقية
print(10 > 5) # سيطبع: True
print(x == y) # سيطبع: False (إذا كانت قيمتا x و y غير متساويتين)
3. التحويل بين الأنواع (Type Casting)
في بعض الأحيان، نحتاج إلى تحويل قيمة من نوع إلى آخر. على سبيل المثال، دالة input()
تعيد دائمًا نصًا، ولإجراء عمليات حسابية عليه، يجب تحويله إلى رقم أولاً. عملية التحويل هذه تسمى Type Casting.
-
int()
: تحول القيمة إلى عدد صحيح.age_str = "25" age_int = int(age_str) print(age_int + 5) # سيطبع: 30
-
float()
: تحول القيمة إلى عدد عشري.price_str = "19.99" price_float = float(price_str) print(price_float * 2) # سيطبع: 39.98
-
str()
: تحول القيمة إلى نص.item_id = 505 item_code = "ITEM-" + str(item_id) print(item_code) # سيطبع: ITEM-505
4. فحص نوع المتغير باستخدام type()
إذا كنت غير متأكد من نوع البيانات الذي يحمله متغير ما، يمكنك استخدام دالة type()
المدمجة لمعرفته. هذا الأمر مفيد جدًا لتصحيح الأخطاء.
name = "علي"
age = 25
price = 9.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. تمارين تطبيقية
تمرين 1: حاسبة مساحة المستطيل
اكتب برنامجًا يسأل المستخدم عن طول وعرض مستطيل. يجب على البرنامج تحويل المدخلات إلى أرقام، ثم حساب المساحة (الطول × العرض) وطباعة الناتج في رسالة واضحة.
تمرين 2: رسالة ترحيب منسقة
اكتب برنامجًا يسأل المستخدم عن اسمه الأول واسمه الأخير. يجب على البرنامج طباعة رسالة ترحيب تجعل الاسم الأول بأحرف كبيرة بالكامل، وذلك باستخدام f-string. (مثال: “مرحباً يا AHMAD, عائلة Al-Ali!”).
6. خلاصة الفصل
- المتغيرات لها قواعد تسمية واضحة ويجب الالتزام بها.
- أنواع البيانات الأساسية هي النصوص (
str
)، الأعداد الصحيحة (int
)، الأعداد العشرية (float
)، والقيم المنطقية (bool
). - التحويل بين الأنواع (Type Casting) عملية ضرورية، خاصة عند التعامل مع مدخلات المستخدم.
- يمكن استخدام دالة
type()
لمعرفة نوع بيانات أي متغير.
ماذا بعد؟
الآن بعد أن أتقنت كيفية تخزين القيم الفردية، سننتقل في الفصل الخامس لنتعلم كيف نجعل برامجنا تتخذ قرارات بناءً على هذه القيم باستخدام الشروط (if
, else
) والحلقات (for
, while
). أما أنواع البيانات التي تخزن مجموعات من القيم مثل القوائم والقواميس، فسنغطيها بالتفصيل في فصلها المخصص لاحقًا.