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 字(可选)
-
计算机中 没有所谓的 真·随机
-
一般都是 依靠时间为变量 得到的 随机
-
AI 能如何 辅助我们编程呢?
-
我们下次再说~ 👋
-
github->https://github.com/overmind1980/oeasy-python-tutorial
-
gitee->oeasy教您玩转python教程: 面向零基础初学者的简明易懂的 Python3 入门课程,对没有编程经验的同学也非常友好。在vim下从浅入深,逐步学习。从基础入门学习到爬虫。