>>> print("أهلا بالبايثون")

بايثون من الصفر

كل درس فيه شرح قصير، أمثلة بتقدر تشغّلها هون بالصفحة، وأسئلة بتكتب حلها وبتفحصه فوراً. التلميح والحل مقفولين بعدّاد، عشان تعطي حالك فرصة تفكر قبل ما تشوفهم.

اكتب وشغّلكل سؤال إله محرر. اضغط «شغّل» أو Ctrl + Enter وبتشوف الناتج تحته.
افحص الحلزر «افحص» بيجرّب كودك على عدة حالات وبيحكيلك وين الغلط بالزبط.
التلميح بعد شويالعدّاد بيبلش أول ما تكتب بالمحرر. التلميح بيفتح بعد نص دقيقة تقريباً.
الحل بعد ما تحاولالحل بيفتح بعد ٢ لـ ٦ دقايق حسب صعوبة السؤال، أو فوراً إذا نجحت بالفحص.

الملعب

مكان حر تجرب فيه أي كود. المشغّل بيشتغل جوّا الصفحة، فما بتحتاج تنزّل إشي. إذا البرنامج طلب input رح يطلعلك مربع كتابة بالناتج.

Ctrl + Enter المشغّل عم يتحمّل…
01

الطباعة والمتغيرات

print بتطبع إشي على الشاشة. المتغير هو صندوق إله اسم، بتحط فيه قيمة وبترجعلها بعدين. الإشارة = معناها «خزّن هالقيمة بهالاسم»، مش «بيساوي» متل الرياضيات.

print("مرحبا يا عالم")
name = "سارة"
age = 19
print(name)
print("العمر:", age)
print(f"أنا {name} وعمري {age} سنة")

لما تحط f قبل النص، بتقدر تحط أي متغير جوّا {} وبينكتب مكانه. هاد اسمه f-string.

قواعد أسماء المتغيرات:
  • بدون مسافات: user_name مش user name.
  • ما بتبلش برقم: x1 مزبوط، 1x غلط.
  • Age و age متغيرين مختلفين.
سهل

عرّف عن حالك

خزّن اسمك بمتغير name وعمرك بمتغير age، واطبع جملة بهالشكل بالزبط (بإسمك وعمرك):

الناتج المتوقع (مثال)
اسمي علي وعمري 20 سنة
02

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

كل قيمة إلها نوع، والنوع بيحدد شو بتقدر تعمل فيها. بتقدر تعرف نوع أي قيمة بـ type().

النوعشو هوأمثلة
intرقم صحيح7, -3, 0
floatرقم عشري3.5, 0.1
strنص، دايماً بين علامات تنصيص"مرحبا", '5'
boolصح أو غلطTrue, False
print(type(7))
print(type("7"))
print("5" + "3")        # جمع نصوص: بيلزقهم
print(int("5") + 3)     # حولنا النص لرقم أول
print(str(10) + " كيلو")
غلطة مشهورة: "5" + 3 بتعطي خطأ TypeError، لأنه بايثون ما بتعرف تجمع نص مع رقم. لازم تحوّل واحد منهم: int() أو float() أو str().
سهل

صلّح الجمع

الكود تحت بيعطي خطأ. عدّله بحيث يطبع 8 بدون ما تغيّر سطر x أو سطر y.

الناتج المتوقع
8
03

الإدخال input

input() بتوقف البرنامج وبتستنى المستخدم يكتب إشي. الجملة اللي بين القوسين بتنطبع كسؤال. شغّل المثال واكتب جوابك بالمربع اللي بيطلع.

name = input("شو اسمك؟ ")
age = int(input("كم عمرك؟ "))
print(f"أهلا {name}، بعد 10 سنين رح يصير عمرك {age + 10}")
انتبه: input دايماً بترجع نص str، حتى لو المستخدم كتب رقم. عشان هيك منلفّها بـ int() إذا بدنا نحسب فيها.
04

العمليات

العمليةمعناهامثالالنتيجة
+ - *جمع، طرح، ضرب4 * 312
/قسمة عادية (دايماً float)7 / 23.5
//قسمة صحيحة، بتشيل الكسر7 // 23
%باقي القسمة7 % 21
**أُس2 ** 532
== !=بيساوي، ما بيساوي5 == 5True
< > <= >=مقارنة3 >= 4False
and or notو، أو، عكسTrue and FalseFalse

% مفيدة كتير: إذا n % 2 == 0 يعني الرقم زوجي. و x += 5 هي اختصار لـ x = x + 5.

متوسط

دقايق لساعات

عندك minutes = 125. احسب كم ساعة كاملة وكم دقيقة بيضل، واطبع النتيجة بهالشكل:

الناتج المتوقع
2 ساعة و 5 دقيقة
05

الشروط if / elif / else

if بتنفّذ كود بس إذا الشرط صحيح. elif معناها «وإلا إذا»، و else لكل الحالات الباقية. بايثون بتفحص من فوق لتحت وبتنفذ أول شرط صحيح بس.

temp = 31
if temp >= 30:
    print("الجو شوب")
elif temp >= 18:
    print("الجو حلو")
else:
    print("الجو برد")
print("خلصنا")   # هاد برا الـ if، بينطبع دايماً
الإزاحة (المسافات) مهمة: بعد : لازم السطر اللي بعده يبلش بـ 4 مسافات. هيك بايثون بتعرف شو جوّا الشرط وشو برّاه. بالمحرر هون، زر Tab بيحط 4 مسافات.
سهل

زوجي ولا فردي؟

اطلب من المستخدم رقم بـ input، واطبع زوجي أو فردي. الفحص رح يجرب كودك على أكتر من رقم.

مثال: لما المستخدم يكتب 7
فردي
متوسط

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

اطلب علامة من 100 واطبع التقدير: 90 وفوق ممتاز، من 75 لـ 89 جيد جدا، من 60 لـ 74 ناجح، وأقل من 60 راسب.

مثال: لما المستخدم يكتب 82
جيد جدا
06

القوائم lists

القائمة بتخزن أكتر من قيمة بمتغير واحد. كل عنصر إله رقم (index) بيبلش من 0. الأرقام السالبة بتعد من الآخر.

fruits = ["تفاح", "موز", "برتقال"]
print(fruits[0])      # أول عنصر
print(fruits[-1])     # آخر عنصر
fruits.append("عنب")  # زيد عنصر بالآخر
print(len(fruits))    # كم عنصر
print("موز" in fruits)
سهل

أول وآخر وطول

عندك القائمة nums = [4, 8, 15, 16, 23, 42]. اطبع أول عنصر، بعدين آخر عنصر، بعدين عدد العناصر، كل واحد بسطر.

الناتج المتوقع
4
42
6
07

حلقة for

for بتمشي على عناصر إشي واحد واحد، وبكل لفّة بتحط العنصر الحالي بمتغير وبتنفّذ الكود اللي جوّاها. منستعملها لما نكون عارفين على شو بدنا نلف: قائمة، نص، أو عدد مرات محدد.

fruits = ["تفاح", "موز", "برتقال"]
for fruit in fruits:
    print("بحب", fruit)

for letter in "Hi!":
    print(letter)

range: سلسلة أرقام

الكتابةالأرقامملاحظة
range(5)0 1 2 3 4بتبلش من 0، والـ 5 مش داخلة
range(2, 6)2 3 4 5من 2 لحد قبل 6
range(0, 10, 2)0 2 4 6 8القفزة 2
range(5, 0, -1)5 4 3 2 1عد تنازلي

هاد مثال بيجمع الأرقام من 1 لـ 4. الجدول تحته بيبين شو بيصير بكل لفّة:

total = 0
for i in range(1, 5):
    total += i
    print("i =", i, " total =", total)
print("المجموع:", total)
اللفّةitotal قبلtotal بعد
1101
2213
3336
44610
سهل

من 1 لـ 10

اطبع الأرقام من 1 لـ 10، كل رقم بسطر، باستعمال for.

الناتج المتوقع
1
2
3
…
10
متوسط

مجموع 1 لـ 100

احسب مجموع كل الأرقام من 1 لـ 100 بحلقة for، واطبع المجموع بس (رقم واحد).

الناتج المتوقع
5050
متوسط

الأسماء الطويلة

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

الناتج المتوقع
محمود
عبدالله
08

حلقة while

while بتضل تعيد الكود طول ما الشرط صحيح. قبل كل لفّة بتفحص الشرط، وأول ما يصير غلط بتطلع. منستعملها لما ما بنعرف قديش رح نلف، بس بنعرف إمتى لازم نوقف.

count = 1
while count <= 5:
    print("اللفة رقم", count)
    count += 1
print("طلعنا من الحلقة، count صار", count)
حلقة ما بتخلص: إذا نسيت تغيّر المتغير اللي بالشرط (متل count += 1)، الشرط رح يضل صحيح للأبد. المشغّل هون بيوقف أي برنامج بعد 5 ثواني، وبتقدر توقفه بزر «وقّف».
forwhile
منستعملها لماعندنا قائمة أو عدد لفّات معروفبنستنى شرط يتغيّر (جواب مستخدم، رقم يوصل حد)
العدّادبيتغيّر لحالهإنت المسؤول تغيّره
مثالاطبع كل الطلاباسأل لحد ما تنكتب كلمة السر الصح
سهل

عد تنازلي

باستعمال while، اطبع الأرقام من 10 نزولاً لـ 1، وبعدها اطبع انطلق!.

الناتج المتوقع
10
9
…
1
انطلق!
متوسط

كلمة السر

اطلب كلمة السر من المستخدم. طول ما هي مش python123، اطبع غلط، جرب كمان مرة واسأله من جديد. لما يكتبها صح اطبع أهلا فيك!.

مثال: لما يكتب abc بعدين python123
غلط، جرب كمان مرة
أهلا فيك!
09

break و continue

break بتطلع من الحلقة كلها فوراً. continue بتترك اللفّة الحالية وبتنط عاللفّة اللي بعدها. الثنتين بيشتغلوا مع for و while.

for n in range(1, 10):
    if n == 3:
        continue      # نط عن 3
    if n == 6:
        break         # وقّف كل إشي عند 6
    print(n)
print("بعد الحلقة")
متوسط

انط ووقّف

لف على الأرقام من 1 لـ 20. انط عن مضاعفات الـ 3 (ما تطبعها)، ولما توصل 17 وقّف الحلقة كلها بدون ما تطبعها.

الناتج المتوقع (كل رقم بسطر)
1 2 4 5 7 8 10 11 13 14 16
10

for جوّا for

لما تحط حلقة جوّا حلقة، الحلقة الداخلية بتخلص كل لفّاتها بكل لفّة وحدة من الخارجية. فكّر فيها متل الساعة: عقرب الدقايق بيلف 60 مرة كاملة قبل ما عقرب الساعات يتحرك خطوة وحدة.

عدد مرات تنفيذ الكود الداخلي = لفّات الخارجية × لفّات الداخلية. بالمثال تحت: 3 × 4 = 12 مرة. اضغط «الخطوة الجاية» وراقب كيف j بترجع لـ 1 كل ما i تزيد.

for i in range(1, 4):
for j in range(1, 5):
print(i * j, end=" ")
print()
i = –
j = –
لفّات: 0 / 12
اضغط «الخطوة الجاية» لتبلش.

end=" " بتخلي print تحط مسافة بدل سطر جديد، عشان هيك الأرقام بتنطبع جنب بعض. و print() الفاضية بتنزل سطر. هاد المثال جاهز للتشغيل:

for i in range(1, 4):
    for j in range(1, 5):
        print(i * j, end=" ")
    print()
متوسط

مثلث نجوم

اطبع مثلث من 5 أسطر. استعمل حلقتين: الخارجية للأسطر، والداخلية بتطبع النجوم واحدة واحدة. ممنوع تستعمل "*" * i.

الناتج المتوقع
*
**
***
****
*****
متوسط

جدول الضرب

اطبع جدول الضرب من 1 لـ 5. كل سطر فيه 5 أرقام مفصولة بمسافة أو Tab.

الناتج المتوقع
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25
صعب

كل الأزواج

اطبع كل الأزواج i j من الأرقام 1 لـ 4 بحيث i أصغر من j. كل زوج بسطر.

الناتج المتوقع
1 2
1 3
1 4
2 3
2 4
3 4
11

الدوال def

الدالة هي كود إله اسم، بتكتبه مرة وبتستعمله كل ما بدك. بتاخد مدخلات (parameters) وبترجع نتيجة بـ return. الفرق بين return و print: الأولى بترجع قيمة بتقدر تخزنها وتستعملها، التانية بس بتعرض على الشاشة.

def area(width, height):
    return width * height

a = area(3, 4)
print("المساحة:", a)
print(area(10, 2) + 1)
صعب

دالتين صغار

اكتب دالة is_even(n) بترجع True إذا الرقم زوجي و False إذا فردي. واكتب دالة biggest(nums) بترجع أكبر رقم بالقائمة، بدون ما تستعمل max(). الفحص رح يستدعي الدالتين على عدة قيم.

مثال
is_even(10)          → True
biggest([3, 9, 2, 7]) → 9