العمليات الحسابية في بايثون (Arithmetic Operations)
العمليات الحسابية (Arithmetic Operations) هي الأساس الذي تُبنى عليه معظم البرامج. من أبسط حاسبة إلى أعقد نظام ذكاء اصطناعي، كلها تعتمد على العمليات الحسابية الأساسية. بايثون توفر مجموعة كاملة من المعاملات الحسابية (Arithmetic Operators) التي تسمح لك بإجراء جميع أنواع الحسابات الرياضية: الجمع، الطرح، الضرب، القسمة، الأس، وغيرها. في هذا الدرس الشامل، سنتعلم كل معامل حسابي بالتفصيل، مع أمثلة عملية من الحياة اليومية، وسنفهم ترتيب الأولويات (Order of Operations) الذي يحدد كيف تُنفذ العمليات المعقدة.
1. المعاملات الحسابية الأساسية
بايثون توفر سبعة معاملات حسابية أساسية. دعنا نتعرف على كل واحد منها:
| المعامل | الاسم | الوصف | مثال | النتيجة |
|---|---|---|---|---|
+ |
الجمع (Addition) | يجمع رقمين | 10 + 3 |
13 |
- |
الطرح (Subtraction) | يطرح رقم من آخر | 10 - 3 |
7 |
* |
الضرب (Multiplication) | يضرب رقمين | 10 * 3 |
30 |
/ |
القسمة (Division) | يقسم رقم على آخر (نتيجة عشرية) | 10 / 3 |
3.333... |
// |
القسمة الصحيحة (Floor Division) | يقسم ويُرجع الجزء الصحيح فقط | 10 // 3 |
3 |
% |
باقي القسمة (Modulo) | يُرجع باقي القسمة | 10 % 3 |
1 |
** |
الأس (Exponentiation) | يرفع رقم لقوة معينة | 10 ** 3 |
1000 |
2. الجمع (+) والطرح (-)
الجمع والطرح هما أبسط العمليات الحسابية وأكثرها استخداماً:
# الجمع
a = 15
b = 7
sum_result = a + b
print(f"{a} + {b} = {sum_result}")
# الطرح
difference = a - b
print(f"{a} - {b} = {difference}")
# أمثلة عملية من الحياة اليومية
# مثال 1: حساب المجموع الكلي
item1_price = 50
item2_price = 30
item3_price = 20
total = item1_price + item2_price + item3_price
print(f"\nالمجموع الكلي: {total} دولار")
# مثال 2: حساب الباقي من المال
wallet = 100
spent = 35
remaining = wallet - spent
print(f"المتبقي في المحفظة: {remaining} دولار")
# مثال 3: حساب الربح
revenue = 5000 # الإيرادات
expenses = 3200 # المصروفات
profit = revenue - expenses
print(f"\nالربح: {profit} دولار")
# الجمع والطرح مع أرقام عشرية
price = 99.99
discount = 15.50
final_price = price - discount
print(f"\nالسعر بعد الخصم: {final_price:.2f} دولار")
# الجمع والطرح مع أرقام سالبة
temperature = -5
increase = 10
new_temperature = temperature + increase
print(f"\nالحرارة الجديدة: {new_temperature}°C")
3. الضرب (*) والقسمة (/)
الضرب والقسمة عمليتان أساسيتان في الحسابات المعقدة:
# الضرب
x = 12
y = 5
product = x * y
print(f"{x} × {y} = {product}")
# القسمة (تعطي دائماً float)
quotient = x / y
print(f"{x} ÷ {y} = {quotient}")
# ملاحظة مهمة: القسمة تعطي دائماً float حتى لو كانت النتيجة صحيحة
result1 = 10 / 2
print(f"\n10 ÷ 2 = {result1} (النوع: {type(result1).__name__})")
# أمثلة عملية
# مثال 1: حساب السعر الإجمالي
unit_price = 25
quantity = 8
total_price = unit_price * quantity
print(f"\nسعر {quantity} وحدات: {total_price} دولار")
# مثال 2: حساب المعدل
total_score = 450
num_subjects = 5
average = total_score / num_subjects
print(f"المعدل: {average}")
# مثال 3: تحويل العملات
amount_usd = 100
exchange_rate = 3.75 # سعر الصرف
amount_sar = amount_usd * exchange_rate
print(f"\n{amount_usd} دولار = {amount_sar} ريال")
# مثال 4: تقسيم الفاتورة
bill = 150
people = 3
per_person = bill / people
print(f"نصيب كل شخص: {per_person:.2f} دولار")
# الضرب لتكرار النصوص (ميزة خاصة في بايثون)
separator = "=" * 40
print(f"\n{separator}")
print("عنوان".center(40))
print(separator)
4. القسمة الصحيحة (//) وباقي القسمة (%)
هاتان العمليتان مفيدتان جداً في حالات خاصة:
# القسمة الصحيحة (Floor Division)
# تُرجع الجزء الصحيح من القسمة فقط (تحذف الكسر العشري)
a = 17
b = 5
normal_division = a / b
floor_division = a // b
print(f"القسمة العادية: {a} / {b} = {normal_division}")
print(f"القسمة الصحيحة: {a} // {b} = {floor_division}")
# باقي القسمة (Modulo)
# يُرجع الباقي بعد القسمة
remainder = a % b
print(f"\nباقي القسمة: {a} % {b} = {remainder}")
# التحقق من العلاقة: a = (a // b) * b + (a % b)
verification = (a // b) * b + (a % b)
print(f"التحقق: ({a} // {b}) × {b} + ({a} % {b}) = {verification}")
# أمثلة عملية
# مثال 1: تحويل الدقائق إلى ساعات ودقائق
total_minutes = 135
hours = total_minutes // 60
minutes = total_minutes % 60
print(f"\n{total_minutes} دقيقة = {hours} ساعة و {minutes} دقيقة")
# مثال 2: تحويل الثواني إلى ساعات ودقائق وثواني
total_seconds = 3665
hours = total_seconds // 3600
remaining = total_seconds % 3600
minutes = remaining // 60
seconds = remaining % 60
print(f"{total_seconds} ثانية = {hours}:{minutes:02d}:{seconds:02d}")
# مثال 3: التحقق من الأعداد الزوجية والفردية
numbers = [10, 15, 22, 37, 44, 51]
print("\nالتحقق من الأعداد:")
for num in numbers:
if num % 2 == 0:
print(f"{num} عدد زوجي")
else:
print(f"{num} عدد فردي")
# مثال 4: توزيع الحلوى بالتساوي
candies = 23
children = 5
per_child = candies // children
leftover = candies % children
print(f"\n{candies} حلوى ÷ {children} أطفال:")
print(f" كل طفل يحصل على: {per_child} حلوى")
print(f" المتبقي: {leftover} حلوى")
5. الأس أو الرفع لقوة (**)
معامل الأس ** يرفع رقماً لقوة معينة (مثل 2³ أو 5²):
# الأس (Exponentiation)
base = 2
exponent = 3
result = base ** exponent
print(f"{base}^{exponent} = {result}")
# أمثلة متنوعة
print(f"\n5² = {5 ** 2}")
print(f"10³ = {10 ** 3}")
print(f"2⁸ = {2 ** 8}")
# الجذر التربيعي (باستخدام الأس 0.5)
number = 16
square_root = number ** 0.5
print(f"\n√{number} = {square_root}")
# الجذر التكعيبي (باستخدام الأس 1/3)
number = 27
cube_root = number ** (1/3)
print(f"∛{number} = {cube_root:.2f}")
# أمثلة عملية
# مثال 1: حساب مساحة المربع
side = 5
area = side ** 2
print(f"\nمساحة مربع طول ضلعه {side} = {area}")
# مثال 2: حساب حجم المكعب
edge = 3
volume = edge ** 3
print(f"حجم مكعب طول حرفه {edge} = {volume}")
# مثال 3: الفائدة المركبة
principal = 1000 # المبلغ الأساسي
rate = 0.05 # معدل الفائدة (5%)
years = 10 # عدد السنوات
# الصيغة: A = P(1 + r)^t
amount = principal * (1 + rate) ** years
print(f"\nالمبلغ بعد {years} سنوات: {amount:.2f} دولار")
# مثال 4: النمو السكاني
initial_population = 1000000
growth_rate = 0.02 # 2% سنوياً
years = 5
future_population = initial_population * (1 + growth_rate) ** years
print(f"عدد السكان بعد {years} سنوات: {future_population:,.0f}")
# الأس السالب (للكسور)
print(f"\n2⁻³ = {2 ** -3}")
print(f"10⁻² = {10 ** -2}")
6. ترتيب الأولويات (Order of Operations)
عندما يكون لديك تعبير رياضي معقد يحتوي على عدة عمليات، بايثون تتبع ترتيب الأولويات المعروف بـ PEMDAS:
- Parentheses - الأقواس
() - Exponentiation - الأس
** - Multiplication / Division - الضرب والقسمة
* / // %(من اليسار لليمين) - Addition / Subtraction - الجمع والطرح
+ -(من اليسار لليمين)
# ترتيب الأولويات
# مثال 1: بدون أقواس
result1 = 2 + 3 * 4
print(f"2 + 3 × 4 = {result1}") # الضرب أولاً: 2 + 12 = 14
# مثال 2: مع أقواس
result2 = (2 + 3) * 4
print(f"(2 + 3) × 4 = {result2}") # الأقواس أولاً: 5 × 4 = 20
# مثال 3: عملية معقدة
result3 = 10 + 5 * 2 - 3 / 3
print(f"\n10 + 5 × 2 - 3 ÷ 3 = {result3}")
# الترتيب: 10 + 10 - 1.0 = 19.0
# مثال 4: مع الأس
result4 = 2 + 3 ** 2 * 4
print(f"2 + 3² × 4 = {result4}")
# الترتيب: 2 + 9 × 4 = 2 + 36 = 38
# مثال 5: أقواس متداخلة
result5 = ((10 + 5) * 2 - 3) ** 2
print(f"((10 + 5) × 2 - 3)² = {result5}")
# الترتيب: ((15) × 2 - 3)² = (30 - 3)² = 27² = 729
# أمثلة عملية
# مثال: حساب السعر النهائي مع ضريبة وخصم
price = 100
discount_rate = 0.10 # 10%
tax_rate = 0.15 # 15%
# ❌ طريقة خاطئة (بدون أقواس)
wrong = price - price * discount_rate + price * tax_rate
print(f"\n❌ خطأ: {wrong}")
# ✅ طريقة صحيحة (مع أقواس)
correct = (price - price * discount_rate) * (1 + tax_rate)
print(f"✅ صحيح: {correct}")
# أو بطريقة أوضح
price_after_discount = price * (1 - discount_rate)
final_price = price_after_discount * (1 + tax_rate)
print(f"السعر النهائي: {final_price}")
# مثال: حساب المعدل مع أوزان مختلفة
exam1 = 85
exam2 = 90
final_exam = 95
# المعدل: 30% امتحان أول + 30% امتحان ثاني + 40% امتحان نهائي
weighted_average = exam1 * 0.3 + exam2 * 0.3 + final_exam * 0.4
print(f"\nالمعدل الموزون: {weighted_average}")
7. مثال شامل: حاسبة متقدمة
لنجمع كل ما تعلمناه في برنامج حاسبة شامل:
"""
حاسبة متقدمة - توضح جميع العمليات الحسابية
"""
print("=" * 60)
print("الحاسبة المتقدمة".center(60))
print("=" * 60)
# إدخال الأرقام
num1 = float(input("\nأدخل الرقم الأول: "))
num2 = float(input("أدخل الرقم الثاني: "))
print("\n" + "=" * 60)
print("النتائج".center(60))
print("=" * 60)
# جميع العمليات الحسابية
print(f"\nالجمع: {num1} + {num2} = {num1 + num2}")
print(f"الطرح: {num1} - {num2} = {num1 - num2}")
print(f"الضرب: {num1} × {num2} = {num1 * num2}")
# التحقق من القسمة على صفر
if num2 != 0:
print(f"القسمة: {num1} ÷ {num2} = {num1 / num2:.4f}")
print(f"القسمة الصحيحة: {num1} // {num2} = {num1 // num2}")
print(f"باقي القسمة: {num1} % {num2} = {num1 % num2}")
else:
print("القسمة: لا يمكن القسمة على صفر!")
print(f"الأس: {num1}^{num2} = {num1 ** num2}")
# عمليات إضافية
print("\n" + "-" * 60)
print("عمليات إضافية".center(60))
print("-" * 60)
print(f"\nالقيمة المطلقة لـ {num1}: {abs(num1)}")
print(f"الجذر التربيعي لـ {abs(num1)}: {abs(num1) ** 0.5:.4f}")
print(f"مربع {num1}: {num1 ** 2}")
print(f"مكعب {num1}: {num1 ** 3}")
# المقارنة
print(f"\nأكبر رقم: {max(num1, num2)}")
print(f"أصغر رقم: {min(num1, num2)}")
# معادلة معقدة
complex_result = (num1 + num2) * 2 - (num1 - num2) ** 2
print(f"\nمعادلة معقدة: (({num1} + {num2}) × 2) - (({num1} - {num2})²)")
print(f"النتيجة: {complex_result}")
print("\n" + "=" * 60)
💡 نصائح مهمة
- القسمة
/تعطي دائماًfloatحتى لو كانت النتيجة صحيحة - استخدم
//للقسمة الصحيحة و%لباقي القسمة - معامل الأس
**له أولوية أعلى من الضرب والقسمة - استخدم الأقواس
()لتوضيح الترتيب وتجنب الأخطاء - تحقق دائماً من القسمة على صفر قبل إجراء العملية
- للجذر التربيعي، استخدم
** 0.5أوmath.sqrt()
الخطوة التالية
الآن بعد أن أتقنت العمليات الحسابية، تعلم معاملات المقارنة
الدرس التالي: معاملات المقارنة في Python