本文目录导读:

- 1️⃣ 最简单的控制台登录(硬编码用户名密码)
- 2️⃣ 带循环和次数限制(防止暴力尝试)
- 3️⃣ 使用字典存储多个用户
- 4️⃣ 文件存储用户信息(持久化)
- 5️⃣ 密码加密存储(安全版本)
- 6️⃣ 综合版(推荐用于练习项目)
- 不同使用场景推荐
下面给你几个用户登录的 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),也可以告诉我,我可以继续帮你写。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播