تمرين إعادة البناء
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()اكتب هنا