أساسيات بايثون 7: شرح أنواع البيانات Data Types في Python للمبتدئين

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

في هذا الدرس سنتعلم مفهومًا مهمًا جدًا لأي مبتدئ، وهو أنواع البيانات Data Types في Python. فكل قيمة تكتبها في بايثون لها نوع محدد: النص له نوع، الرقم له نوع، القائمة لها نوع، والقاموس له نوع.

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

{getToc} $title={محتوى المقال}

{alertInfo} يمكنك تجربة جميع الأمثلة مباشرة من خلال محرر بايثون العرب بدون تثبيت أي برنامج.

ما المقصود بأنواع البيانات في بايثون؟

نوع البيانات هو التصنيف الذي يحدد طبيعة القيمة داخل المتغير. مثلًا:

  • هل القيمة نص؟ إذن نوعها str.
  • هل القيمة رقم صحيح؟ إذن نوعها int.
  • هل القيمة رقم عشري؟ إذن نوعها float.
  • هل القيمة مجموعة عناصر داخل قائمة؟ إذن نوعها list.

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

مثال بسيط:

age = 20
name = "Ali"

هنا المتغير age يحتوي على رقم صحيح، أما المتغير name فيحتوي على نص.

كيف تعرف نوع البيانات باستخدام type؟

في بايثون يمكنك معرفة نوع أي قيمة باستخدام الدالة type().

x = 5
y = "Python"

print(type(x))
print(type(y))

الناتج:

<class 'int'>
<class 'str'>
{alertSuccess} الدالة type() من أهم الأدوات التي تساعدك على فهم سبب الأخطاء، خصوصًا عندما لا تعرف هل القيمة نص أم رقم أم قائمة.

أهم أنواع البيانات في بايثون

تحتوي بايثون على أنواع بيانات كثيرة، لكن كمبتدئ ركز أولًا على الأنواع التالية لأنها الأكثر استخدامًا في الدروس والمشاريع البسيطة.

النوع الاسم بالإنجليزية مثال متى أستخدمه؟
نص str "Python" عند تخزين الأسماء، الرسائل، الجمل، النصوص.
عدد صحيح int 10 عند التعامل مع العمر، العدد، الترتيب، الكمية.
عدد عشري float 10.5 عند التعامل مع الأسعار، النسب، القياسات.
قيمة منطقية bool True عند اتخاذ القرارات والشروط.
قائمة list [1, 2, 3] عند تخزين عدة عناصر قابلة للتعديل.
صف ثابت tuple (1, 2, 3) عند تخزين عدة عناصر لا تريد تعديلها.
مجموعة set {"A", "B"} عند تخزين عناصر غير مكررة.
قاموس dict {"name": "Ali"} عند تخزين بيانات على شكل مفتاح وقيمة.

1. النوع النصي str في بايثون

النوع str يستخدم لتخزين النصوص. أي قيمة بين علامات اقتباس تعتبر نصًا، سواء كانت كلمة، جملة، أو حتى رقمًا مكتوبًا داخل علامات اقتباس.

name = "Python"
message = "Welcome to Arab Python"

print(type(name))

الناتج:

<class 'str'>

لاحظ أن القيمة التالية تعتبر نصًا، رغم أنها تشبه الرقم:

number = "123"

print(type(number))

لأن الرقم مكتوب بين علامات اقتباس، فبايثون تتعامل معه كنص.

2. النوع int للأعداد الصحيحة

النوع int يستخدم للأعداد الصحيحة التي لا تحتوي على فاصلة عشرية.

age = 25
students = 40
score = 100

print(type(age))

الناتج:

<class 'int'>

يمكنك استخدام int في العمليات الحسابية:

a = 10
b = 5

print(a + b)
print(a * b)

3. النوع float للأعداد العشرية

النوع float يستخدم للأرقام التي تحتوي على فاصلة عشرية.

price = 19.99
temperature = 36.5

print(type(price))

الناتج:

<class 'float'>

يستخدم float كثيرًا في الأسعار، النسب، الدرجات، القياسات، والعمليات التي تحتاج إلى دقة عشرية.

{alertWarning} لا تكتب الأرقام العشرية بالفاصلة العربية أو الفاصلة العادية مثل 10,5. في بايثون نستخدم النقطة: 10.5

4. النوع bool للقيم المنطقية True و False

النوع bool يحتوي على قيمتين فقط:

  • True وتعني صحيح.
  • False وتعني خطأ.
is_active = True
is_admin = False

print(type(is_active))

القيم المنطقية تظهر كثيرًا مع المقارنات:

age = 18

print(age >= 18)

الناتج:

True

وسنتوسع في استخدامها داخل الشروط في درس if و else.

5. النوع list للقوائم

القائمة list تستخدم لتخزين عدة عناصر داخل متغير واحد. وتكتب باستخدام الأقواس المربعة [].

fruits = ["apple", "banana", "cherry"]

print(fruits)
print(type(fruits))

القوائم قابلة للتعديل، أي يمكنك إضافة عناصر أو حذفها أو تغييرها.

fruits = ["apple", "banana"]

fruits.append("orange")

print(fruits)

إذا أردت التوسع في القوائم، يمكنك قراءة: أساسيات بايثون 16: شرح Lists في Python.

6. النوع tuple للصفوف الثابتة

النوع tuple يشبه القائمة، لكنه غير قابل للتعديل بعد إنشائه. ويكتب غالبًا باستخدام الأقواس الدائرية ().

colors = ("red", "green", "blue")

print(colors)
print(type(colors))

استخدم tuple عندما تريد تخزين بيانات ثابتة لا تحتاج إلى تعديلها.

للمزيد، اقرأ: أساسيات بايثون 17: شرح Tuples في Python.

7. النوع set للمجموعات غير المكررة

النوع set يستخدم لتخزين عناصر غير مكررة. ويكتب باستخدام الأقواس المعقوفة {}.

skills = {"Python", "HTML", "Python"}

print(skills)

لاحظ أن Python مكتوبة مرتين، لكن set يحتفظ بها مرة واحدة فقط.

للتوسع في هذا النوع، اقرأ: أساسيات بايثون 19: شرح Sets في Python.

8. النوع dict للقواميس

القاموس dict يستخدم لتخزين البيانات على شكل مفتاح وقيمة.

student = {
    "name": "Ali",
    "age": 20,
    "level": "beginner"
}

print(student["name"])
print(type(student))

القواميس مهمة جدًا عندما تريد تمثيل بيانات منظمة مثل بيانات طالب، منتج، مستخدم، أو إعدادات برنامج.

يمكنك قراءة الدرس الكامل هنا: أساسيات بايثون 18: شرح Dictionaries في Python.

الفرق بين الأنواع المتشابهة

أحيانًا يختلط الأمر على المبتدئ بين الأنواع المتقاربة، خصوصًا بين list و tuple و set. هذا الجدول يلخص الفرق:

النوع هل يحافظ على الترتيب؟ هل يسمح بالتكرار؟ هل يمكن تعديله؟
list نعم نعم نعم
tuple نعم نعم لا
set لا تعتمد عليه للترتيب لا نعم

تحويل نوع البيانات في بايثون

أحيانًا تحتاج إلى تحويل قيمة من نوع إلى نوع آخر. مثلًا عندما يأخذ البرنامج رقمًا من المستخدم باستخدام input()، فإن القيمة ترجع كنص str حتى لو كتب المستخدم رقمًا.

age = input("كم عمرك؟ ")

print(type(age))

إذا أردت استخدام العمر في عملية حسابية، يجب تحويله إلى رقم:

age = int(input("كم عمرك؟ "))

print(age + 1)

أشهر دوال التحويل

الدالة وظيفتها مثال
str() تحويل القيمة إلى نص str(20)
int() تحويل القيمة إلى عدد صحيح int("20")
float() تحويل القيمة إلى عدد عشري float("10.5")
list() تحويل قيمة قابلة للتكرار إلى قائمة list("abc")
bool() تحويل القيمة إلى True أو False bool("")
{alertWarning} ليس كل نص يمكن تحويله إلى رقم. مثلًا int("Python") سيؤدي إلى خطأ لأن النص لا يمثل رقمًا.

أخطاء شائعة بسبب أنواع البيانات

1. جمع نص مع رقم مباشرة

هذا خطأ شائع عند المبتدئين:

age = 20
print("عمرك " + age)

الصحيح:

age = 20
print("عمرك " + str(age))

أو باستخدام f-string:

age = 20
print(f"عمرك {age}")

2. نسيان تحويل input إلى رقم

الدالة input() تعيد نصًا دائمًا، لذلك هذا الكود قد لا يعطيك النتيجة التي تتوقعها:

number = input("اكتب رقمًا: ")

print(number + 5)

الصحيح:

number = int(input("اكتب رقمًا: "))

print(number + 5)

3. استخدام دالة لا تناسب نوع البيانات

بعض الدوال تعمل مع النصوص، وبعضها يعمل مع القوائم، وبعضها يعمل مع الأرقام. لذلك قبل استخدام أي دالة، اسأل نفسك: هل هذه الدالة مناسبة لهذا النوع؟

name = "python"
print(name.upper())

الدالة upper() تعمل مع النصوص، لكنها لا تعمل مع الأرقام.

تمرين بسيط على أنواع البيانات

جرب الكود التالي، ثم حاول توقع نوع كل متغير قبل رؤية الناتج.

name = "Sara"
age = 22
height = 1.65
is_student = True
skills = ["Python", "HTML"]

print(type(name))
print(type(age))
print(type(height))
print(type(is_student))
print(type(skills))

روابط مفيدة

الخلاصة

في هذا الدرس تعلمنا أن كل قيمة في بايثون لها نوع بيانات محدد. النصوص نوعها str، الأعداد الصحيحة نوعها int، الأعداد العشرية نوعها float، القيم المنطقية نوعها bool، والقوائم والقواميس والمجموعات لها أنواع خاصة بها.

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

{alertSuccess} الخلاصة السريعة: قبل أن تسأل لماذا ظهر الخطأ، اطبع type() للقيمة. غالبًا ستكتشف أن المشكلة بسبب نوع البيانات.

إرسال تعليق

أحدث أقدم