راه
۷ کیو· سادهمبتدیPYTHON۴ ثانیه · ۲۵۶ مگابایت

ثبت نام

در دنیای وب و اپلیکیشن‌های آنلاین، بخش عضویت و ورود کاربران از بخش‌های حیاتی هر سیستم محسوب می‌شود. تأمین امنیت اطلاعات کاربران و جلوگیری از سوءاستفاده، مستلزم اعمال محدودیت‌ها و قوانینی هنگام ثبت‌نام است.

وظیفه‌ی شما نوشتن تابعی در پایتون است که لیستی از نام‌های کاربری و گذرواژه‌ها را دریافت کرده و بر اساس مجموعه‌ای از قوانین، معتبر بودن آن‌ها را بررسی نماید. در نهایت، این تابع باید لیستی از نام‌های کاربری معتبر برای عضویت را به‌عنوان خروجی برگرداند.


برای عضویت در سیستم فرضی ما، کاربران باید شرایط زیر را رعایت کنند:

  1. طول گذرواژه: طول گذرواژه باید حداقل ۶ کاراکتر باشد. گذرواژه‌های کوتاه‌تر از این مقدار، از نظر امنیتی ضعیف محسوب می‌شوند.
  2. طول نام کاربری: طول نام کاربری باید حداقل ۴ کاراکتر باشد. نام‌های کاربری کوتاه‌تر از این مقدار، معمولاً برای شناسایی و تمایز کاربران کافی نیستند.
  3. نام‌های کاربری غیرمجاز: استفاده از نام‌های کاربری خاصی مانند quera و codecup ممنوع است.
  4. گذرواژه‌های فقط عددی: گذرواژه‌هایی که فقط از اعداد تشکیل شده‌اند مجاز نیستند و امنیت آن‌ها پایین است.

تابع check_registration_rules

تابعی با نام check_registration_rules بنویسید که نام کاربری و گذرواژه‌ی تعدادی کاربر را به‌صورت آرگومان‌های کلیدواژه‌ای (keyword arguments) دریافت کند. به عبارت دیگر، هر آرگومان کلیدواژه‌ای یک نام کاربری است و مقدار آن، گذرواژه‌ی مربوط به آن کاربر خواهد بود.

وظیفه‌ی تابع این است که با بررسی هر نام کاربری و گذرواژه بر اساس قوانین عضویت ذکرشده، نام‌های کاربری معتبر را شناسایی کرده و در قالب یک لیست برگرداند. ترتیب نام‌های کاربری در لیست خروجی اهمیتی ندارد.


🎯 نمونه

ورودی و خروجی ۱

text
>>> check_registration_rules(username='password', sadegh='He3@lsa')
['username', 'sadegh']

در این مثال، هر دو نام کاربری username و sadegh شرایط عضویت را برآورده می‌کنند. بنابراین، تابع لیستی شامل این دو نام کاربری را برمی‌گرداند.

ورودی و خروجی ۲

text
>>> check_registration_rules(quera='qwerty80', mmdreza='monday80', ali="aliali@", mammad="salam")
['mmdreza']

quera: نام کاربری غیرمجاز است (قانون ۳). qwerty80: گذرواژه قابل‌قبول است. mmdreza: نام کاربری قابل‌قبول است. monday80: گذرواژه قابل‌قبول است. ali: نام کاربری قابل‌قبول است. aliali@: گذرواژه قابل‌قبول است. mammad: نام کاربری قابل‌قبول است. salam: گذرواژه نامعتبر است زیرا طول آن کمتر از ۶ کاراکتر است (قانون ۱). در نتیجه، تنها کاربری که هم نام کاربری و هم گذرواژه‌اش معتبر است، mmdreza می‌باشد. بنابراین، خروجی تابع فقط شامل نام کاربری mmdreza خواهد بود.

ورودی و خروجی ۳

text
>>> check_registration_rules(test='1234567', user1='pa$$wOrd', user2='abcdef', user3='1234')
['user1', 'user2']

test: نام کاربری قابل‌قبول است. 1234567: گذرواژه نامعتبر است زیرا فقط از اعداد تشکیل شده است (قانون ۴). user1: نام کاربری قابل‌قبول است. pa$$wOrd: گذرواژه قابل‌قبول است. user2: نام کاربری قابل‌قبول است. abcdef: گذرواژه قابل‌قبول است. user3: نام کاربری قابل‌قبول است. 1234: گذرواژه نامعتبر است زیرا طول آن کمتر از ۶ کاراکتر است (قانون ۱). در نتیجه، تابع لیستی شامل نام‌های کاربری user1 و user2 را برمی‌گرداند.


💡 راهنمایی

برای پیاده‌سازی تابع check_registration_rules، مراحل زیر را دنبال کنید:

  1. یک لیست خالی برای ذخیره‌ی نام‌های کاربری معتبر ایجاد کنید.
  2. با استفاده از items()، روی جفت‌های کلید-مقدار دیکشنری ورودی پیمایش کنید.
  3. برای هر جفت (نام کاربری، گذرواژه)، قوانین را بررسی کنید: طول نام کاربری ≥ ۴ نام کاربری در {'quera', 'codecup'} نباشد طول گذرواژه ≥ ۶ گذرواژه فقط عددی نباشد (با isdigit())
  4. اگر همه‌ی قوانین رعایت شد، نام کاربری را به لیست اضافه کنید.
  5. در نهایت، لیست نام‌های کاربری معتبر را برگردانید.
python
def check_registration_rules(**users):
    forbidden_usernames = {'quera', 'codecup'}
    valid_users = []

    for username, password in users.items():
        if len(username) < 4:
            continue
        if username in forbidden_usernames:
            continue
        if len(password) < 6:
            continue
        if password.isdigit():
            continue
        valid_users.append(username)

    return valid_users
  • **``users ← دریافت آرگومان‌های کلیدواژه‌ای به‌صورت دیکشنری
  • items() ← پیمایش جفت‌های (نام کاربری، گذرواژه)
  • len(username) < 4 ← قانون ۲
  • username in forbidden_usernames ← قانون ۳
  • len(password) < 6 ← قانون ۱
  • password.isdigit() ← قانون ۴ (بررسی عددی بودن)
  • continue ← رد کردن کاربر در صورت عدم رعایت هر قانون
  • در این تمرین، نیازی به دریافت ورودی از کاربر یا چاپ خروجی در کنسول ندارید.
  • شما فقط باید تابع check_registration_rules را پیاده‌سازی کنید.
  • ورودی تابع از طریق آرگومان‌های کلیدواژه‌ای دریافت می‌شود و خروجی تابع باید از طریق دستور return برگردانده شود.
  • نیازی به فراخوانی تابع در کد ارسالی نیست. سیستم به‌طور خودکار تابع شما را با ورودی‌های مختلف تست خواهد کرد.
  • ترتیب نام‌های کاربری در لیست خروجی اهمیتی ندارد.

✅ این تمرین را در ویرایشگر خود پیاده‌سازی کنید. به یاد داشته باشید که تابع باید یک لیست از نام‌های کاربری معتبر برگرداند.

نمونه‌ها

ورودی نمونه ۱
check_registration_rules(username='password', sadegh='He3@lsa')
خروجی نمونه ۱
['username', 'sadegh']
ورودی نمونه ۲
check_registration_rules(quera='qwerty80', mmdreza='monday80', ali="aliali@", mammad="salam")
خروجی نمونه ۲
['mmdreza']
ورودی نمونه ۳
check_registration_rules(test='1234567', user1='pa$$wOrd', user2='abcdef', user3='1234')
خروجی نمونه ۳
['user1', 'user2']

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود