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
- مشروع صغير + تمارين + ملخص سريع
في حلقة enumerate كُتب names[0] = name + "'s car"، والصحيح names[x] = .... النسخة الحالية تكتب دائماً في العنصر الأول، فتكون النتيجة ["Hassan's car", 'Sarah', 'John', 'Hassan']. الشرح الكامل في قسم for.
البنود من 7 إلى 13 (النصوص، القوائم، Tuple و Set، القواميس، المقارنة، الشروط، حلقة for) مشروحة بتفصيل أكبر وبأمثلة من الحياة اليومية في صفحة مستقلة: افتح الشرح المبسّط ←
اضغط زر Run فوق أي مثال لتشغيله فعلياً (أول تشغيل يحمّل بايثون في المتصفح، ويحتاج اتصالاً بالإنترنت وبضع ثوانٍ). عند وجود input() ستظهر لك نافذة لتكتب القيمة. وبعد إنهاء كل قسم اضغط «أنهيت هذا القسم» ليُحسب تقدمك.
1 التثبيت وأول برنامج إضافة جديدة
بايثون لغة برمجة سهلة القراءة، وتُستخدم في الذكاء الاصطناعي وتحليل البيانات والمواقع والأتمتة.
خطوات التجهيز
- حمّل بايثون من python.org، وعند التثبيت فعّل خيار Add Python to PATH.
- ثبّت محرراً مثل PyCharm أو VS Code.
- أنشئ ملفاً امتداده
.pyمثلhello.py. - شغّله بزر التشغيل في المحرر، أو من الطرفية بالأمر
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 indent3 العمليات الحسابية من ملفاتك + إضافات
| العملية | الرمز | مثال | الناتج |
|---|---|---|---|
| جمع | + | 4 + 5 | 9 |
| طرح | - | 10 - 5 | 5 |
| ضرب | * | 3 * 2 | 6 |
| قسمة (الناتج دائماً عشري) | / | 12 / 5 | 2.4 |
| قسمة صحيحة (بدون كسور) ✨ | // | 12 // 5 | 2 |
| باقي القسمة ✨ | % | 12 % 5 | 2 |
| الأُس (القوة) ✨ | ** | 2 ** 3 | 8 |
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) # حتى لو كانت القسمة بلا باقٍ، الناتج float4 + 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. علامة = هنا تعني «خزّن»، وليست «يساوي».
نص String
أي نص بين علامات تنصيص: "Ahmad"
عدد صحيح Integer
بدون فاصلة عشرية: 30 ، -7
عدد عشري Float ✨
فيه فاصلة: 1.75 ، 1025.0
منطقي 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)) # للتقريب استخدم round1010 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 قبل علامة التنصيص، وأي شيء داخل { } يُحسب ويوضع مكانه — حتى العمليات الحسابية.
7 التعامل مع النصوص إضافة جديدة
النص عبارة عن سلسلة من الحروف، ولكل حرف رقم (index) يبدأ من 0، ومن النهاية بالسالب يبدأ من -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 من ملفاتك + إضافات
القائمة تخزن عدة قيم في متغير واحد، بين قوسين مربعين [ ]، ويمكن أن تحتوي أنواعاً مختلفة.
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']
3person["Phone"] لمفتاح غير موجود يسبب خطأ KeyError، أما person.get("Phone") فتُرجع None بهدوء.
11 عمليات المقارنة والمنطق إضافة جديدة
نتيجة أي مقارنة هي True أو False، وهي أساس الشروط والحلقات.
| الرمز | المعنى | مثال (a=10, b=3) | الناتج |
|---|---|---|---|
| == | يساوي | a == 10 | True |
| != | لا يساوي | a != b | True |
| > | أكبر من | a > b | True |
| < | أصغر من | a < b | False |
| >= | أكبر من أو يساوي | a >= 10 | True |
| <= | أصغر من أو يساوي | b <= 2 | False |
= للتخزين (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) | بخطوة 2 | 0 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 والحلقات المتداخلة إضافة جديدة
تُوقف الحلقة كلياً وتخرج منها.
تتخطى الدورة الحالية وتنتقل للدورة التالية.
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("عملية غير معروفة")🧪 ملعب بايثون — جرّب أي كود
اضغط Run لتشغيل الكود
19 الملخص السريع 📋
| الموضوع | الصيغة |
|---|---|
| طباعة | print("Hi", name, sep=" ", end="\n") |
| إدخال رقم | n = int(input("Number: ")) |
| f-string | f"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: |
| for | for i in range(start, stop, step): |
| for مع رقم | for i, item in enumerate(L): |
| while | while condition: |
| تحكم بالحلقة | break continue |
| أخطاء | try: ... except ValueError: ... |
بعد إتقان هذا الدرس: الدوال def، ثم التعامل مع الملفات، ثم الوحدات والمكتبات مثل random و math.