از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش تولید رشته های تصادفی در پایتون
سرفصلهای مطلب
معرفی
رشته های تصادفی می توانند در سناریوهای مختلف بسیار مفید باشند. می توانید از آنها برای ایجاد رمزهای عبور قوی، ایجاد شناسه های منحصر به فرد و حتی به عنوان کمک ارزشمند در آزمایش و اعتبار سنجی استفاده کنید. پایتون داخلی random
و string
ماژولها تولید رشتههای تصادفی متناسب با نیازهای خاص شما را آسان میکنند.
در این راهنما، مروری جامع خواهیم داشت روی روش تولید رشته های تصادفی در پایتون ما اصول اولیه را پوشش خواهیم داد
random
وstring
ماژولها، چند تکنیک ساده تولید رشته تصادفی را به شما نشان میدهند و برای کسانی از شما که خواهان پیچیدگی بیشتری هستند، به روشهای پیشرفتهتر بروید. بنابراین، بیایید شروع کنیم!
بازگشت به اصول اولیه: تصادفی و رشته ماژول ها در پایتون
قبل از وارد شدن به تولید رشته های تصادفی، بیایید با پایتون آشنا شویم random
و string
ماژول ها، که ابزار اصلی ما برای این کار خواهند بود. هر دو ماژول بخشی از کتابخانه استاندارد پایتون، بنابراین نیازی به نصب بسته های اضافی ندارید.
این تصادفی مدول
این random
ماژول توابع مختلفی را برای تولید اعداد تصادفی و انتخاب عناصر تصادفی از مجموعه ارائه می دهد. برای هدف این راهنما، ما فقط تمرکز می کنیم روی چند کارکرد:
random.choice()
– برمیگرداند a عنصر انتخاب شده به صورت تصادفی از یک دنباله غیر خالی (مانند یک لیست، چند تایی یا رشته). ما از آن برای انتخاب کاراکترهای جداگانه از مجموعه کاراکترهای خود هنگام تولید رشته های تصادفی استفاده می کنیم.random.sample()
– برمیگرداند a لیست عناصر منحصر به فرد به طور تصادفی از توالی یا مجموعه ورودی انتخاب شده است. زمانی مفید است که می خواهید یک رشته تصادفی با مجموعه ای ثابت از کاراکترها بدون تکرار ایجاد کنید.
این رشته مدول
این string
ماژول شامل چندین ثابت است که مجموعه کاراکترهای مختلف را نشان میدهند، که میتوانیم از آنها برای ایجاد مجموعه کاراکترها برای تولید رشتههای تصادفی استفاده کنیم. در اینجا برخی از مفیدترین ثابت ها آورده شده است:
string.ascii_letters
: رشته ای حاوی تمام حروف ASCII (هم کوچک و هم بزرگ).tring.digits
: رشته ای حاوی تمام ارقام از 0 تا 9.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
با استفاده از این تکنیکهای ساده تولید رشته تصادفی و توانایی سفارشی کردن مجموعه کاراکترها، میتوانید رشتههای تصادفی ایجاد کنید که برای موارد مختلف کاربرد دارد.
روش تولید رشته های تصادفی با نیازهای خاص
در برخی موارد، ممکن است نیاز به تولید رشتههای تصادفی داشته باشید که شرایط خاصی را برآورده کنند، مانند داشتن حداقل یک حرف بزرگ، یک حرف کوچک و یک رقم. در این بخش، روش ایجاد رشته های تصادفی که این شرایط را برآورده می کنند را به شما نشان خواهیم داد.
اطمینان از حضور شخصیت های خاص
فرض کنید می خواهید یک رشته تصادفی ایجاد کنید که حداقل یک حرف بزرگ، یک حرف کوچک و یک رقم داشته باشد. بیایید موجود را اصلاح کنیم 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
ماژول، همانطور که اولی برای اهداف شبیه سازی و مدل سازی در نظر گرفته شده است، نه برای اهداف رمزنگاری یا امنیتی.
ایجاد توابع سفارشی تولید رشته
گاهی اوقات، ممکن است لازم باشد رشته های تصادفی ایجاد کنید که از الگوها یا قوانین خاصی پیروی می کنند. در چنین مواردی، میتوانید توابع تولید رشته سفارشی را با استفاده از ترکیبی از اینها ایجاد کنید 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