🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ ghazale. Mombeiny
برنامه ی رمز ساز با تغییر
محسن موحد حل شده توسط محسن موحد

import string

from random import choices


 

def create_password(length=8 , upper=False, lower=False, digit=False,pun=False):

    pool=[ ]

    if upper:

        pool += string.ascii_uppercase

    if lower:

        pool += string.ascii_lowercase

    if digit:

        pool += string.digits

    if pun:

        pool[0]+= string.punctuation  

    if pool==[ ]:

        pool = string.ascii_letters

    return [ ].join(choices(pool, k=length))

if __name__ == '__main__':

   print(create_password(upper=True ,lower=True , digit=True , pun=True))

سلام خسته نباشید میخواستم برنامه ی رمز ساز رو جوری تغییر بدم که از علامت‌های نگارشی فقط بتونه از کارکتر دوم به بعد استفاده کنه بخاطر همین pool رو به لیست تبدیل کردم ولی برنامه درست اجرا نمیشه میخواستم راهنمایی کنید که چطور باید کد رو اصلاح کنم

سلام،

طبق توضیحاتتون بررسی کنید:

import string
from random import choices
def create_password(length=8, upper=False, lower=False, digit=False, pun=False):
    first_char_pool = []
    pool = []
    if upper:
        first_char_pool += string.ascii_uppercase
        pool += string.ascii_uppercase
    if lower:
        first_char_pool += string.ascii_lowercase
        pool += string.ascii_lowercase
    if digit:
        first_char_pool += string.digits
        pool += string.digits
    if pun:
        pool += string.punctuation
    if not first_char_pool:
        first_char_pool = string.ascii_letters
    first_char = choices(first_char_pool, k=1)
    rest_of_password = choices(pool, k=length-1)
    return ''.join(first_char + rest_of_password)
if __name__ == '__main__':
    print(create_password(upper=True, lower=True, digit=True, pun=True))

 

بهترین پاسخ
محسن موحد ۱۳ آذر ۱۴۰۲، ۰۰:۳۸