Kodax

حلقة while — أساسيات Python

حلقة while

for مناسبة عندما نعرف ما الذي سنمر عليه. أما while فتكرر طالما الشرط صحيح، وتُستخدم عندما لا نعرف عدد التكرارات مسبقاً: انتظار إدخال صحيح، لعبة تستمر حتى الفوز، قراءة بيانات حتى نهايتها.

count = 3
while count > 0:
    print(count)
    count -= 1
print("انطلق!")

كيف تعمل؟

1. يُفحص الشرط.

2. إذا كان صحيحاً تُنفَّذ الكتلة، ثم نعود للخطوة 1.

3. إذا كان خاطئاً تنتهي الحلقة.

الحلقة اللانهائية

إذا لم يتغير شيء يجعل الشرط خاطئاً، تستمر الحلقة للأبد:

x = 1
while x > 0:
    print(x)   # x لا تتغير ← حلقة لا نهائية!

تأكد دائماً أن داخل الحلقة شيئاً يقترب من إنهائها. (إذا علق برنامجك، أوقفه بـ Ctrl+C.)

while True مع break

نمط شائع جداً للتحقق من الإدخال:

while True:
    text = input("أدخل عمرك: ")
    if text.isdigit():
        age = int(text)
        break
    print("أدخل أرقاماً فقط")

break تخرج من الحلقة فوراً. isdigit() تتحقق أن النص أرقام فقط.

وحدة random (نظرة أولى)

مثال الكود يستخدم import random: هذا السطر يجلب وحدة جاهزة من مكتبة Python، و random.randint(1, 100) تعطي رقماً عشوائياً بين 1 و 100 (شاملاً الطرفين). سنتعلم الوحدات بالتفصيل في درس لاحق.

for أم while؟

| استخدم for | استخدم while |

|---|---|

| المرور على قائمة أو نص | التكرار حتى يتحقق شرط |

| عدد مرات معروف | عدد مرات غير معروف |

تمرين

اطلب من المستخدم أرقاماً حتى يكتب 0، ثم اطبع مجموعها وعددها.

# عدّ تنازلي
countdown = 5
while countdown > 0:
    print(countdown)
    countdown -= 1
print("انطلق! 🚀")

# تكرار حتى يتحقق شرط: كم سنة حتى يتضاعف المبلغ بفائدة 7%؟
balance = 1000
years = 0
while balance < 2000:
    balance *= 1.07
    years += 1
print(f"يتضاعف المبلغ بعد {years} سنة")

# التحقق من الإدخال بـ while True و break
while True:
    text = input("أدخل عمرك: ")
    if text.isdigit() and int(text) > 0:
        age = int(text)
        break
    print("أدخل رقماً صحيحاً موجباً")
print("عمرك:", age)

# جمع أرقام حتى يكتب المستخدم 0
total = 0
count = 0
while True:
    text = input("أدخل رقماً (0 للإنهاء): ")
    if not text.lstrip("-").isdigit():
        print("ليس رقماً")
        continue
    number = int(text)
    if number == 0:
        break
    total += number
    count += 1
print(f"المجموع {total} لعدد {count} أرقام")
اختبر فهمك