Python 动手练: 生成随机数¶
本练习题重点介绍如何使用 random 模块和 secrets 模块生成随机数。
建议:根据提示完成练习后,再参考文末示例代码。
练习 1:随机生成 3 个能被 5 整除的整数¶
编写一个程序,生成 3 个介于 100 和 999 之间的随机整数,该整数可被 5 整除。
提示
使用 random 模块的randrange() 方法。
randrange() 方法返回指定递增基数集合中的一个随机数。
randrange() 方法的语法:
import random
random.randrange ([start,] stop [,step])
参数:
start -- 指定范围的开始值,包含在范围内。
stop -- 指定范围的结束值,不包含在范围内。
step -- 指定递增基数。
练习 2:幸运号码¶
编写一个程序,随机生成 100 个十位数字,并从中挑选两个作为幸运号码。
号码的长度必须为10位数字。
所有 100 个号码必须是唯一的。
提示
使用 randrange() 生成一个包含 100 个随机数字的列表。
然后使用 sample() 方法挑选 2 张幸运号码。
sample() 从序列中选择指定数量的唯一元素。用于无重复的随机抽样。
练习 3:随机密码¶
编写一个程序,使用 secrets 模块生成一个高度加密的六位随机数。
提示
伪随机数模块random生成的随机数并不随机,大多数情况下,如果不设置随机数种子,会按照系统时间来生成种子,进而生成随机数,若是用random生成的随机数当密码,那被破解的几率应该是很高的。
secrets是python3.6加入到标准库的,使用secrets模块,可以生成适用于处理机密信息(如密码,帐户身份验证,安全令牌)的加密强随机数。
SystemRandom() 使用OS提供的最高质量源生成随机数的类。
练习 4:随机选择一个字符¶
编写一个程序,从给定字符串中随机选择一个字符。
提示
choice() 方法返回一个列表,元组或字符串的随机项。
语法:
import random
random.choice( seq )
参数:
seq -- 可以是一个列表,元组或字符串。
练习 5:生成六位验证码¶
编写一个程序来生成六位验证码,验证码由大小写字母组成。
提示
使用 string 模块的 string.ascii_letters 常量,获取所有大小写字母。
使用 for 循环,通过 choice() 随机选择一个字符。
使用 join() 进行连接。
# 练习 1
import random
for n in range(3):
num = random.randrange(100, 1000, 5)
print(num)
# 练习 2
import random
list1 = []
for i in range(100):
list1.append(random.randrange(1000000000, 10000000000))
Lucky = random.sample(list1, 2)
print("幸运号码:", Lucky)
# 练习 3
import secrets
secretsGenerator = secrets.SystemRandom()
pws = secretsGenerator.randrange(100000, 999999)
print("随机密码:", pws)
# 练习 4
import random
str1 = 'zbxx.net'
char = random.choice(str1)
print("随机字符是:", char)
# 练习 5
import random
import string
str1 = ''
letters = string.ascii_letters
for i in range(6):
str1=str1+''.join(random.choice(letters))
print("验证码:", str1)
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!