当前位置:首页>python>一起学Python(015):从思路到代码@随机密码生成器

一起学Python(015):从思路到代码@随机密码生成器

  • 2026-10-11 08:24:50
一起学Python(015):从思路到代码@随机密码生成器

你是不是也经常遇到这种情况:注册新账号时,让你输入密码,想半天想不出一个既安全又好记的。最后不是用了生日,就是用了“123456”。今天我们就用Python写一个随机密码生成器,10几行代码,以后密码全靠它。

先搞清楚要解决什么问题

我们需要一个程序,让用户自己决定以下两项规则,即密码长度(比如8位、12位);是否包含特殊符号(如!@#$%)。

然后程序随机生成一串字符,包含大小写字母、数字,以及可选的特殊符号。

这就是一个典型的随机抽样问题——从一个字符池里随机挑出指定数量的字符,再拼起来。

设计思路

1. 定义字符池:先用string模块获取字母和数字。

2. 如果用户需要特殊符号,就把特殊符号加进池子。

3. 用random.choices()从池子里随机抽取指定数量的字符。

4. 用join()把抽取的字符拼接成字符串。

5. 输出密码。

完整代码

import random               # 导入随机模块,用于随机抽取

import string               # 导入字符串模块,获取字母数字常量

def generate_password(length=8, use_special=False):

    """生成随机密码,length长度,use_special是否包含特殊符号"""

    chars = string.ascii_letters + string.digits# 基础字符池:大小写字母 + 数字(string.ascii_letters=所有字母,string.digits=0-9)

    if use_special:         # 如果用户要求特殊符号

        chars += "!@#$%^&*" # 把常用特殊符号加入池子

        password_list = random.choices(chars, k=length) # 随机抽取length个字符(可重复抽取,列表形式)

        return ''.join(password_list)# 将列表中的字符拼接成字符串,空字符串作为连接符

if __name__ == "__main__":

    length = int(input("请输入密码长度(默认8位):") or 8)

# 获取用户输入的长度,用int()转换为整数

    special = input("是否包含特殊符号?(y/n):").lower() in ['y', 'yes'] # 获取是否包含特殊符号,输入y/Y/yes都视为True

    password = generate_password(length, special)# 调用生成函数,得到密码

    print(f"生成的密码是:{password}")# 输出结果,f-string格式化

运行示例

以下是随机密码生成器的几个运行结果,每次运行结果都不同,保证唯一性,供参考:
1.密码长度6且不包括特殊符号:

2.密码长度8且包括特殊符号:

3.密码长度12且包括特殊符号

不到20行代码,我们就实现了一个实用的随机密码生成器。它用到了random、string两个标准库,还用函数封装、条件判断、输入输出等基础语法。以后注册网站,跑一下这个程序,瞬间得到一个高强度密码,既安全又省心。

你也可以把它改成交互式菜单,甚至用tkinter做个图形界面。动手试试吧!

精彩回顾:

一起学Python(014):占位符怎么用?

一起学Python(013):从思路到代码@循环打印图案

一起学Python(012):从思路到代码@登录验证器

一起学Python(011):从思路到代码@出租车计费

一起学Python(010):画同心圆的想与写

一起学Python(009):从零开始学绘图@turtle库使用

一起学Python(008):站在巨人的肩膀上编程@Python库引用

一起学Python(007):Python赋值语句轻松入门@每日饮水记录器

一起学Python(006):分支控制结构让程序学会“做选择”@成绩评定案例

一起学Python(005):从斐波那契数列看循环控制结构

一起学Python(004):Python程序三种控制结构:顺序、分支和循环

一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”

一起学Python(002):计算机的“数字秘密”——0和1如何统治世界?

一起学Python(001):为什么文科生也要学Python?

欢迎【点赞】+【转发】❤️

最新文章

随机文章