日常练习

作为大三学生,有时候课程作业和项目压力大,反而容易忽略了最基础的代码练习。最近我给自己定了个小目标:每天不管多忙,都抽30分钟,用Python写点小东西,纯粹为了保持“代码手感”和解决问题的思维敏捷度。

今日小练习:自动生成随机密码

我们打算给我们小组以前的项目里的用户批量生成账号,手动想密码太麻烦,干脆写个脚本自动生成。

需求拆解

  1. 长度可定制:比如默认8位,但可以指定更长。
  2. 字符类型丰富:包含大小写字母、数字、特殊符号(!@#$%),增强安全性。
  3. 避免混淆字符:比如小写'l'和数字'1',大写'O'和数字'0',尽量排除,防止用户看错。

实现

Python的random和string模块简直是神器,十几行代码就能搞定。

import random
import string

def generate_password(length=8):
    # 定义字符池,排除容易混淆的字符
    # 小写字母去掉 'l' 和 'o'
    lowercase = 'abcdefghijkmnpqrstuvwxyz'
    # 大写字母去掉 'I' 和 'O'
    uppercase = 'ABCDEFGHJKLMNPQRSTUVWXYZ'
    digits = '23456789'  # 数字去掉 '0' 和 '1'
    symbols = '!@#$%&*'  # 常用特殊符号

    # 组合所有字符
    all_chars = lowercase + uppercase + digits + symbols

    # 确保每种类型至少有一个字符(强密码要求)
    password = [
        random.choice(lowercase),
        random.choice(uppercase),
        random.choice(digits),
        random.choice(symbols)
    ]

    # 填充剩余长度
    for i in range(length - 4):
        password.append(random.choice(all_chars))

    # 打乱顺序,避免前四位总是固定的类型
    random.shuffle(password)

    # 拼接成字符串
    return ''.join(password)

# 生成5个密码试试
for _ in range(5):
    print(generate_password(10))

运行结果:

跑了一下,生成了类似这样的密码:

-7G#k9m2S@b

-s8$Tp5M!zK

-W3&jFq9#eR

看起来符合要求。

小结:

虽然这个脚本很简单,但这个过程让我重新温习了:

-字符串操作:string模块的使用。

-列表推导和随机采样:random.shuffle()的打乱技巧。

-需求边界:考虑到了易混淆字符的排除。

posted @ 2026-02-22 15:39  老汤姆233  阅读(6)  评论(0)    收藏  举报