🐍 مقدمة إلى بايثون

🐍 مقدمة إلى بايثون — من الصفر إلى الأساسيات

دليل شامل ومبسط يأخذك خطوة بخطوة في تعلم لغة بايثون، مع أمثلة حقيقية وتمارين عملية وتحديات لاختبار نفسك.

📦 المتغيرات وأنواع البيانات 🔀 الشروط والتفرعات 🔁 الحلقات ⚙️ الدوال 📋 القوائم والقواميس ⚠️ معالجة الأخطاء

١. لماذا بايثون؟ وكيف تبدأ؟

بايثون لغة برمجة مفتوحة المصدر، كودها يشبه اللغة الإنجليزية العادية مما يجعلها الأسهل للمبتدئين. في نفس الوقت تستخدمها كبرى الشركات كـ Google وNetflix وNASA.

ما الذي تستطيع بناءه ببايثون؟مواقع ويب، تطبيقات ذكاء اصطناعي، أدوات تحليل بيانات، ألعاب، سكريبتات أتمتة، روبوتات تيليغرام، وأكثر بكثير.

تثبيت بايثون

اذهب إلى python.org/downloads وحمّل أحدث نسخة. خلال التثبيت تأكد من تحديد خيار "Add Python to PATH" ثم تحقق:

Shell
# في Terminal أو CMD
python --version
# يجب أن تظهر: Python 3.x.x

أول برنامج لك

Python — hello.py
print("مرحباً بالعالم! 🌍")
print("أنا أتعلم بايثون الآن 🐍")

شغّله: python hello.py — إذا ظهرت الرسالة تهانينا! 🎉

نصيحة: لا تحفظ الكود! افهمه وغيّر فيه وجرب — هذا أفضل طريقة للتعلم الحقيقي.

٢. المتغيرات وأنواع البيانات

المتغير هو صندوق تحفظ فيه بياناتك. في بايثون لا تحتاج لتحديد النوع — بايثون يعرفه تلقائياً.

Python — أنواع البيانات
# نص (str)
name  = "خليل"
city  = "مراكش"

# رقم صحيح (int)
age   = 14
year  = 2025

# رقم عشري (float)
grade  = 17.5
height = 1.75

# قيمة منطقية (bool)
is_student = True
is_tired   = False

# طباعة مع f-string
print(f"مرحباً {name}، عمرك {age} من {city}")
print(type(age))   # <class 'int'>
print(type(name))  # <class 'str'>

تحويل أنواع البيانات

Python — type conversion
# input() يرجع نصاً دائماً — حوّله لرقم
age   = int(input("أدخل عمرك: "))
price = float(input("أدخل السعر: "))

# رقم إلى نص
msg = "عمري " + str(age) + " سنة"
print(msg)
تنبيه! "عمري " + 14 سيعطي خطأ. يجب: "عمري " + str(14) أو استخدم f-string: f"عمري {age}"

٣. العمليات الحسابية والمقارنة

العمليةالرمزمثالالنتيجة
جمع+10 + 313
طرح-10 - 37
ضرب*10 * 330
قسمة/10 / 33.333
قسمة صحيحة//10 // 33
باقي القسمة%10 % 31
قوة / أس**2 ** 8256
Python — أمثلة
# هل العدد زوجي؟
n = 14
print(n % 2 == 0)   # True

# اختصارات
score = 10
score += 5   # 15
score *= 2   # 30
print(score)

# تقريب رقم عشري
avg = 17.666
print(round(avg, 2))    # 17.67
print(f"{avg:.1f}")    # 17.7

٤. الشروط (if / elif / else)

الشروط تجعل برنامجك يتخذ قرارات بناءً على البيانات.

Python — الشروط
age = int(input("أدخل عمرك: "))

if age >= 18:
    print("أنت بالغ ✅")
elif age >= 13:
    print("أنت مراهق 🧑")
else:
    print("أنت طفل 🧒")

# مثال and / or
user = input("المستخدم: ")
pwd  = input("كلمة المرور: ")

if user == "admin" and pwd == "1234":
    print("مرحباً في لوحة التحكم 🎛️")
else:
    print("بيانات خاطئة ❌")
الرمزالمعنىمثال → نتيجة
==يساوي5 == 5 → True
!=لا يساوي5 != 3 → True
>=أكبر أو يساوي5 >= 5 → True
andكلاهما صحيحTrue and True → True
orأحدهما صحيحTrue or False → True
notنفيnot True → False

🏆 تحدي — نظام تقديرات المدرسة

اكتب برنامجاً يطلب الدرجة (0-20) ثم يطبع: 18+ ممتاز، 15+ جيد جداً، 12+ جيد، 10+ مقبول، أقل راسب.

Python — الحل
grade = float(input("أدخل درجتك: "))
if   grade >= 18: print("ممتاز 🌟")
elif grade >= 15: print("جيد جداً 👍")
elif grade >= 12: print("جيد 😊")
elif grade >= 10: print("مقبول 😐")
else:              print("راسب ❌")

٥. الحلقات (Loops)

الحلقات تكرر الكود دون أن تكتبه مرات كثيرة. نوعان: for لعدد معروف، وwhile لشرط معين.

حلقة for

Python — for
# 1 إلى 5
for i in range(1, 6):
    print(f"رقم: {i}")   # 1 2 3 4 5

# range(start, stop, step)
for i in range(0, 20, 5):
    print(i)      # 0 5 10 15

# المرور على قائمة
fruits = ["تفاح", "موز", "برتقال"]
for f in fruits:
    print(f"🍎 {f}")

# مع رقم الترتيب
for i, f in enumerate(fruits, 1):
    print(f"{i}. {f}")

حلقة while

Python — while
# لعبة تخمين بسيطة
import random
secret   = random.randint(1, 10)
attempts = 0

while True:
    guess = int(input("خمن (1-10): "))
    attempts += 1
    if guess < secret:
        print("أكبر! ⬆️")
    elif guess > secret:
        print("أصغر! ⬇️")
    else:
        print(f"🎉 صح! في {attempts} محاولة")
        break
تجنب الحلقة اللانهائية! في while تأكد أن الشرط سيصبح False في نقطة ما. إذا علق البرنامج اضغط Ctrl+C.

٦. الدوال (Functions)

الدالة كتلة كود يمكن استدعاؤها متى أردت. بدل كتابة نفس الكود 10 مرات — اكتبه مرة وادعه.

Python — الدوال
# دالة بسيطة
def greet(name, country="المغرب"):
    print(f"مرحباً {name} من {country} 👋")

greet("خليل")           # المغرب افتراضياً
greet("أحمد", "مصر")

# دالة ترجع قيمة
def average(grades):
    if not grades:
        return 0
    return sum(grades) / len(grades)

my_grades = [18, 15, 19, 16]
print(f"معدلك: {average(my_grades):.1f}")  # 17.0

# دالة تتحقق من صحة كلمة مرور
def is_valid_password(pwd):
    if len(pwd) < 8:
        return False, "قصيرة جداً (أقل من 8 أحرف)"
    if pwd.isalpha():
        return False, "يجب أن تحتوي على أرقام"
    return True, "كلمة مرور قوية ✅"

ok, msg = is_valid_password("abc123def")
print(msg)

٧. القوائم (Lists)

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

Python — القوائم
students = ["خليل", "أحمد", "فاطمة", "سارة"]

# الوصول — يبدأ من 0
print(students[0])     # خليل
print(students[-1])    # سارة (الأخير)
print(students[1:3])   # ['أحمد', 'فاطمة']

# تعديل القائمة
students.append("يوسف")      # إضافة في النهاية
students.insert(1, "منى")     # إضافة في موقع محدد
students.remove("أحمد")      # حذف بالقيمة
removed = students.pop(0)    # حذف بالموقع + إرجاع القيمة

# معلومات عن القائمة
print(len(students))           # عدد العناصر
print("فاطمة" in students)    # True/False
print(sorted(students))        # ترتيب أبجدي

# List Comprehension — احترافي ومختصر
squares = [x**2 for x in range(1,6)]
print(squares)   # [1, 4, 9, 16, 25]

evens = [x for x in range(20) if x % 2 == 0]
print(evens)    # [0, 2, 4, 6, 8, ...]

٨. القواميس (Dictionaries)

القاموس يخزن بيانات كزوج مفتاح-قيمة. مثل بطاقة هوية: "name" → "خليل".

Python — القواميس
student = {
    "name":   "خليل",
    "age":    14,
    "city":   "مراكش",
    "grades": [18, 16, 19]
}

# قراءة
print(student["name"])           # خليل
print(student.get("phone", "غير محدد"))  # get آمن

# إضافة وتعديل
student["email"] = "k@example.com"
student["age"]   = 15

# المرور على القاموس
for key, val in student.items():
    print(f"{key}: {val}")

# قاموس داخل قائمة — شيء شائع جداً
class_list = [
    {"name": "خليل", "grade": 18},
    {"name": "أحمد",  "grade": 15},
    {"name": "سارة",  "grade": 19}
]
for s in class_list:
    print(f"{s['name']}: {s['grade']}/20")

٩. معالجة الأخطاء (Try / Except)

الأخطاء طبيعية. بدل أن يتوقف برنامجك، "امسك" الخطأ وتعامل معه بأمان.

Python — Try/Except
try:
    num    = int(input("أدخل رقماً: "))
    result = 100 / num
    print(f"النتيجة: {result}")

except ZeroDivisionError:
    print("خطأ: لا يمكن القسمة على صفر!")

except ValueError:
    print("خطأ: يرجى إدخال رقم صحيح!")

except Exception as e:
    print(f"خطأ غير متوقع: {e}")

finally:
    print("انتهى البرنامج — دائماً يُنفَّذ.")
قاعدة مهمة: استخدم try/except مع كل input() أو عمليات الملفات. المستخدم قد يكتب أي شيء!

🚀 المشروع النهائي — نظام قائمة المهام

طبّق كل ما تعلمته في مشروع حقيقي: برنامج كامل لإدارة مهامك اليومية يعمل في Terminal.

Python — todo_app.py
# ============================
# 📋 تطبيق قائمة المهام
# ============================

tasks = []

def show_menu():
    print("\n" + "="*30)
    print("   📋 قائمة المهام")
    print("="*30)
    print("1️⃣  عرض المهام")
    print("2️⃣  إضافة مهمة")
    print("3️⃣  حذف مهمة")
    print("4️⃣  تفريغ الكل")
    print("0️⃣  خروج")

def show_tasks():
    if not tasks:
        print("  📭 لا توجد مهام بعد!")
        return
    print(f"\n  لديك {len(tasks)} مهام:")
    for i, task in enumerate(tasks, 1):
        print(f"  {i}. ☐ {task}")

def add_task():
    task = input("  اكتب المهمة: ").strip()
    if task:
        tasks.append(task)
        print(f"  ✅ أُضيفت: {task}")
    else:
        print("  ⚠️ لا يمكن إضافة مهمة فارغة")

def delete_task():
    show_tasks()
    if not tasks: return
    try:
        n = int(input("  رقم المهمة للحذف: "))
        print(f"  🗑️ حُذفت: {tasks.pop(n - 1)}")
    except (ValueError, IndexError):
        print("  ❌ رقم غير صالح")

# الحلقة الرئيسية
print("مرحباً في تطبيق المهام! 🎯")
while True:
    show_menu()
    choice = input("اختر: ").strip()
    if   choice == "1": show_tasks()
    elif choice == "2": add_task()
    elif choice == "3": delete_task()
    elif choice == "4": tasks.clear(); print("  🧹 تم تفريغ القائمة")
    elif choice == "0": print("إلى اللقاء! 👋"); break
    else:              print("  ❓ اختيار غير معروف")
كيف تشغله؟ احفظه كـ todo_app.py وشغّله بـ python todo_app.py. هذا تطبيق كامل يعمل فعلاً!

🎉 أنهيت درس الأساسيات!

أتقنت المتغيرات، الشروط، الحلقات، الدوال، القوائم، القواميس، ومعالجة الأخطاء.

الدرس التالي: برمجة الكائنات (OOP) — ستنظم كودك كالمحترفين.

الدرس التالي: برمجة الكائنات ←