وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش تولید رشته های تصادفی در پایتون

0 79
زمان لازم برای مطالعه: 7 دقیقه


معرفی

رشته های تصادفی می توانند در سناریوهای مختلف بسیار مفید باشند. می توانید از آنها برای ایجاد رمزهای عبور قوی، ایجاد شناسه های منحصر به فرد و حتی به عنوان کمک ارزشمند در آزمایش و اعتبار سنجی استفاده کنید. پایتون داخلی random و string ماژول‌ها تولید رشته‌های تصادفی متناسب با نیازهای خاص شما را آسان می‌کنند.

در این راهنما، مروری جامع خواهیم داشت روی روش تولید رشته های تصادفی در پایتون ما اصول اولیه را پوشش خواهیم داد random و string ماژول‌ها، چند تکنیک ساده تولید رشته تصادفی را به شما نشان می‌دهند و برای کسانی از شما که خواهان پیچیدگی بیشتری هستند، به روش‌های پیشرفته‌تر بروید. بنابراین، بیایید شروع کنیم!

بازگشت به اصول اولیه: تصادفی و رشته ماژول ها در پایتون

قبل از وارد شدن به تولید رشته های تصادفی، بیایید با پایتون آشنا شویم random و string ماژول ها، که ابزار اصلی ما برای این کار خواهند بود. هر دو ماژول بخشی از کتابخانه استاندارد پایتون، بنابراین نیازی به نصب بسته های اضافی ندارید.

این تصادفی مدول

این random ماژول توابع مختلفی را برای تولید اعداد تصادفی و انتخاب عناصر تصادفی از مجموعه ارائه می دهد. برای هدف این راهنما، ما فقط تمرکز می کنیم روی چند کارکرد:

  1. random.choice() – برمی‌گرداند a عنصر انتخاب شده به صورت تصادفی از یک دنباله غیر خالی (مانند یک لیست، چند تایی یا رشته). ما از آن برای انتخاب کاراکترهای جداگانه از مجموعه کاراکترهای خود هنگام تولید رشته های تصادفی استفاده می کنیم.
  2. random.sample() – برمی‌گرداند a لیست عناصر منحصر به فرد به طور تصادفی از توالی یا مجموعه ورودی انتخاب شده است. زمانی مفید است که می خواهید یک رشته تصادفی با مجموعه ای ثابت از کاراکترها بدون تکرار ایجاد کنید.

این رشته مدول

این string ماژول شامل چندین ثابت است که مجموعه کاراکترهای مختلف را نشان می‌دهند، که می‌توانیم از آنها برای ایجاد مجموعه کاراکترها برای تولید رشته‌های تصادفی استفاده کنیم. در اینجا برخی از مفیدترین ثابت ها آورده شده است:

  1. string.ascii_letters: رشته ای حاوی تمام حروف ASCII (هم کوچک و هم بزرگ).
  2. tring.digits: رشته ای حاوی تمام ارقام از 0 تا 9.
  3. string.punctuation: رشته ای حاوی تمام نویسه های نقطه گذاری ASCII.

روش تولید رشته تصادفی ساده

حالا که ما یک دسته داریم روی را random و string ماژول‌ها، بیایید به تولید رشته‌های تصادفی بپردازیم. در این بخش، یک رویکرد ساده را با استفاده از آن نشان خواهیم داد random.choice() و در مورد سفارشی کردن مجموعه کاراکترها مطابق با نیازهای شما بحث کنید.

استفاده کردن random.choice() برای تولید رشته تصادفی

در اینجا یک مثال اساسی از روش انجام این کار آورده شده است یک رشته تصادفی تولید کنید با استفاده از طول خاص random.choice(). ابتدا یک تابع تعریف می کنیم generate_random_string که استدلال می گیرد length نشان دهنده طول مورد نظر رشته تصادفی است. تمام کاراکترهای موجود (حروف، ارقام و علائم نگارشی) را با هم ترکیب می‌کند و سپس یک رشته تصادفی با طول مشخص شده با استفاده از درک لیست و random.choice() تابع. بعد از اینکه تابع را تعریف کردیم، فقط آن را با طول دلخواه فراخوانی می کنیم 10:

import random
import string


def generate_random_string(length):
    
    characters = string.ascii_letters + string.digits + string.punctuation
    
    random_string = ''.join(random.choice(characters) for _ in range(length))
    
    return random_string

length = 10
random_string = generate_random_string(length)
print(random_string)

این اراده print رشته تولید شده در terminal. به عنوان مثال، خروجی ممکن می تواند باشد:

7;0\4o}^d0

سفارشی کردن مجموعه کاراکترها

شما به راحتی می توانید مجموعه کاراکترها را با تغییر دادن آن سفارشی کنید characters متغیر در generate_random_string تابع. در اینجا چند نمونه از روش انجام این کار وجود دارد:

  • فقط حروف کوچک: characters = string.ascii_lowercase
  • فقط حروف بزرگ: characters = string.ascii_uppercase
  • رشته های الفبایی (حروف و ارقام، اما بدون علامت گذاری): characters = string.ascii_letters + string.digits

با استفاده از این تکنیک‌های ساده تولید رشته تصادفی و توانایی سفارشی کردن مجموعه کاراکترها، می‌توانید رشته‌های تصادفی ایجاد کنید که برای موارد مختلف کاربرد دارد.

پیشنهاد می‌کنیم بخوانید:  Python: Slice Notation روی چندتایی

روش تولید رشته های تصادفی با نیازهای خاص

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

اطمینان از حضور شخصیت های خاص

فرض کنید می خواهید یک رشته تصادفی ایجاد کنید که حداقل یک حرف بزرگ، یک حرف کوچک و یک رقم داشته باشد. بیایید موجود را اصلاح کنیم generate_random_string عملکرد برای برآوردن نیاز مورد نظر:

import random
import string

def generate_random_string(length):
    if length < 3:
        raise ValueError("Length must be at least 3 to ensure the presence of one uppercase, one lowercase, and one digit.")

    
    uppercase_char = random.choice(string.ascii_uppercase)
    lowercase_char = random.choice(string.ascii_lowercase)
    digit_char = random.choice(string.digits)

    
    remaining_chars = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(length - 3))

    
    combined_string = uppercase_char + lowercase_char + digit_char + remaining_chars

    
    random_string = ''.join(random.sample(combined_string, length))

    return random_string

length = 10
random_string = generate_random_string(length)
print(random_string)

در اینجا، ما را اصلاح کردیم generate_random_string تابع این است که ابتدا یک کاراکتر از هر دسته مورد نیاز (حرف بزرگ، حرف کوچک و رقم) انتخاب کنید و سپس بقیه رشته را با کاراکترهای تصادفی از مجموعه ترکیبی از حروف و اعداد پر کنید. سپس کاراکترها با استفاده از آن مخلوط می شوند random.sample() برای ایجاد رشته تصادفی نهایی

تولید رشته ها با مجموعه ای ثابت از کاراکترها

در برخی از سناریوها، ممکن است بخواهید یک رشته تصادفی با استفاده از یک مجموعه ثابت از کاراکترها بدون تکرار ایجاد کنید. در این صورت می توانید از random.sample() تابع:

import random
import string

def generate_random_string_from_fixed_set(characters, length):
    if length > len(characters):
        raise ValueError("Length cannot be greater than the number of characters in the fixed set.")

    random_string = ''.join(random.sample(characters, length))
    return random_string

fixed_set = string.ascii_uppercase + string.digits
length = 6
random_string = generate_random_string_from_fixed_set(fixed_set, length)
print(random_string)

در این مثال، generate_random_string_from_fixed_set تابع مجموعه ای ثابت از کاراکترها و طول دلخواه را به عنوان آرگومان می گیرد و با نمونه برداری از کاراکترها بدون جایگزینی، یک رشته تصادفی تولید می کند.

تکنیک های پیشرفته برای تولید رشته های تصادفی در پایتون

اکنون که برخی از روش‌های تولید رشته تصادفی اولیه و متوسط ​​را پوشش داده‌ایم، بیایید به تکنیک‌های پیشرفته‌تر بپردازیم. در این بخش، در مورد استفاده از secrets ماژول برای تولید رشته های تصادفی امن رمزنگاری و ایجاد توابع تولید رشته سفارشی.

با استفاده از اسرار ماژول رشته های تصادفی ایمن رمزنگاری شده

این secrets ماژول، معرفی شده در پایتون 3.6، توابعی را برای تولید اعداد تصادفی و رشته‌های امن رمزنگاری ارائه می‌دهد. این ماژول مخصوصاً هنگام ایجاد کلیدهای مخفی، نشانه‌ها یا رمزهای عبور، جایی که امنیت ضروری است، مفید است. در اینجا مثالی از روش ایجاد یک رشته تصادفی امن رمزنگاری با استفاده از secrets مدول:

import secrets
import string

def generate_secure_random_string(length):
    characters = string.ascii_letters + string.digits + string.punctuation
    
    random_string = ''.join(secrets.choice(characters) for _ in range(length))
    return random_string

length = 16
secure_random_string = generate_secure_random_string(length)
print(secure_random_string)

در این مثال، ما جایگزین کرده ایم random.choice() با secrets.choice() برای تولید یک رشته تصادفی امن رمزنگاری. بقیه کد مانند مثال تولید رشته تصادفی ساده باقی می ماند.

توجه داشته باشید: هنگام برخورد با هر سناریوی دنیای واقعی، توصیه می شود از آن استفاده کنید secrets ماژول بر روی مولد اعداد شبه تصادفی استاندارد در random ماژول، همانطور که اولی برای اهداف شبیه سازی و مدل سازی در نظر گرفته شده است، نه برای اهداف رمزنگاری یا امنیتی.

پیشنهاد می‌کنیم بخوانید:  append() vs extend() vs insert() در لیست های پایتون

ایجاد توابع سفارشی تولید رشته

گاهی اوقات، ممکن است لازم باشد رشته های تصادفی ایجاد کنید که از الگوها یا قوانین خاصی پیروی می کنند. در چنین مواردی، می‌توانید توابع تولید رشته سفارشی را با استفاده از ترکیبی از اینها ایجاد کنید random و string ماژول ها، همراه با توابع داخلی پایتون یا منطق سفارشی خودتان. بیایید آن را نشان دهیم روی مثالی از یک مولد رشته تصادفی سفارشی که رشته هایی با حروف صدادار و صامت متناوب ایجاد می کند:

import random

def generate_alternating_string(length):
    vowels = 'aeiou'
    consonants = 'bcdfghjklmnpqrstvwxyz'

    random_string = ''
    for i in range(length):
        if i % 2 == 0:
            random_string += random.choice(consonants)
        else:
            random_string += random.choice(vowels)

    return random_string

length = 10
alternating_string = generate_alternating_string(length)
print(alternating_string)

در این مثال، generate_alternating_string تابع یک رشته تصادفی تولید می کند که در آن کاراکترهای دارای نمایه زوج صامت هستند و کاراکترهای نمایه شده فرد مصوت هستند.

مثال ها و موارد استفاده

اکنون می‌توانیم نگاهی به موارد کاربردی و نمونه‌هایی از تکنیک‌هایی که تا کنون آموخته‌ایم بیاندازیم.

مولد رمز تصادفی در پایتون

تولید رمزهای عبور تصادفی و قوی برای حفظ امنیت حساب های کاربری بسیار مهم است. با استفاده از تکنیک هایی که بحث کردیم، می توانید تابعی برای تولید رمزهای عبور تصادفی که شرایط خاص را برآورده می کنند ایجاد کنید:

import random
import string

def generate_random_password(length):
    if length < 4:
        raise ValueError("Length must be at least 4 to ensure a strong password.")

    uppercase_char = random.choice(string.ascii_uppercase)
    lowercase_char = random.choice(string.ascii_lowercase)
    digit_char = random.choice(string.digits)
    special_char = random.choice(string.punctuation)

    remaining_chars = ''.join(random.choice(string.ascii_letters + string.digits + string.punctuation) for _ in range(length - 4))

    combined_password = uppercase_char + lowercase_char + digit_char + special_char + remaining_chars
    random_password = ''.join(random.sample(combined_password, length))

    return random_password

password_length = 12
random_password = generate_random_password(password_length)
print(random_password)

مولد شناسه منحصر به فرد در پایتون

شناسه های منحصر به فرد برای تولید کلیدها، نام فایل ها یا شناسه های منحصر به فرد مفید هستند. بیایید نگاهی به مثالی از تابعی بیندازیم که یک رشته الفبایی منحصر به فرد تولید می کند:

import random
import string

def generate_unique_id(length):
    characters = string.ascii_letters + string.digits
    unique_id = ''.join(random.choice(characters) for _ in range(length))
    return unique_id

id_length = 10
unique_id = generate_unique_id(id_length)
print(unique_id)

تست و اعتبارسنجی با ورودی های تصادفی در پایتون

رشته های تصادفی می توانند برای آزمایش و اعتبارسنجی نرم افزار با تولید داده های ورودی تصادفی مفید باشند. این می‌تواند به کشف مشکلاتی که ممکن است با داده‌های آزمایشی که به‌صورت دستی ساخته شده‌اند، آشکار نشود:

import random
import string

def generate_random_email():
    username_length = random.randint(5, 10)
    domain_length = random.randint(3, 7)
    tld_length = random.randint(2, 4)

    username = generate_random_string(username_length)
    domain = generate_random_string(domain_length)
    tld = generate_random_string(tld_length)

    return f"{username}@{domain}.{tld}"

random_email = generate_random_email()
print(random_email)

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

نتیجه

تولید رشته های تصادفی در پایتون یک مهارت ارزشمند است که می تواند در سناریوهای مختلف از جمله تولید رمز عبور، ایجاد شناسه منحصر به فرد و تست/ اعتبارسنجی با ورودی های تصادفی استفاده شود. با کاوش در random، string، و secrets ماژول‌ها، ما به شما نشان داده‌ایم که چگونه رشته‌های تصادفی را با استفاده از تکنیک‌های ساده، متوسط ​​و پیشرفته ایجاد کنید که طیف وسیعی از نیازها را برآورده می‌کند.

ما روش تولید رشته های تصادفی با مجموعه کاراکترهای خاص، انجام شرایط خاص، و حتی ایجاد رشته های تصادفی امن رمزنگاری شده را پوشش داده ایم. با این دانش، اکنون می توانید با اطمینان رشته های تصادفی را در پایتون تولید کنید که نیازهای شما را برآورده می کند، چه برای پروژه های شخصی و چه برای برنامه های حرفه ای.

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

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-01 03:49:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید