求赞 求关注
如果你不想让一片好的文章被埋没,那就把他免费共享出来。
当然写的不怎么好,因为我才刚小学毕业。
如果想下载这里有链接 https://download.youkuaiyun.com/download/mc54321/91240180
正文开始
在编写这个程序我们需要导入random模块。
import random
random 模块是 Python 标准库中的一个模块,用于生成伪随机数。在许多场景下都非常有用,比如生成随机密码、随机抽样、模拟随机事件等。
然后我们可以生成一个列表,当然如果您想让密码更安全可以生成如下的一个列表。
mmk = ["1","2","3","4","5","6","7","8","9",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"!","@","#","$","%","^","&","*","<",">"]
接下来我们将要用random模块来生成随机的密码
mm = random.choices(mmk, k=10)
代码详细解释
random.choices():这是random模块里的一个函数,作用是从给定的序列里随机选取元素,而且选取的元素可以重复。mmk:作为random.choices()函数的第一个参数,代表用来选取元素的序列。在这段代码里,mmk是一个包含数字、大写字母、小写字母和特殊符号的列表,它是密码字符的候选集合。k=10:这是random.choices()函数的关键字参数,用来指定要选取的元素数量。这里设定为 10,意味着会从mmk列表里随机选取 10 个元素。mm:用于存储random.choices()函数返回的列表,该列表包含了随机选取的 10 个元素。
这段代码可有可无,但它可以测试程序是否真可以生成一段密码。
print(ksrmm)
接下来的这行代码是用户输入部分最重要的一部分
ksrmm = ''.join(mm)
代码组成分析
join()方法:这是 Python 字符串对象的一个内置方法,用于将可迭代对象(如列表、元组等)中的元素以指定的字符串作为分隔符连接起来。其语法为separator.join(iterable),其中separator是分隔符字符串,iterable是包含多个元素的可迭代对象。'':这是join()方法的调用者,代表一个空字符串。意味着在拼接列表mm中的元素时,元素之间不会插入任何额外的字符。mm:这是join()方法的参数,是一个列表。在你的代码里,mm是通过random.choices(mmk, k=10)生成的,包含 10 个随机选取的字符。
代码执行过程
- Python 解释器会调用空字符串
''的join()方法。 join()方法会遍历列表mm中的每个元素。- 按照顺序将列表
mm中的元素依次拼接起来,元素之间不添加任何分隔符。 - 最终将拼接好的字符串赋值给变量
ksrmm。
接下来就是让用户输入密码并检查密码是否正确。
# 等待用户输入并存储到变量中
user_input = input()
# 进入外层循环,持续获取用户输入并与随机生成的字符串 ksrmm 进行比较
while True:
if user_input == ksrmm: # 如果用户输入的内容与随机生成的字符串 ksrmm 完全相同,则打印 "密码正确" 并退出循环
print("密码正确")
break
else: # 如果用户输入的内容与随机生成的字符串 ksrmm 不同,则打印 "密码错误,请重新输入" 并继续等待用户输入
user_input = input("密码错误,请重新输入")
代码组成分析
-
user_input = input(),这行代码调用
input()函数获取用户输入,并将输入的内容以字符串形式存储到变量user_input里,方便后续与随机生成的密码进行比较。 -
while True: 这行代码创建了一个无限循环,
True是布尔常量,意味着循环条件永远为真,循环体会一直执行,直到遇到break语句才会跳出循环。 -
if user_input == ksrmm 这是一个条件判断语句,将用户输入的
user_input和之前随机生成的密码ksrmm进行比较。若两者相等,说明用户输入的密码正确,执行if代码块里的内容。 -
print("密码正确") 当
if条件判断为True时,执行这行代码,在控制台输出"密码正确"。 -
break
break是 Python 关键字,用于跳出当前所在的循环。在这里,当用户输入的密码正确时,执行break语句,结束while无限循环。 -
else: 当
if条件判断为False时,说明用户输入的密码错误,执行else代码块里的内容。 -
user_input = input("密码错误,请重新输入") 在
else代码块中,调用input()函数提示用户重新输入密码,并将新的输入内容存储到user_input变量里,接着进入下一次循环继续比较。
完整代码
'''
求赞 求关注
'''
print("这是一个密码生成器。")
import random #导入random模块
# 定义一个包含数字 1 - 9 和大写字母 A - Z 的列表
mmk = ["1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"!","@","#","$","%","^","&","*","<",">"]
# 从 mmk 列表中随机选取 10 个可重复的元素,结果存储在 mm 变量中
mm = random.choices(mmk, k=10)
#打印提示信息
print("我们先要进行一个密码验证")
# 将列表转换为字符串
ksrmm = ''.join(mm)
#打印ksrmm的值
print(ksrmm)
# 等待用户输入并存储到变量中
user_input = input()
# 进入外层循环,持续获取用户输入并与随机生成的字符串 ksrmm 进行比较
while True:
if user_input == ksrmm: # 如果用户输入的内容与随机生成的字符串 ksrmm 完全相同,则打印 "密码正确" 并退出循环
print("密码正确")
break
else: # 如果用户输入的内容与随机生成的字符串 ksrmm 不同,则打印 "密码错误,请重新输入" 并继续等待用户输入
user_input = input("密码错误,请重新输入")
906

被折叠的 条评论
为什么被折叠?



