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

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

如何生成验证码_随机数字密码_真随机 回忆上次内容

  • 上次主要是 随机数的生成

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

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

  • 包括 两端 a,b

添加图片注释,不超过 140 字(可选)

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

提问

添加图片注释,不超过 140 字(可选)

  • 但是这样的话

  • 最小值 也得是 100000

  • 第1位 不能是0 了

再问

添加图片注释,不超过 140 字(可选)

  • 看起来做了个循环

  • 代码可以理解

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

  • 运行成功

添加图片注释,不超过 140 字(可选)

  • 我想要结果

  • 不止包括数字

  • 还包括大小写字母

添加图片注释,不超过 140 字(可选)

  • 可以吗?

提问

添加图片注释,不超过 140 字(可选)

import random import 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

结果

添加图片注释,不超过 140 字(可选)

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

  • 还包括符号

再问

添加图片注释,不超过 140 字(可选)

import random import 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

结果

  • 结果有可能没有某类符号

  • 想要结果必须包含

  • 数字

  • 大写字母

  • 小写字母

  • 符号

添加图片注释,不超过 140 字(可选)

  • 在原来的上下文基础上

  • 继续追加提问

提问

添加图片注释,不超过 140 字(可选)

import random import 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 + punctuation for _ 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)

添加图片注释,不超过 140 字(可选)

  • 那么随机数

  • 也就 被 钳成

  • 固定数值 了

添加图片注释,不超过 140 字(可选)

  • 如果下限高于上限呢?

胡乱尝试

  • 程序报错

添加图片注释,不超过 140 字(可选)

  • ValueError

  • 空的范围

  • 对于randrange函数

  • 去找找

  • 这个 报错信息

搜索

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

  • 反向搜索

  • /empty range for randrange

添加图片注释,不超过 140 字(可选)

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

位置

  • 按n查找下一个匹配

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

添加图片注释,不超过 140 字(可选)

  • 天哪 😱

  • 随机也是有章可循的

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

添加图片注释,不超过 140 字(可选)

  • 也就是说

  • 随机 也是 可控 的?! 😱

幸运大转盘

  • 物理世界 中的随机

  • 认为是真随机

  • 上帝扔骰子

  • 存在薛定谔的猫

添加图片注释,不超过 140 字(可选)

  • 但可能 在概率上 动心思

  • 盲盒

  • 大乐透

对比

  • 虚拟世界的随机

  • ssr

  • 抽卡

添加图片注释,不超过 140 字(可选)

  • 除了算法本身的 控制之外

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

  • 不存在 真随机

  • ai怎么看呢?

计算机中的随机

添加图片注释,不超过 140 字(可选)

总结

  • 这次输出了

  • 随机数字 密码

添加图片注释,不超过 140 字(可选)

  • 这下知道

  • 平时收到的验证码

  • 怎么来的了

添加图片注释,不超过 140 字(可选)

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值