مرحبًا بك في الدرس السابع من سلسلة أساسيات بايثون على موقع بايثون العرب. في الدرس السابق تعرفنا على العوامل 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))
روابط مفيدة
- أساسيات بايثون 6: شرح Operators في Python
- حل خطأ can only concatenate str not int to str في بايثون
- حل خطأ invalid literal for int في بايثون
- محرر بايثون العرب لتجربة الأكواد أونلاين
- توثيق Python الرسمي لأنواع البيانات
الخلاصة
في هذا الدرس تعلمنا أن كل قيمة في بايثون لها نوع بيانات محدد. النصوص نوعها str، الأعداد الصحيحة نوعها int، الأعداد العشرية نوعها float، القيم المنطقية نوعها bool، والقوائم والقواميس والمجموعات لها أنواع خاصة بها.
فهم أنواع البيانات خطوة أساسية جدًا قبل الانتقال إلى الشروط، الحلقات، القوائم، الدوال، والمشاريع العملية. لذلك لا تكتفِ بقراءة الأمثلة، بل جرّبها بنفسك وغير القيم وشاهد كيف يتغير النوع والنتيجة.
{alertSuccess} الخلاصة السريعة: قبل أن تسأل لماذا ظهر الخطأ، اطبع type() للقيمة. غالبًا ستكتشف أن المشكلة بسبب نوع البيانات.