AzLearn

تمرين إعادة البناء

Random Password Generator

أعد كتابة سكربت Python يولد كلمات مرور عشوائية بخيارات بسيطة.

python ~12 دقيقة مبتدئ
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
import argparse
import random
import string


def character_pool(use_digits: bool, use_symbols: bool) -> str:
    pool = string.ascii_letters
    if use_digits:
        pool += string.digits
    if use_symbols:
        pool += "!@#$%^&*()-_=+"
    return pool


def make_password(length: int, use_digits: bool, use_symbols: bool) -> str:
    if length < 1:
        raise ValueError("length must be at least 1")

    chooser = random.SystemRandom()
    pool = character_pool(use_digits, use_symbols)
    return "".join(chooser.choice(pool) for _ in range(length))


def main() -> None:
    parser = argparse.ArgumentParser(description="Generate random passwords.")
    parser.add_argument("-l", "--length", type=int, default=16)
    parser.add_argument("-c", "--count", type=int, default=1)
    parser.add_argument("--no-digits", action="store_true")
    parser.add_argument("--no-symbols", action="store_true")
    args = parser.parse_args()

    if args.count < 1:
        raise SystemExit("count must be at least 1")

    try:
        for _ in range(args.count):
            print(make_password(args.length, not args.no_digits, not args.no_symbols))
    except ValueError as error:
        raise SystemExit(str(error)) from error


if __name__ == "__main__":
    main()
اكتب هنا