「oeasy」python080如何生成验证码_随机数字密码_真随机

360影视 日韩动漫 2025-03-29 10:40 2

摘要:import random# 生成一个6位的随机数字,每位数字可以是0-9random_number = ""for _ in range(6):random_digit = random.randint(0, 9)random_number += str(r

如何生成验证码_随机数字密码_真随机

回忆上次内容

上次主要是 随机数的生成

包括 两端 a,b

使用 random包中的 randint(a,b)函数

生成[a,b]范围中的整数

手机验证码 可以自己生成吗?🤔

提问

但是这样的话

最小值 也得是 100000

第1位 不能是0 了

再问

看起来做了个循环

代码可以理解

import random# 生成一个6位的随机数字,每位数字可以是0-9random_number = ""for _ in range(6):
random_digit = random.randint(0, 9)
random_number += str(random_digit)# 显示生成的随机数字print(f"生成的6位随机数字是: {random_number}")

结果

运行成功

我想要结果

不止包括数字

还包括大小写字母

可以吗?

提问

import randomimport string# 定义字符集,包括数字、大写字母和小写字母characters = string.digits + string.ascii_uppercase + string.ascii_lowercase# 生成一个6位的随机字符串random_string = ""for _ in range(6):
random_char = random.choice(characters)
random_string += random_char# 显示生成的随机字符串print(f"生成的6位随机字符串是: {random_string}")

看起来 取值范围 扩大了

characters = string.digits + string.ascii_uppercase + string.ascii_lowercase

结果

想要出了数字、大小写字母

还包括符号

再问

import randomimport string# 定义字符集,包括数字、大写字母、小写字母和符号characters = string.digits + string.ascii_uppercase + string.ascii_lowercase + string.punctuation# 生成一个6位的随机字符串random_string = ""for _ in range(6):
random_char = random.choice(characters)
random_string += random_char# 显示生成的随机字符串print(f"生成的6位随机字符串是: {random_string}")

取值范围 更大了

characters = string.digits + string.ascii_uppercase + string.ascii_lowercase + string.punctuation

结果

结果有可能没有某类符号

想要结果必须包含

数字

大写字母

小写字母

符号

在原来的上下文基础上

继续追加提问

提问

import randomimport string# 定义字符集digits = string.digits # 数字uppercase_letters = string.ascii_uppercase # 大写字母lowercase_letters = string.ascii_lowercase # 小写字母punctuation = string.punctuation # 符号# 确保生成的字符串中包含至少一个数字、一个大写字母、一个小写字母和一个符号random_string = [ random.choice(digits), random.choice(uppercase_letters), random.choice(lowercase_letters), random.choice(punctuation)
]# 从所有字符集中选择剩余的两个字符all_characters = digits + uppercase_letters + lowercase_letters + punctuationfor _ in range(2):
random_string.append(random.choice(all_characters))# 打乱顺序以确保随机性random.shuffle(random_string)# 将列表转换为字符串random_string = ''.join(random_string)# 显示生成的随机字符串print(f"生成的6位随机字符串是: {random_string}")

四类字符 各来一个

剩下两个 随机得到

然后让顺序 随机

可以让 随机结果 固定下来 吗?

事无绝对

如果上限和下限 被钳位(clamp)

那么随机数

也就 被 钳成

固定数值 了

如果下限高于上限呢?

胡乱尝试

程序报错

ValueError

空的范围

对于randrange函数

去找找

这个 报错信息

搜索

在/usr/lib/python3.8/random.py

反向搜索

/empty range for randrange

真的找到了抛出异常的位置

位置

按n查找下一个匹配

可以找到具体报错的位置 226 行

天哪 😱

随机也是有章可循的

随机数 也是 算法计算得到的结果

也就是说

随机 也是 可控 的?! 😱

幸运大转盘

物理世界 中的随机

认为是真随机

上帝扔骰子

存在薛定谔的猫

但可能 在概率上 动心思

盲盒

大乐透

对比

虚拟世界的随机

ssr

抽卡

除了算法本身的 控制之外

随机函数 本身 也是可以 被控制的

不存在 真随机

ai怎么看呢?

计算机中的随机

总结

这次输出了

随机数字 密码

这下知道

平时收到的验证码

怎么来的了

计算机中 没有所谓的 真·随机

一般都是 依靠时间为变量 得到的 随机

AI 能如何 辅助我们编程呢?

我们下次再说~ 👋

蓝桥->https://www.lanqiao.cn/courses/3584

github->https://github.com/overmind1980/oeasy-python-tutorial

gitee->https://gitee.com/overmind1980/oeasypython

来源:肖潇科技观

相关推荐