الدرس الأول · مستوى مبتدئ

أساسيات لغة Python من الصفر

كل ما تحتاجه لتبدأ: الطباعة، المتغيرات، أنواع البيانات، الإدخال، النصوص، القوائم، القواميس، الشروط، والحلقات (for و while) — مع أمثلة قابلة للتشغيل مباشرة داخل الصفحة، وتمارين بحلولها.

📚 20 قسماً
▶ الأمثلة تعمل داخل المتصفح
✍ 8 تمارين + مشروع صغير

0 ماذا يحتوي هذا الدرس؟

هذه الصفحة مبنية على ملفاتك الثلاثة: ch1_basic.py و Chapter1_1.py و Chapter_3.py، وأُضيف إليها ما ينقص لتكتمل أساسيات البداية.

📁 موجود في ملفاتك

  • التعليقات والمسافات البادئة
  • العمليات الحسابية الأربع
  • str و int و bool، وتسمية المتغيرات
  • القوائم: الفهرسة والتقطيع و append و pop
  • len و max و min
  • القواميس
  • input و f-string وحاسبة الجمع
  • if / else والعامل in
  • حلقة for مع range و enumerate و items()

✨ أُضيف في هذه الصفحة

  • تثبيت بايثون وتشغيل الملفات
  • العمليات // و % و **، وأولوية العمليات
  • النوع float والدالة type() والتحويل بين الأنواع
  • دوال النصوص والفهرسة السالبة
  • insert و remove و sort و sum
  • Tuple و Set
  • عمليات المقارنة و and / or / not
  • elif
  • حلقة while و break و continue
  • الحلقات المتداخلة ونمط التجميع
  • الأخطاء الشائعة و try / except
  • مشروع صغير + تمارين + ملخص سريع
🐞 خطأ وجدناه في Chapter_3.py

في حلقة enumerate كُتب names[0] = name + "'s car"، والصحيح names[x] = .... النسخة الحالية تكتب دائماً في العنصر الأول، فتكون النتيجة ["Hassan's car", 'Sarah', 'John', 'Hassan']. الشرح الكامل في قسم for.

🧃 شرح مبسّط بأمثلة من الحياة

البنود من 7 إلى 13 (النصوص، القوائم، Tuple و Set، القواميس، المقارنة، الشروط، حلقة for) مشروحة بتفصيل أكبر وبأمثلة من الحياة اليومية في صفحة مستقلة: افتح الشرح المبسّط ←

▶ كيف تستخدم هذه الصفحة؟

اضغط زر Run فوق أي مثال لتشغيله فعلياً (أول تشغيل يحمّل بايثون في المتصفح، ويحتاج اتصالاً بالإنترنت وبضع ثوانٍ). عند وجود input() ستظهر لك نافذة لتكتب القيمة. وبعد إنهاء كل قسم اضغط «أنهيت هذا القسم» ليُحسب تقدمك.

1 التثبيت وأول برنامج إضافة جديدة

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

خطوات التجهيز

  1. حمّل بايثون من python.org، وعند التثبيت فعّل خيار Add Python to PATH.
  2. ثبّت محرراً مثل PyCharm أو VS Code.
  3. أنشئ ملفاً امتداده .py مثل hello.py.
  4. شغّله بزر التشغيل في المحرر، أو من الطرفية بالأمر python hello.py.

أول برنامج: Hello World

الدالة print() تطبع ما بداخل الأقواس على الشاشة. النص يوضع دائماً بين علامتي تنصيص " " أو ' '.

print("Hello World")
print('مرحباً بالعالم')
print(2026)
Hello World
مرحباً بالعالم
2026

خيارات إضافية في print

print("A", "B", "C")            # الفاصلة تضع مسافة بين القيم
print("A", "B", "C", sep="-")   # sep يغيّر الفاصل
print("السطر الأول", end=" | ")  # end يغيّر نهاية السطر (الافتراضي سطر جديد)
print("على نفس السطر")
print("سطر\nسطر جديد")          # \n = سطر جديد
A B C
A-B-C
السطر الأول | على نفس السطر
سطر
سطر جديد

2 التعليقات والمسافات البادئة من ملفاتك

التعليقات Comments

كل ما يأتي بعد الرمز # لا يُنفّذ؛ نستخدمه لشرح الكود لأنفسنا ولغيرنا. ولتعليق عدة أسطر دفعة واحدة: حدّدها ثم اضغط Ctrl + /.

# هذا تعليق ولن يُنفّذ
print("Hello")   # تعليق بجانب الكود

"""
نص متعدد الأسطر بين ثلاث علامات تنصيص،
ويُستخدم أحياناً كتعليق طويل
"""
# print("هذا السطر معطّل")
Hello

المسافات البادئة Indentation

في بايثون المسافات في بداية السطر جزء من اللغة، وليست للتنسيق فقط. تُستخدم لتحديد الكود التابع لشرط أو حلقة (عادةً 4 مسافات أو زر Tab).

if 5 > 2:
    print("خمسة أكبر من اثنين")   # تابع للشرط (4 مسافات)
print("هذا السطر خارج الشرط")
خمسة أكبر من اثنين
هذا السطر خارج الشرط

أما وضع مسافة في غير مكانها فيسبب خطأ:

print("Hello World")
    print("Hello World")
IndentationError: unexpected indent

3 العمليات الحسابية من ملفاتك + إضافات

العمليةالرمزمثالالناتج
جمع+4 + 59
طرح-10 - 55
ضرب*3 * 26
قسمة (الناتج دائماً عشري)/12 / 52.4
قسمة صحيحة (بدون كسور) ✨//12 // 52
باقي القسمة ✨%12 % 52
الأُس (القوة) ✨**2 ** 38
print("4 + 5 =", 4 + 5)
print("10 - 5 =", 10 - 5)
print("3 x 2 =", 3 * 2)
print("12 / 5 =", 12 / 5)
print("12 // 5 =", 12 // 5)
print("12 % 5 =", 12 % 5)
print("2 ** 3 =", 2 ** 3)
print(10 / 2)    # حتى لو كانت القسمة بلا باقٍ، الناتج float
4 + 5 = 9
10 - 5 = 5
3 x 2 = 6
12 / 5 = 2.4
12 // 5 = 2
12 % 5 = 2
2 ** 3 = 8
5.0
💡 فائدة الباقي %

لمعرفة إن كان الرقم زوجياً: n % 2 == 0. سنستخدمها كثيراً في الحلقات.

أولوية العمليات

مثل الرياضيات: الأقواس أولاً، ثم الأُس، ثم الضرب والقسمة، ثم الجمع والطرح.

print(2 + 3 * 4)     # الضرب أولاً
print((2 + 3) * 4)   # الأقواس أولاً
print(2 ** 2 * 3)    # الأس ثم الضرب
14
20
12

اختصارات التعديل على متغير

x = 10
x += 5    # نفس x = x + 5
print(x)
x -= 3    # x = x - 3
x *= 2    # x = x * 2
print(x)
15
24

4 المتغيرات وأنواع البيانات من ملفاتك

المتغير «صندوق» له اسم نخزّن فيه قيمة: variable = value. علامة = هنا تعني «خزّن»، وليست «يساوي».

str

نص String

أي نص بين علامات تنصيص: "Ahmad"

int

عدد صحيح Integer

بدون فاصلة عشرية: 30 ، -7

float

عدد عشري Float ✨

فيه فاصلة: 1.75 ، 1025.0

bool

منطقي Boolean

قيمتان فقط: True أو False

name = "Ahmad"      # str
age = 30            # int
height = 1.75       # float
is_male = True      # bool

# الدالة type() تخبرك بنوع أي قيمة
print(type(name))
print(type(age))
print(type(height))
print(type(is_male))
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>

مثال: بيانات هاتف

name_mobile = "Samsung"
is_launched = True
price = 499
print(name_mobile, is_launched, price)

price = 450        # يمكن تغيير قيمة المتغير في أي وقت
print("السعر الجديد:", price)
Samsung True 499
السعر الجديد: 450

تسمية المتغيرات

myvariablename = "Ahmad"     # يعمل لكنه صعب القراءة
myVariableName = "Ahmad"     # camelCase
my_variable_name = "Ahmad"   # snake_case ← المعتمد في بايثون ✔

Name = "A"
name = "B"                   # متغيران مختلفان! بايثون تفرّق بين الحروف الكبيرة والصغيرة
print(Name, name)
A B
⚠ قواعد إلزامية للأسماء

✘ لا يبدأ الاسم برقم: 2name   ✘ لا مسافات ولا شرطة: my name ، my-name   ✘ لا كلمات محجوزة: if ، for ، class ، True

✔ اختر أسماء تصف المحتوى: student_age أفضل من x.

5 التحويل بين الأنواع إضافة جديدة

أحياناً نحتاج أن نحوّل نصاً إلى رقم أو العكس، باستخدام int() و float() و str().

x = "10"
print(x + x)              # نصّان: دمج وليس جمعاً
print(int(x) + int(x))    # رقمان: جمع
print(float("3.5") * 2)
print(str(25) + " سنة")   # رقم ← نص لكي ندمجه مع نص
print(int(7.9))           # يحذف الكسر ولا يقرّب
print(round(7.9))         # للتقريب استخدم round
1010
20
7.0
25 سنة
7
8
📌 لماذا هذا مهم؟

لأن input() تُرجع نصاً دائماً، حتى لو كتب المستخدم رقماً — لذلك نستخدم int(input(...)) في القسم التالي.

6 الإدخال من المستخدم و f-string من ملفاتك

input("رسالة") تعرض رسالة وتنتظر المستخدم ليكتب شيئاً، ثم تُرجع ما كتبه كنص.

name = input("Enter your name: ")
print("Your name is", name)
Enter your name: Sara
Your name is Sara

حاسبة الجمع

# برنامج يجمع رقمين يدخلهما المستخدم
value_1 = input("Enter the first Number: ")
value_2 = input("Enter the second Number: ")

answer = int(value_1) + int(value_2)   # بدون int ستكون النتيجة دمج نصوص!
print("The Answer is:", answer)
Enter the first Number: 7
Enter the second Number: 8
The Answer is: 15

ثلاث طرق لدمج المتغيرات مع النص

name = "Ahmad"
age = 25

print("اسمي", name, "وعمري", age)                   # 1) بالفاصلة
print("اسمي " + name + " وعمري " + str(age))        # 2) بالدمج + (لازم str للرقم)
print(f"اسمي {name} وعمري بعد 5 سنوات {age + 5}")   # 3) f-string ← الأسهل ✔

price = 499.5
print(f"السعر: {price:.2f} دينار")    # :.2f = رقمان بعد الفاصلة
اسمي Ahmad وعمري 25
اسمي Ahmad وعمري 25
اسمي Ahmad وعمري بعد 5 سنوات 30
السعر: 499.50 دينار

من ملفك Chapter1_1.py

name = input("أدخل اسمك: ")
age = int(input("أدخل عمرك: "))

print(f"مرحباً {name}! عمرك بعد 5 سنوات سيكون {age + 5} سنة.")
أدخل اسمك: أحمد
أدخل عمرك: 20
مرحباً أحمد! عمرك بعد 5 سنوات سيكون 25 سنة.
💡 f-string

ضع الحرف f قبل علامة التنصيص، وأي شيء داخل { } يُحسب ويوضع مكانه — حتى العمليات الحسابية.

7 التعامل مع النصوص إضافة جديدة

النص عبارة عن سلسلة من الحروف، ولكل حرف رقم (index) يبدأ من 0، ومن النهاية بالسالب يبدأ من -1.

P0 · -6
y1 · -5
t2 · -4
h3 · -3
o4 · -2
n5 · -1
word = "Python"
print(word[0])       # أول حرف
print(word[-1])      # آخر حرف
print(word[0:3])     # من 0 إلى 3 (بدون 3)
print(word[2:])      # من 2 إلى النهاية
print(len(word))     # عدد الحروف
print("th" in word)  # هل النص موجود داخله؟
P
n
Pyt
thon
6
True

دوال مفيدة للنصوص

text = "  Hello Python  "
print(text.strip())                     # حذف المسافات من الطرفين
print(text.upper())                     # أحرف كبيرة
print(text.lower())                     # أحرف صغيرة
print(text.replace("Python", "World"))  # استبدال
print("a,b,c".split(","))               # تقسيم إلى قائمة
print("Ha" * 3)                         # تكرار النص
Hello Python
  HELLO PYTHON
  hello python
  Hello World
['a', 'b', 'c']
HaHaHa
📌 ملاحظة

دوال النصوص لا تغيّر النص الأصلي، بل تُرجع نصاً جديداً. لحفظ النتيجة: text = text.lower() — تماماً كما في مثال المخزن في ملفك.

8 القوائم Lists من ملفاتك + إضافات

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

'Apple'0
'Banana'1
'Cherry'2
'Lemon'3
'Mango'4
my_mobile = ["Samsung", True, 499]      # أنواع مختلفة في قائمة واحدة
my_fruits = ['Apple', 'Banana', 'Cherry', 'Lemon', 'Mango']

print(my_fruits[0])      # العنصر الأول
print(my_fruits[-1])     # العنصر الأخير
print(my_fruits[0:3])    # تقطيع: من 0 إلى 3 (بدون 3)
print(my_fruits[2:])     # من 2 إلى النهاية
Apple
Mango
['Apple', 'Banana', 'Cherry']
['Cherry', 'Lemon', 'Mango']

تعديل القائمة

الدالةماذا تفعل؟
append(x)تضيف عنصراً في النهاية
insert(i, x) ✨تضيف عنصراً في مكان محدد
remove(x) ✨تحذف عنصراً بقيمته
pop(i)تحذف عنصراً برقمه وتُرجعه (بدون رقم: الأخير)
list[i] = xتستبدل عنصراً
sort() ✨ترتّب القائمة
my_fruits = ['Apple', 'Banana', 'Cherry', 'Lemon', 'Mango']
my_fruits.append("Orange")
my_fruits.insert(1, "Kiwi")
my_fruits.remove("Lemon")
removed = my_fruits.pop(0)
my_fruits[0] = "Grape"

print("حُذف:", removed)
print(my_fruits)
حُذف: Apple
['Grape', 'Banana', 'Cherry', 'Mango', 'Orange']

دوال على القوائم الرقمية

age_list = [52, 18, 30, 24, 32]
print(len(age_list))                         # عدد العناصر
print("Oldest person is of age", max(age_list))
print("Youngest person is of age", min(age_list))
print(sum(age_list))                         # المجموع ✨
age_list.sort()                              # ترتيب ✨
print(age_list)
print(30 in age_list)                        # هل 30 موجود؟
5
Oldest person is of age 52
Youngest person is of age 18
156
[18, 24, 30, 32, 52]
True

9 Tuple و Set إضافة جديدة

النوعالشكلمرتّب؟قابل للتعديل؟يسمح بالتكرار؟
List قائمة[1, 2, 3]✔✔✔
Tuple صف(1, 2, 3)✔✘✔
Set مجموعة{1, 2, 3}✘✔ (إضافة/حذف)✘
Dict قاموس{"a": 1}✔✔المفاتيح ✘
point = (3, 5)             # tuple: قيم ثابتة لا تتغير (مثل إحداثيات)
print(point[0])
# point[0] = 10  ← خطأ TypeError: لا يمكن التعديل

colors = {"red", "green", "red", "blue"}   # set: يحذف التكرار تلقائياً
print(len(colors))
colors.add("yellow")
print("red" in colors)

nums = [1, 2, 2, 3, 3, 3]
print(len(set(nums)))      # عدد القيم المختلفة
3
3
True
3

10 القواميس Dictionaries من ملفاتك + إضافات

القاموس يخزن البيانات على شكل أزواج مفتاح : قيمة. بدلاً من أن نتذكر أن العمر في المكان 1 في القائمة، نسأل عنه باسمه.

person_1_list = ["Ahmad", 30, True]      # قائمة: ماذا يعني 30؟ غير واضح
person_1_dic = {"Name": "Ahmad",
                "Age": 30,
                "IsMale": True}          # قاموس: واضح ✔

print(person_1_list[1])
print(person_1_dic["Age"])
30
30

الإضافة والتعديل والحذف

person = {"Name": "Sarah", "Age": 25, "IsMale": False}

person["Age"] = 26              # تعديل
person["City"] = "Amman"        # إضافة مفتاح جديد
del person["IsMale"]            # حذف

print(person)
print(person.get("Phone", "غير موجود"))   # get لا تسبب خطأ إذا لم يوجد المفتاح
print(list(person.keys()))
print(list(person.values()))
print(len(person))
{'Name': 'Sarah', 'Age': 26, 'City': 'Amman'}
غير موجود
['Name', 'Age', 'City']
['Sarah', 26, 'Amman']
3
⚠ انتبه

person["Phone"] لمفتاح غير موجود يسبب خطأ KeyError، أما person.get("Phone") فتُرجع None بهدوء.

11 عمليات المقارنة والمنطق إضافة جديدة

نتيجة أي مقارنة هي True أو False، وهي أساس الشروط والحلقات.

الرمزالمعنىمثال (a=10, b=3)الناتج
==يساويa == 10True
!=لا يساويa != bTrue
>أكبر منa > bTrue
<أصغر منa < bFalse
>=أكبر من أو يساويa >= 10True
<=أصغر من أو يساويb <= 2False
❗ أشهر خطأ للمبتدئين

= للتخزين (x = 5)، و == للمقارنة (x == 5).

العمليات المنطقية and / or / not

العمليةمتى تكون True؟
andإذا كان الطرفان صحيحين
orإذا كان أحد الطرفين على الأقل صحيحاً
notتعكس القيمة
age = 20
has_id = True

print(age >= 18 and has_id)      # يستطيع الدخول؟
print(age < 13 or age > 60)      # طفل أو كبير سن؟
print(not has_id)
print(3 < 2)
True
False
False
False

12 الجمل الشرطية if / elif / else من ملفاتك + elif

الشرط يجعل البرنامج يتخذ قرارات. لاحظ النقطتين : في نهاية السطر والمسافة البادئة للكود التابع.

if 3 < 2:
    print("Yes")
else:
    print("No")
No

عدة احتمالات مع elif ✨

بايثون تفحص الشروط من الأعلى للأسفل، وتنفّذ أول شرط صحيح فقط ثم تتجاهل الباقي.

score = int(input("أدخل علامتك: "))

if score >= 90:
    print("ممتاز 🌟")
elif score >= 75:
    print("جيد جداً")
elif score >= 50:
    print("ناجح")
else:
    print("راسب")
أدخل علامتك: 82
جيد جداً

من ملفك: البحث في المخزن

stock = ["keyboard", "mouse", "headphones", "monitor"]
product_name = input("Enter the product name: ")
product_name = product_name.lower()   # حتى تعمل مع Mouse أو MOUSE

if product_name in stock:
    print("Product is available")
else:
    print("Product is not available")
Enter the product name: Mouse
Product is available

شرط داخل شرط

age = 20
has_ticket = False

if age >= 18:
    if has_ticket:
        print("تفضل بالدخول")
    else:
        print("اشترِ تذكرة أولاً")
else:
    print("العمر غير كافٍ")
اشترِ تذكرة أولاً

13 حلقة for من ملفاتك + إضافات

الحلقة تكرر نفس الكود عدة مرات. for نستخدمها عندما نعرف ماذا سنمرّ عليه: مجموعة أرقام، أو عناصر قائمة، أو حروف نص.

مع range

for x in range(0, 6):
    print(x)
0
1
2
3
4
5
الشكلالمعنىالنتيجة
range(5)من 0 حتى 5 (بدون 5)0 1 2 3 4
range(2, 6)من 2 حتى 6 (بدون 6)2 3 4 5
range(0, 11, 2)بخطوة 20 2 4 6 8 10
range(5, 0, -1)عدّ تنازلي5 4 3 2 1

المرور على قائمة ونص

names = ["Ahmad", "Sarah", "John", "Hassan"]
for name in names:
    print("Hello", name)

for ch in "Python":
    print(ch, end=" ")
Hello Ahmad
Hello Sarah
Hello John
Hello Hassan
P y t h o n 

enumerate: الرقم والعنصر معاً

في ملفك كُتب الكود هكذا — شغّله ولاحظ النتيجة:

# ✘ النسخة التي في Chapter_3.py
names = ["Ahmad", "Sarah", "John", "Hassan"]
for x, name in enumerate(names):
    names[0] = name + "'s car"     # يكتب دائماً في المكان 0
print(names)
["Hassan's car", 'Sarah', 'John', 'Hassan']
# ✔ النسخة الصحيحة
names = ["Ahmad", "Sarah", "John", "Hassan"]
for i, name in enumerate(names):
    names[i] = name + "'s car"     # i يتغير: 0 ثم 1 ثم 2 ثم 3
print(names)
["Ahmad's car", "Sarah's car", "John's car", "Hassan's car"]

المرور على قاموس بـ items()

fruit_stock = {'Orange': 25,
               'Apple': 56,
               'Lemon': 65}

for name, value in fruit_stock.items():
    print(f"We have {value} {name}s in stock")
We have 25 Oranges in stock
We have 56 Apples in stock
We have 65 Lemons in stock

نمط التجميع (العدّاد والمجموع) ✨

نبدأ بمتغير قيمته 0 قبل الحلقة، ونضيف إليه داخلها — من أكثر الأنماط استخداماً.

prices = [12.5, 30, 7.25, 50]
total = 0
count_expensive = 0

for p in prices:
    total += p
    if p > 20:
        count_expensive += 1

print(f"المجموع: {total}")
print(f"عدد المنتجات الغالية: {count_expensive}")
المجموع: 99.75
عدد المنتجات الغالية: 2

14 حلقة while إضافة جديدة

while تكرر الكود طالما الشرط صحيح. نستخدمها عندما لا نعرف مسبقاً عدد مرات التكرار.

count = 1
while count <= 5:
    print("العدد:", count)
    count += 1          # مهم جداً! وإلا ستستمر الحلقة للأبد
print("انتهت الحلقة")
العدد: 1
العدد: 2
العدد: 3
العدد: 4
العدد: 5
انتهت الحلقة
⚠ الحلقة اللانهائية

إذا لم يتغير الشرط أبداً ليصبح False ستعمل الحلقة بلا توقف. لإيقاف برنامج عالق في الطرفية اضغط Ctrl + C.

مثال عملي: كلمة السر

password = ""
while password != "1234":
    password = input("أدخل كلمة السر: ")
print("تم الدخول ✔")
أدخل كلمة السر: 1111
أدخل كلمة السر: 1234
تم الدخول ✔

متى أستخدم for ومتى while؟

for

عندما أعرف ما سأمرّ عليه: «لكل طالب في القائمة»، «كرر 10 مرات».

while

عندما يعتمد التوقف على شرط: «حتى يدخل كلمة السر الصحيحة»، «حتى يخمّن الرقم».

15 break و continue والحلقات المتداخلة إضافة جديدة

break

تُوقف الحلقة كلياً وتخرج منها.

continue

تتخطى الدورة الحالية وتنتقل للدورة التالية.

for n in range(1, 11):
    if n == 7:
        break           # عند 7 نخرج نهائياً
    if n % 2 == 0:
        continue        # نتخطى الأرقام الزوجية
    print(n)
1
3
5

حلقة داخل حلقة: جدول الضرب

الحلقة الداخلية تكتمل بالكامل في كل دورة من الحلقة الخارجية.

for i in range(1, 4):
    for j in range(1, 4):
        print(f"{i} x {j} = {i * j}")
    print("---")
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
---
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
---
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
---
# رسم مثلث بالنجوم
for row in range(1, 6):
    print("*" * row)
*
**
***
****
*****

16 الأخطاء الشائعة و try / except إضافة جديدة

الأخطاء جزء طبيعي من البرمجة. اقرأ آخر سطر في رسالة الخطأ دائماً، فهو يخبرك بنوع الخطأ وسببه.

الخطأالسببمثال يسببه
SyntaxErrorكتابة غير صحيحة: قوس أو : أو علامة تنصيص ناقصةif x > 3
IndentationErrorمسافات بادئة خاطئة    print("hi")
NameErrorمتغير غير معرّف أو خطأ إملائي في الاسمprint(nmae)
TypeErrorعملية بين نوعين غير متوافقين"age: " + 30
ValueErrorقيمة لا يمكن تحويلهاint("abc")
IndexErrorرقم خارج حدود القائمة[1, 2][5]
KeyErrorمفتاح غير موجود في القاموسperson["Phone"]
ZeroDivisionErrorالقسمة على صفر10 / 0
age = 30
print("age: " + age)
TypeError: can only concatenate str (not "int") to str

التعامل مع الأخطاء بـ try / except

بدلاً من أن يتوقف البرنامج عندما يكتب المستخدم حروفاً بدل الأرقام، نلتقط الخطأ ونعرض رسالة لطيفة:

try:
    age = int(input("أدخل عمرك: "))
    print(f"بعد 5 سنوات سيكون عمرك {age + 5}")
except ValueError:
    print("الرجاء إدخال رقم صحيح!")
أدخل عمرك: عشرون
الرجاء إدخال رقم صحيح!

17 مشروع صغير: لعبة تخمين الرقم 🎯

مشروع يجمع كل ما تعلمته: متغيرات، إدخال، تحويل، شروط، حلقة while، break، و f-string.

import random                     # مكتبة جاهزة لتوليد أرقام عشوائية

secret = random.randint(1, 20)    # رقم عشوائي من 1 إلى 20
tries = 0

print("فكّرت برقم بين 1 و 20... حاول تخمينه!")

while True:                       # حلقة مستمرة حتى نخرج بـ break
    guess = int(input("تخمينك: "))
    tries += 1

    if guess < secret:
        print("أكبر ⬆")
    elif guess > secret:
        print("أصغر ⬇")
    else:
        print(f"صح! 🎉 عرفته في {tries} محاولات")
        break
فكّرت برقم بين 1 و 20... حاول تخمينه!
تخمينك: 10
أكبر ⬆
تخمينك: 15
أصغر ⬇
تخمينك: 13
صح! 🎉 عرفته في 3 محاولات
🚀 طوّره بنفسك

أضف حداً أقصى 5 محاولات، واستخدم try / except إذا كتب المستخدم حروفاً.

18 تمارين ✍

حاول حل كل تمرين بنفسك في محررك أو في الملعب بالأسفل قبل أن تفتح الحل.

1. مساحة المستطيل سهل

اطلب من المستخدم الطول والعرض، واطبع المساحة والمحيط.

عرض الحل
length = float(input("الطول: "))
width = float(input("العرض: "))
print(f"المساحة = {length * width}")
print(f"المحيط = {2 * (length + width)}")

2. زوجي أم فردي سهل

اطلب رقماً واطبع إن كان زوجياً أم فردياً.

عرض الحل
n = int(input("أدخل رقماً: "))
if n % 2 == 0:
    print("زوجي")
else:
    print("فردي")

3. مجموع من 1 إلى 100 سهل

باستخدام حلقة for، احسب مجموع الأرقام من 1 إلى 100.

عرض الحل
total = 0
for i in range(1, 101):
    total += i
print(total)
5050

4. جدول الضرب متوسط

اطلب رقماً واطبع جدول ضربه من 1 إلى 10.

عرض الحل
n = int(input("أي جدول؟ "))
for i in range(1, 11):
    print(f"{n} x {i} = {n * i}")

5. عدّ الحروف المتحركة متوسط

اطلب كلمة إنجليزية واحسب كم فيها من الحروف a e i o u.

عرض الحل
word = input("Enter a word: ").lower()
count = 0
for ch in word:
    if ch in "aeiou":
        count += 1
print(f"Vowels: {count}")

6. فاتورة المشتريات متوسط

لديك قاموس أسعار وقاموس كميات؛ اطبع سعر كل منتج والمجموع الكلي.

عرض الحل
prices = {"milk": 1.5, "bread": 0.75, "eggs": 3}
cart = {"milk": 2, "bread": 4, "eggs": 1}

total = 0
for item, qty in cart.items():
    cost = prices[item] * qty
    total += cost
    print(f"{item}: {qty} x {prices[item]} = {cost}")
print(f"Total = {total}")
milk: 2 x 1.5 = 3.0
bread: 4 x 0.75 = 3.0
eggs: 1 x 3 = 3
Total = 9.0

7. أكبر رقم بدون max متوسط

جد أكبر رقم في القائمة [52, 18, 30, 24, 32] باستخدام حلقة فقط.

عرض الحل
nums = [52, 18, 30, 24, 32]
biggest = nums[0]
for n in nums:
    if n > biggest:
        biggest = n
print(biggest)
52

8. آلة حاسبة كاملة تحدٍّ

طوّر حاسبة الجمع من ملفك: اطلب رقمين وعملية (+ - * /)، وكرر حتى يكتب المستخدم q. انتبه للقسمة على صفر.

عرض الحل
while True:
    op = input("العملية (+ - * /) أو q للخروج: ")
    if op == "q":
        print("مع السلامة 👋")
        break
    a = float(input("الرقم الأول: "))
    b = float(input("الرقم الثاني: "))

    if op == "+":
        print(a + b)
    elif op == "-":
        print(a - b)
    elif op == "*":
        print(a * b)
    elif op == "/":
        if b == 0:
            print("لا يمكن القسمة على صفر")
        else:
            print(a / b)
    else:
        print("عملية غير معروفة")

🧪 ملعب بايثون — جرّب أي كود

playground.py
اضغط Run لتشغيل الكود

19 الملخص السريع 📋

الموضوعالصيغة
طباعةprint("Hi", name, sep=" ", end="\n")
إدخال رقمn = int(input("Number: "))
f-stringf"Total: {price * qty:.2f}"
الأنواعstr int float bool → type(x)
تحويلint("5") float("2.5") str(10)
حساب+ - * / // % **
مقارنة== != > < >= <=
منطقand or not in
نصs[0] s[-1] s[1:4] len(s) s.lower() s.split()
قائمةL.append(x) L.insert(i,x) L.remove(x) L.pop() L.sort()
قاموسd["key"] d.get("key") d.keys() d.values() d.items()
شرطif ...: elif ...: else:
forfor i in range(start, stop, step):
for مع رقمfor i, item in enumerate(L):
whilewhile condition:
تحكم بالحلقةbreak continue
أخطاءtry: ... except ValueError: ...
🎓 الخطوة التالية

بعد إتقان هذا الدرس: الدوال def، ثم التعامل مع الملفات، ثم الوحدات والمكتبات مثل random و math.