العمليات الأساسية في بايثون: اجعل الحاسوب يحسب عنك
تعلّم عمليات الجمع والطرح والضرب والقسمة في بايثون، وباقي القسمة والأسس، وترتيب العمليات، وكيف تعمل + و * مع النصوص والقوائم.
تخيّل أنك تحسب مجموع نقاطك في ثلاث مباريات، أو كم تبقّى من مصروفك بعد شراء وجبة. هل تحتاج آلة حاسبة؟ لا، عندك بايثون. في هذا الدرس ستتعلّم كيف تجعل بايثون تحسب عنك، وستكتشف أن الرموز نفسها تعمل مع النصوص والقوائم أيضًا.
🎯 ماذا ستتعلم؟
بنهاية هذا الدرس ستكون قادرًا على:
- إجراء عمليات الجمع والطرح والضرب والقسمة على الأرقام.
- إيجاد باقي القسمة ورفع رقم إلى قوّة.
- فهم ترتيب العمليات وكيف تتحكم فيه بالأقواس.
- دمج النصوص وتكرارها بـ
+و*. - دمج القوائم وتكرارها بالرموز نفسها.
🧰 ماذا تحتاج قبل أن تبدأ؟
يجب أن تعرف كيف تحفظ رقمًا أو نصًا في متغيّر، وكيف تنشئ قائمة بسيطة. إن أردت مراجعة سريعة، اقرأ المتغيّرات وأنواع البيانات في بايثون ثم القوائم في بايثون. كل الأمثلة تعمل في مترجم بايثون في المتصفح بدون تثبيت.
الفكرة ببساطة
عندما تكتب على الآلة الحاسبة 7 + 5 وتضغط على علامة يساوي، تظهر لك النتيجة 12. علامة الجمع هنا هي “أمر” يقول للآلة: اجمع هذين الرقمين.
في بايثون، نسمّي هذه الرموز المعاملات (operators). كل معامل هو أمر صغير يقول لبايثون ماذا تفعل بالقيم التي حوله. بعضها للأرقام، مثل الجمع والضرب. والمفاجأة أن بعضها يعمل مع النصوص والقوائم أيضًا.
الخطوة 1: العمليات الأربع الأساسية
الجمع + والطرح - والضرب * والقسمة /. لاحظ أن الضرب يُكتب بالنجمة، والقسمة بالشرطة المائلة. هنا نحسب نقاط لاعب بعد ثلاث جولات:
round1 = 15
round2 = 20
round3 = 10
total = round1 + round2 + round3
print("المجموع:", total)
print("المتوسط:", total / 3)
المجموع: 45
المتوسط: 15.0
لاحظ شيئًا مهمًا في السطر الأخير. ناتج القسمة كان 15.0 وليس 15. في بايثون، القسمة بـ / تعطي دائمًا عددًا عشريًا (float)، حتى لو كانت النتيجة صحيحة.
وهنا مثال على الطرح والضرب مع المصروف:
pocket_money = 50
meal_price = 12
days = 3
left = pocket_money - meal_price * days
print("المتبقي:", left)
المتبقي: 14
هل توقّعت 14؟ لو حسبت من اليسار إلى اليمين لحصلت على 114. لكن بايثون ضربت أولًا ثم طرحت. سنفهم السبب في الخطوة التالية.
الخطوة 2: ترتيب العمليات
بايثون تتبع القاعدة نفسها التي تعلّمتها في مادة الرياضيات. الضرب والقسمة أولًا، ثم الجمع والطرح. وإذا أردت تغيير الترتيب، ضع ما تريد حسابه أولًا بين قوسين.
print(2 + 3 * 4)
print((2 + 3) * 4)
14
20
في السطر الأول ضربت بايثون 3 في 4 أولًا، ثم أضافت 2. في السطر الثاني أجبرناها بالأقواس على الجمع أولًا. القاعدة بسيطة: إذا شككت في الترتيب، استخدم الأقواس.
الخطوة 3: باقي القسمة %
عندك 17 قطعة حلوى وتريد توزيعها على 5 أصدقاء بالتساوي. كل واحد يأخذ 3، ويتبقّى 2. هذا “المتبقّي” هو ما يعطيك إياه معامل باقي القسمة (modulo)، ورمزه %.
candies = 17
friends = 5
print("لكل صديق:", candies // friends)
print("المتبقي:", candies % friends)
لكل صديق: 3
المتبقي: 2
لاحظ أننا استخدمنا هنا // بشرطتين. هذه القسمة الصحيحة (integer division) التي تهمل الكسور وتعطي عددًا صحيحًا. أما % فتعطي ما تبقّى بعد القسمة.
أشهر استخدام لباقي القسمة هو معرفة هل الرقم زوجي أم فردي. أي رقم زوجي باقي قسمته على 2 يساوي صفرًا:
print(10 % 2)
print(7 % 2)
0
1
🚀 للمتقدمين: باقي القسمة مفيد جدًا مع الوقت. لو مرّت 130 دقيقة على بداية المباراة، فإن
130 // 60يعطيك الساعات، و130 % 60يعطيك الدقائق الزائدة. جرّبها واطبع النتيجة على شكل “2 ساعة و 10 دقائق”.
الخطوة 4: الأسس **
نجمتان متتاليتان تعنيان “مرفوع إلى القوّة”. فالتعبير 7 ** 2 يعني 7 في نفسها، أي 49. و 2 ** 3 يعني 2 في نفسها ثلاث مرات، أي 8.
squared = 7 ** 2
cubed = 2 ** 3
print(squared)
print(cubed)
49
8
تخيّل مربّعًا طول ضلعه 7 سنتيمترات. مساحته هي 7 ** 2. ومكعّبًا طول ضلعه 2، حجمه 2 ** 3. لهذا نسمّي الأولى “تربيع” والثانية “تكعيب”.
الخطوة 5: المعاملات مع النصوص
هنا تبدأ المتعة. علامة الجمع لا تجمع الأرقام فقط، بل تلصق النصوص ببعضها أيضًا. نسمّي هذا الدمج (concatenation):
first_name = "سارة"
last_name = "العلي"
full_name = first_name + " " + last_name
print(full_name)
سارة العلي
لاحظ أننا أضفنا نصًا فيه مسافة واحدة " " بين الاسمين. بدونها سيلتصق الاسمان معًا.
والضرب يكرّر النص عدة مرات. مفيد لرسم خطوط أو تشجيع:
print("هيا" * 3)
print("-" * 20)
هياهياهيا
--------------------
في السطر الثاني، طبعت بايثون شرطة واحدة عشرين مرة. طريقة سريعة لرسم خط فاصل!
الخطوة 6: المعاملات مع القوائم
القوائم تتصرّف مثل النصوص تمامًا. الجمع يضم قائمتين في قائمة واحدة، والضرب يكرّر القائمة:
morning = ["رياضيات", "علوم"]
afternoon = ["عربي", "رياضة"]
timetable = morning + afternoon
print(timetable)
print(len(timetable))
['رياضيات', 'علوم', 'عربي', 'رياضة']
4
scores = [0] * 5
print(scores)
[0, 0, 0, 0, 0]
المثال الثاني مفيد جدًا. عندما تريد قائمة فيها خمسة أصفار لخمس جولات لم تُلعب بعد، لا تكتبها بيدك. اكتب [0] * 5 وستفعلها بايثون عنك.
⚠️ أخطاء شائعة
هذه الأخطاء يقع فيها الجميع في البداية، ولا مشكلة في ذلك. المهم أن تعرف كيف تصلحها.
1. جمع نص مع رقم
❌
age = 12
print("عمري " + age)
TypeError: can only concatenate str (not "int") to str
بايثون تقول: “لا أستطيع لصق نص برقم”. الحل أن تحوّل الرقم إلى نص بـ str() أولًا، أو تفصل بينهما بفاصلة داخل print():
# ✅
age = 12
print("عمري " + str(age))
print("عمري", age)
عمري 12
عمري 12
2. استخدام x بدل * في الضرب
❌
price = 5 x 3
SyntaxError: invalid syntax
حرف x ليس رمز ضرب في بايثون. استخدم النجمة دائمًا:
# ✅
price = 5 * 3
print(price)
15
3. نسيان الأقواس في المتوسط
❌
average = 80 + 90 / 2
print(average)
125.0
الكود لا يتوقف، لكن النتيجة خاطئة. بايثون قسمت 90 على 2 أولًا ثم أضافت 80. ضع الجمع بين قوسين:
# ✅
average = (80 + 90) / 2
print(average)
85.0
🧪 جرّب بنفسك
التحدي 1: مجموع الدرجات
عندك درجات ثلاث مواد. احسب المجموع والمتوسط واطبعهما. تذكّر الأقواس عند حساب المتوسط.
math = 88
science = 92
arabic = 75
# احسب المجموع والمتوسط هنا
print(math)
88
💡 اضغط لرؤية الحل
math = 88
science = 92
arabic = 75
total = math + science + arabic
average = total / 3
print("المجموع:", total)
print("المتوسط:", average)
المجموع: 255
المتوسط: 85.0
التحدي 2: توزيع الفرق
في الصف 23 طالبًا، وتريد تقسيمهم إلى فرق من 4. كم فريقًا كاملًا ستحصل عليه؟ وكم طالبًا سيبقى بلا فريق؟ استخدم // و %.
students = 23
team_size = 4
# اطبع عدد الفرق الكاملة والطلاب المتبقين
print(students)
23
💡 اضغط لرؤية الحل
students = 23
team_size = 4
teams = students // team_size
left = students % team_size
print("عدد الفرق:", teams)
print("بلا فريق:", left)
عدد الفرق: 5
بلا فريق: 3
التحدي 3: لافتة الترحيب
اصنع لافتة ترحيب من ثلاثة أسطر. السطر الأول والثالث خط من 15 نجمة، والسطر الأوسط اسم فريقك. استخدم الضرب مع النصوص، ولا تكتب النجوم بيدك.
team = "الصقور"
# اطبع اللافتة هنا
print(team)
الصقور
💡 اضغط لرؤية الحل
team = "الصقور"
line = "*" * 15
print(line)
print("فريق " + team)
print(line)
***************
فريق الصقور
***************
✅ اختبر نفسك
-
ماذا يطبع
print(10 / 2)؟- أ) 5
- ب) 5.0
- ج) 5.5
-
ما ناتج
2 + 3 * 2؟- أ) 10
- ب) 8
- ج) 7
-
صح أم خطأ:
"أ" * 3يعطي"أأأ".
💡 اضغط لرؤية الإجابات
- ب) 5.0، لأن القسمة بـ
/تعطي دائمًا عددًا عشريًا. - ب) 8، لأن الضرب ينفَّذ قبل الجمع.
- صح. الضرب يكرّر النص ثلاث مرات.
📝 الخلاصة
- الجمع
+والطرح-والضرب*والقسمة/تعمل مع الأرقام كما في الرياضيات. - القسمة
/تعطي عددًا عشريًا دائمًا، و//تعطي عددًا صحيحًا، و%تعطي الباقي. - النجمتان
**ترفعان الرقم إلى قوّة. - الضرب والقسمة قبل الجمع والطرح، والأقواس تغيّر الترتيب.
+يدمج النصوص والقوائم، و*يكرّرها.
⏭️ الخطوة التالية
الآن تستطيع جعل بايثون تحسب أي شيء تريده. جرّب أن تحسب عدد الأيام المتبقية على الإجازة، أو مجموع نقاطك في لعبتك المفضّلة. لكن هل لاحظت أننا احتجنا str() لنطبع رقمًا داخل جملة؟ في الدرس القادم تنسيق النصوص في بايثون ستتعلّم طريقة أجمل وأسهل لدمج الأرقام مع النصوص. إلى ذلك الحين، افتح مترجم بايثون وجرّب كل الأمثلة بأرقام من عندك.