使用Python生成随机字符串的程序
随机指的是数据或信息按照任意顺序排列。在Python中, random模块用于生成随机字符串。随机字符串由数字、字符和标点符号序列组成,可以包含任何模式。随机模块包含两个方法 random.choice() 和 secrets.choice() ,用于生成安全字符串。让我们了解如何使用random.choice()和secrets.choice()方法在python中生成随机字符串。
使用 random.choice()
random.choice() 函数被用于在 python字符串 中生成可以以任意顺序重复字符串的字符和数字序列。
创建一个使用 random.choices() 函数生成随机字符串的程序。
Random_str.py
import string
import random # define the random module
S = 10 # number of characters in the string.
# call random.choices() string module to find the string in Uppercase + numeric data.
ran = ''.join(random.choices(string.ascii_uppercase + string.digits, k = S))
print("The randomly generated string is : " + str(ran)) # print the random data
输出:
以下是random模块中用于生成随机字符串的方法。
方法 | 描述 |
---|---|
String.ascii_letters | 返回一个包含大写和小写字符的随机字符串。 |
String_ascii_uppercase | 这是一个随机字符串方法,只返回一个包含大写字母的字符串。 |
String.ascii_lowercase | 这是一个随机字符串方法,只返回一个包含小写字母的字符串。 |
String.digits | 这是一个随机字符串方法,返回一个包含数字字符的字符串。 |
String.punctuation | 这是一个随机字符串方法,返回一个包含标点字符的字符串。 |
生成一个包含大写和小写字母的随机字符串
UprLwr.py
# write a program to generate the random string in upper and lower case letters.
import random
import string
def Upper_Lower_string(length): # define the function and pass the length as argument
# Print the string in Lowercase
result = ''.join((random.choice(string.ascii_lowercase) for x in range(length))) # run loop until the define length
print(" Random string generated in Lowercase: ", result)
# Print the string in Uppercase
result1 = ''.join((random.choice(string.ascii_uppercase) for x in range(length))) # run the loop until the define length
print(" Random string generated in Uppercase: ", result1)
Upper_Lower_string(10) # define the length
输出:
指定字符的随机字符串
Specific.py
# create a program to generate the random string of given letters.
import random
import string
def specific_string(length):
sample_string = 'pqrstuvwxy' # define the specific string
# define the condition for random string
result = ''.join((random.choice(sample_string)) for x in range(length))
print(" Randomly generated string is: ", result)
specific_string(8) # define the length
specific_string(10)
输出:
注意:在python程序中使用random.choice()方法来重复相同字符字符串。如果我们不想显示重复的字符,应该使用random.sample()函数。
生成一个不重复相同字符的随机字符串
WithoutRepeat.py
# create a program to generate a string with or without repeating the characters.
import random
import string
print("Use of random.choice() method")
def specific_string(length):
letters = string.ascii_lowercase # define the lower case string
# define the condition for random.choice() method
result = ''.join((random.choice(letters)) for x in range(length))
print(" Random generated string with repetition: ", result)
specific_string(8) # define the length
specific_string(10)
print("") # print the space
print("Use of random.sample() method")
def WithoutRepeat(length):
letters = string.ascii_lowercase # define the specific string
# define the condition for random.sample() method
result1 = ''.join((random.sample(letters, length)))
print(" Random generated string without repetition: ", result1)
WithoutRepeat(8) # define the length
WithoutRepeat(10)
输出:
如上所述输出中可以看到,random.sample()方法返回一个字符串,其中所有字符都是唯一且不重复的。而random.choice()方法返回一个可能包含重复字符的字符串。所以,我们可以说如果我们想要生成一个唯一的随机字符串,就使用random.sample()方法。
生成一个由固定字母和数字组成的随机字符串
例如,假设我们想要生成一个随机生成的包含五个字母和四个数字的字母数字字符串。我们需要将这些参数定义到函数中。
让我们编写一个程序来生成包含固定数量字母和数字的字母数字字符串。
fixedString.py
import random
import string
def random_string(letter_count, digit_count):
str1 = ''.join((random.choice(string.ascii_letters) for x in range(letter_count)))
str1 += ''.join((random.choice(string.digits) for x in range(digit_count)))
sam_list = list(str1) # it converts the string to list.
random.shuffle(sam_list) # It uses a random.shuffle() function to shuffle the string.
final_string = ''.join(sam_list)
return final_string
# define the length of the letter is eight and digits is four
print("Generated random string of first string is:", random_string(8, 4))
# define the length of the letter is seven and digits is five
print("Generated random string of second string is:", random_string(7, 5))
输出:
使用secrets.choice()
secrets.choice()方法用于生成比random.choice()更安全的随机字符串。它是一个密码学上随机的字符串生成器,使用secrets.choice()方法可以确保没有两个进程可以同时获得相同的结果。
让我们编写一个程序,使用secrets.choice方法打印一个安全的随机字符串。
Secret_str.py
import random
import string
import secrets # import package
num = 10 # define the length of the string
# define the secrets.choice() method and pass the string.ascii_letters + string.digits as an parameters.
res = ''.join(secrets.choice(string.ascii_letters + string.digits) for x in range(num))
# print the Secure string
print("Secure random string is :"+ str(res))
输出:
使用random模块的不同方法生成安全的随机字符串。
让我们编写一个程序,使用secrets.choice()的不同方法来打印安全的随机字符串。
Secret.py
# write a program to display the different random string method using the secrets.choice().
# imports necessary packages
import random
import string
import secrets
num = 10 # define the length of the string
# define the secrets.choice() method and pass the string.ascii_letters + string.digits as an parameters.
res = ''.join(secrets.choice(string.ascii_letters + string.digits) for x in range(num))
# Print the Secure string with the combination of ascii letters and digits
print("Secure random string is :"+ str(res))
res = ''.join(secrets.choice(string.ascii_letters) for x in range(num))
# Print the Secure string with the combination of ascii letters
print("Secure random string is :"+ str(res))
res = ''.join(secrets.choice(string.ascii_uppercase) for x in range(num))
# Print the Secure string in Uppercase
print("Secure random string is :"+ str(res))
res = ''.join(secrets.choice(string.ascii_lowercase) for x in range(num))
# Print the Secure string in Lowercase
print("Secure random string is :"+ str(res))
res = ''.join(secrets.choice(string.ascii_letters + string.punctuation) for x in range(num))
# Print the Secure string with the combination of letters and punctuation
print("Secure random string is :"+ str(res))
res = ''.join(secrets.choice(string.digits) for x in range(num))
# Print the Secure string using string.digits
print("Secure random string is :"+ str(res))
res = ''.join(secrets.choice(string.ascii_letters + string.digits + string.punctuation) for x in range(num))
# Print the Secure string with the combonation of letters, digits and punctuation
print("Secure random string is :"+ str(res))
输出: