استخدام while: أعد السؤال حتى تكون الإجابة صحيحة
في الدرس السابق تعلمنا تنظيف إدخال المستخدم. الآن سنجعل البرنامج أكثر احترافية: إذا كتب المستخدم إجابة غير صحيحة، لا ينتهي البرنامج، بل يعيد السؤال حتى يحصل على yes أو no.
ما النتيجة التي يجب أن تخرج بها؟
في نهاية الدرس ستفهم هذا الكود:
while True:
answer_text = input("اكتب yes أو no: ")
answer = answer_text.strip().lower()
if answer == "yes" or answer == "no":
break
print("إجابة غير صحيحة، حاول مرة أخرى")
معنى الكود: اسأل المستخدم، نظف إجابته، إذا كانت yes أو no اخرج من الحلقة، وإذا كانت غير ذلك أعد السؤال.
لماذا نحتاج while؟
بدون while، إذا كتب المستخدم إجابة غير صحيحة، قد ينتهي البرنامج مباشرة.
لكن في البرامج الأفضل، لا نترك المستخدم يضيع من أول خطأ. نعيد له السؤال ونوضح له المطلوب:
إجابة غير صحيحة، حاول مرة أخرى
أنشئ ملف الدرس الثامن عشر
افتح مجلد الدورة داخل VS Code:
python_course
ثم أنشئ ملفًا جديدًا باسم:
lesson_18.py
افتح الملف داخل Editor.
جرّب while بسيطة
اكتب هذا المثال البسيط:
counter = 1
while counter <= 3:
print("تكرار رقم", counter)
counter = counter + 1
النتيجة:
تكرار رقم 1 تكرار رقم 2 تكرار رقم 3
ما معنى while True؟
أحيانًا لا نعرف عدد مرات التكرار مسبقًا. المستخدم قد يكتب إجابة خاطئة مرة أو مرتين أو أكثر.
لذلك نستخدم:
while True:
معناها: كرر باستمرار، إلى أن أوقفك أنا باستخدام break.
اكتب حلقة تسأل عن yes أو no
الآن اكتب:
while True:
answer_text = input("اكتب yes أو no: ")
answer = answer_text.strip().lower()
if answer == "yes" or answer == "no":
break
print("إجابة غير صحيحة، حاول مرة أخرى")
لاحظ ترتيب التفكير:
اسأل المستخدم نظف الإجابة افحص هل هي yes أو no إذا نعم: اخرج من الحلقة إذا لا: اطبع رسالة وأعد السؤال
ما وظيفة break؟
break تعني: اخرج من الحلقة الآن.
في كودنا، عندما تكون الإجابة yes أو no، لا نحتاج إلى إعادة السؤال. لذلك نستخدم break.
اختبر الحلقة بمدخلات خاطئة
شغل البرنامج وجرب:
maybe ok YES
المتوقع:
maybe → إجابة غير صحيحة، حاول مرة أخرى ok → إجابة غير صحيحة، حاول مرة أخرى YES → تتحول إلى yes ثم تخرج من الحلقة
طبّقها على برنامج التذكرة
الآن نستخدم while داخل برنامج الدخول:
age = int(input("اكتب عمرك: "))
ticket_prompt = "هل لديك تذكرة؟ yes/no: "
while True:
has_ticket_text = input(ticket_prompt)
has_ticket = has_ticket_text.strip().lower()
if has_ticket == "yes" or has_ticket == "no":
break
print("اكتب yes أو no فقط")
if age >= 18 and has_ticket == "yes":
print("مسموح بالدخول")
else:
print("غير مسموح بالدخول")
اختبر برنامج الدخول الجديد
جرّب هذه الحالة:
اكتب عمرك: 20 هل لديك تذكرة؟ اكتب yes أو no: ربما اكتب yes أو no فقط هل لديك تذكرة؟ اكتب yes أو no: YES مسموح بالدخول
ثم جرّب:
اكتب عمرك: 20 هل لديك تذكرة؟ اكتب yes أو no: no غير مسموح بالدخول
تحدي صغير: تحقق من VIP أيضًا
اكتب حلقة ثانية تسأل عن VIP بنفس الطريقة:
vip_prompt = "هل لديك VIP؟ yes/no: "
while True:
is_vip_text = input(vip_prompt)
is_vip = is_vip_text.strip().lower()
if is_vip == "yes" or is_vip == "no":
break
print("اكتب yes أو no فقط")
ثم اجمعها مع القرار:
old_enough = age >= 18
has_access = has_ticket == "yes" or is_vip == "yes"
if old_enough and has_access:
print("مسموح بالدخول")
else:
print("غير مسموح بالدخول")
اختبار نهاية الدرس
قبل الانتقال للدرس القادم، تأكد أنك فهمت هذه النقاط:
خلاصة الدرس
تعلمنا أن while تستخدم للتكرار، وأن while True تجعل التكرار مستمرًا حتى نستخدم break. استخدمنا ذلك لإعادة السؤال حتى يكتب المستخدم yes أو no.
تذكر القاعدة:
while True:
اسأل المستخدم
نظف الإدخال
إذا كان صحيحًا:
break
أخبره أن يحاول مرة أخرى
في الدرس القادم سنبني على while ونتعلم كيف نكرر أكثر من عملية، ونبدأ الاقتراب من مشروع نهائي منظم.
💬 التعليقات
لا توجد تعليقات بعد.
🚫 يجب تسجيل الدخول لإضافة تعليق. دخول / تسجيل