Python案例怎么实现用户登录?

wen python案例 47

本文目录导读:

Python案例怎么实现用户登录?

  1. 1️⃣ 最简单的控制台登录(硬编码用户名密码)
  2. 2️⃣ 带循环和次数限制(防止暴力尝试)
  3. 3️⃣ 使用字典存储多个用户
  4. 4️⃣ 文件存储用户信息(持久化)
  5. 5️⃣ 密码加密存储(安全版本)
  6. 6️⃣ 综合版(推荐用于练习项目)
  7. 不同使用场景推荐

下面给你几个用户登录的 Python 案例,从最简单的控制台版本一直到带数据库和密码加密的版本,你可以直接复制运行或者扩展成自己的项目。


1️⃣ 最简单的控制台登录(硬编码用户名密码)

适合刚学完 input / if 语句的同学。

# 硬编码的用户名和密码
USERNAME = "admin"
PASSWORD = "123456"
print("===== 用户登录 =====")
username = input("用户名:")
password = input("密码:")
if username == USERNAME and password == PASSWORD:
    print("✅ 登录成功!欢迎回来,", username)
else:
    print("❌ 用户名或密码错误")

2️⃣ 带循环和次数限制(防止暴力尝试)

加入 while 循环,最多试 3 次。

USERNAME = "admin"
PASSWORD = "123456"
max_attempts = 3
for attempt in range(1, max_attempts + 1):
    print(f"\n第 {attempt} 次登录尝试")
    username = input("用户名:")
    password = input("密码:")
    if username == USERNAME and password == PASSWORD:
        print("✅ 登录成功!")
        break
    else:
        print(f"❌ 登录失败,剩余 {max_attempts - attempt} 次机会")
else:
    print("⚠️ 超过最大尝试次数,已锁定。")

3️⃣ 使用字典存储多个用户

不用硬编码,适合管理少量用户。

users = {
    "alice": "pass123",
    "bob": "bob2020",
    "admin": "root"
}
username = input("用户名:")
password = input("密码:")
if username in users and users[username] == password:
    print("✅ 登录成功!")
else:
    print("❌ 用户名或密码错误")

4️⃣ 文件存储用户信息(持久化)

把用户数据存在 users.txt,每行格式:username:password

import os
def load_users(filename="users.txt"):
    users = {}
    if os.path.exists(filename):
        with open(filename, "r") as f:
            for line in f:
                line = line.strip()
                if ":" in line:
                    u, p = line.split(":", 1)
                    users[u] = p
    return users
def register_user(username, password, filename="users.txt"):
    with open(filename, "a") as f:
        f.write(f"{username}:{password}\n")
    print("✅ 注册成功!")
users = load_users()
if not users:
    print("还没有用户,请先注册一个。")
    new_user = input("新用户名:")
    new_pass = input("密码:")
    register_user(new_user, new_pass)
    users = load_users()
username = input("用户名:")
password = input("密码:")
if username in users and users[username] == password:
    print("✅ 登录成功!")
else:
    print("❌ 登录失败")

5️⃣ 密码加密存储(安全版本)

使用 hashlib 对密码进行 SHA256 加密,不保存明文密码。

import hashlib
import json
import os
PASSWORD_FILE = "users_secure.json"
def hash_password(password):
    return hashlib.sha256(password.encode()).hexdigest()
def load_users():
    if os.path.exists(PASSWORD_FILE):
        with open(PASSWORD_FILE, "r") as f:
            return json.load(f)
    return {}
def save_users(users):
    with open(PASSWORD_FILE, "w") as f:
        json.dump(users, f, indent=2)
def register():
    users = load_users()
    username = input("新用户名:")
    if username in users:
        print("❌ 用户名已存在")
        return
    password = input("密码:")
    users[username] = hash_password(password)
    save_users(users)
    print("✅ 注册成功(密码已加密存储)")
def login():
    users = load_users()
    username = input("用户名:")
    password = input("密码:")
    if username in users and users[username] == hash_password(password):
        print("✅ 登录成功!")
    else:
        print("❌ 用户名或密码错误")
# 主菜单
while True:
    print("\n1. 注册  2. 登录  3. 退出")
    choice = input("请选择:")
    if choice == "1":
        register()
    elif choice == "2":
        login()
    elif choice == "3":
        break
    else:
        print("无效输入")

6️⃣ 综合版(推荐用于练习项目)

结合了 文件 + 加密 + 注册 + 登录 + 次数限制

import hashlib
import json
import os
USER_FILE = "users_data.json"
def encrypt(pwd):
    return hashlib.sha256(pwd.encode()).hexdigest()
def load():
    if os.path.exists(USER_FILE):
        with open(USER_FILE, "r") as f:
            return json.load(f)
    return {}
def save(db):
    with open(USER_FILE, "w") as f:
        json.dump(db, f, indent=2)
def register():
    db = load()
    u = input("新用户名:")
    if u in db:
        print("用户名已存在")
        return
    p1 = input("密码:")
    p2 = input("再次输入密码:")
    if p1 != p2:
        print("两次密码不一致")
        return
    db[u] = encrypt(p1)
    save(db)
    print("注册成功!")
def login():
    db = load()
    u = input("用户名:")
    p = input("密码:")
    if u in db and db[u] == encrypt(p):
        print("登录成功!")
        return True
    else:
        print("用户名或密码错误")
        return False
def main():
    while True:
        print("\n1. 注册  2. 登录  3. 退出")
        c = input("选择:")
        if c == "1":
            register()
        elif c == "2":
            login()
        elif c == "3":
            break
        else:
            print("无效输入")
if __name__ == "__main__":
    main()

不同使用场景推荐

场景 推荐案例
小白练习 案例 1、2
教学演示 案例 3、4
小型项目 案例 5(加密文件)
需要注册功能 案例 6(综合版)

如果你还需要 GUI 版本(Tkinter)或 Web 版本(Flask),也可以告诉我,我可以继续帮你写。

抱歉,评论功能暂时关闭!