
你是不是也经常遇到这种情况:注册新账号时,让你输入密码,想半天想不出一个既安全又好记的。最后不是用了生日,就是用了“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格式化 |
运行示例

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


不到20行代码,我们就实现了一个实用的随机密码生成器。它用到了random、string两个标准库,还用函数封装、条件判断、输入输出等基础语法。以后注册网站,跑一下这个程序,瞬间得到一个高强度密码,既安全又省心。
你也可以把它改成交互式菜单,甚至用tkinter做个图形界面。动手试试吧!
精彩回顾:
一起学Python(009):从零开始学绘图@turtle库使用
一起学Python(008):站在巨人的肩膀上编程@Python库引用
一起学Python(007):Python赋值语句轻松入门@每日饮水记录器
一起学Python(006):分支控制结构让程序学会“做选择”@成绩评定案例
一起学Python(004):Python程序三种控制结构:顺序、分支和循环
一起学Python(003):Python代码书写规则:那些让程序崩溃的“小细节”
一起学Python(002):计算机的“数字秘密”——0和1如何统治世界?
一起学Python(001):为什么文科生也要学Python?
欢迎【点赞】+【转发】❤️
