التحدي رقم 24 لليوم رقم 24 من رمضان
اولا
كل عام و انتم بخير و اعاده الله عليكم بالمن و بالخير و البركه
بالامس كنا نقول رمضان اهلا و اليوم نقول رمضان مهلا فاللهم اغفر لنا ما مضي و اصلح لنا ما بقي واختم لنا رمضان بخير و انت راض عنا
و لا تنسي تجديد نيتك فأن طلب العلم عباده
لا تنسوني و اخي المعتقل سياسيا من جميل دعائكم في هذه الليالي العشر
وصف التحدي :
متنساش تدعي لخواتنا ف غزه لو لسه عندك قلب و شوية دم
**مستوي التحدي : **
اقل من متوسط برمجيا
قم بكتابة دالة اسمها: isEmail
تستقبل قيمة نصية من نوع string
. تقوم الدالة بالتحقق ما إذا كانت القيمة النصية تحتوي على بريد إلكتروني صحيح أم لا، عن طريق إرجاع قيمة من نوع boolean
.
شروط البريد الإلكتروني الصحيح
- أن لا يبدأ رمز
- أن يحتوي الجزء الأول على خانة على الأقل (ما قبل الرمز
@
) - أن يحتوي على الرمز
@
- أن يتبع رمز
@
خانة على الأقل - أن يتبعه بعد ذلك بالرمز
.
- أن يتبع الرمز
.
بخانتين على الأقل - لا مانع من أن يحتوي الجزء الذي يسبق
@
على الرموز التالية_.-
ملحوظه : تقدر تحل التحدي و تتحقق من صحته من خلال الموقع هنا اهو :
موقع سلسلة حل المشكلات (Problem Sloving)
بس خد بالك لو هتحل ع الموقع لازم اسم الداله يكون زي الاسم اللي موجود في وصف التحدي
أضغط لرؤية المخرجات المتوقعة عشان تتيست الكود بتاعك
الاختبار 1
المدخلات (Inputs)
email = ‘example@example.com’
المخرجات (Outputs)
true
الاختبار 2
المدخلات (Inputs)
email = ‘example@example.c’
المخرجات (Outputs)
false
الاختبار 3
المدخلات (Inputs)
email = ‘example@com’
المخرجات (Outputs)
false
الاختبار 4
المدخلات (Inputs)
email = ‘@example.com’
المخرجات (Outputs)
false
حل التحدي
def isEmail(email):
if not email or not email[0].isalnum():
return False
if "@" not in email or "." not in email:
return False
at_index = email.index("@")
if at_index == 0 or at_index == len(email) - 1:
return False
local_part = email[:at_index]
domain_part = email[at_index + 1:]
if not local_part or any(c not in "-_.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" for c in local_part):
return False
if "." not in domain_part or domain_part[0] == ".":
return False
last_dot_index = email.rindex(".")
if len(email) - last_dot_index - 1 < 2:
return False
if email.rindex("@") > last_dot_index:
return False
return True