return اجرای کل تابع رو تمام میکنه، نه فقط دور فعلی حلقه رو. وقتی دنبال وجود یک ویژگی هستیم، پیداکردن اولین عضو مطابق میتونه دلیل خوبی برای خروج فوری باشه. اما ندیدن ویژگی در عضو اول هنوز ثابت نمیکنه هیچ عضو دیگری مناسب نیست. جواب منفی معمولاً وقتی قطعی میشه که کل فهرست بررسی شده باشه.
مثال وجود نام کوتاه رو بررسی میکنه و False رو بعد از حلقه میذاره. تمرین وجود عدد زوج رو میپرسه. خطای رایج گذاشتن else:return False داخل حلقه است؛ اون وقت اگر عضو اول فرد باشه، عضو زوج بعدی هرگز بررسی نمیشه. با یک مثال که عضو اول نامناسب و عضو دوم مناسب است، این باگ سریع آشکار میشه. برای فهرست خالی هم هیچ شاهدی از وجود زوج نداریم، پس False نتیجه طبیعی قرارداده. مقدار صفر زوج محسوب میشه و عددهای منفی هم با باقیمانده تقسیم بر دو قابل بررسیاند. تابع باید بولی برگردونه و ورودی رو دستکاری نکنه.
✍️ مثال حلشده:
def has_short_name(names):
for name in names:
if len(name) < 3:
return True
return False
assert has_short_name(["Sara", "Li"]) is True
حالا نوبت توئه: contains_even(values) را بنویس؛ اگر حداقل یک عدد صحیح زوج وجود دارد True و در غیر این صورت False بده. []=>False، [1,3,4]=>True و [1,3]=>False است. صفر و عدد زوج منفی هم زوجاند. برای جواب منفی همه فهرست را بررسی کن و عضوها را تغییر نده.
فعالیت شما
contains_even(values) را بنویس؛ اگر حداقل یک عدد صحیح زوج وجود دارد True و در غیر این صورت False بده. []=>False، [1,3,4]=>True و [1,3]=>False است. صفر و عدد زوج منفی هم زوجاند. برای جواب منفی همه فهرست را بررسی کن و عضوها را تغییر نده.