Python3学习实例上手(1)-----模拟登录认证
2024-09-03 02:23:20
要求:输入用户名、密码进行认证,认证成功则欢迎,若输错三次会锁定最后一次输入的用户
知识点归纳:字典操作(items()方法)、字符串操作(如strip()、split()等)、文件读写(for line in f 变迭代器)、while&else循环、if判断
其他:分清变量类型,不要混淆整数和字符串数据类型
源码:
# -*- coding:utf-8 -*-
# Author: WUJiang # 分别存储用户密码、用户锁定标志
info_pw = {}
info_lock = {}
# 读取txt中记录并对上述变量赋值
with open("user_info.txt", "r") as f:
for line in f:
line = line.strip()
name = line.split(" ")[0]
pw = line.split(" ")[1]
lock_flag = line.split(" ")[2]
info_pw[name] = pw
info_lock[name] = lock_flag # -------------用户登录-------------------
login_num = 0
while login_num < 3:
login_name = input("enter your name:")
login_pw = input("enter your password:")
if login_name in info_pw.keys():
if info_lock[login_name] == "": # 易遗漏""
if info_pw[login_name] == login_pw:
print("welcome %s log in" % login_name)
break
else:
print("wrong password")
else:
print("user has been locked, please contact to admin")
break
else:
print("user does not exist")
login_num += 1
else:
print("input num is out of limit")
print("%s is locked" % login_name)
info_lock[login_name] = "" # 被这里坑惨了!!!易遗漏""!!!
# ----若锁定标志更新,需将更新数据写回txt--------
with open("user_info.txt", "w") as f:
for i, j in info_pw.items():
data = i + " " + j + " " + info_lock[i] + "\n"
f.write(data)
最新文章
- [Windows] win7 配置Java开发环境
- socket的IO多路复用
- Centos minimal安装
- PARENT VIEW INVALIDATE
- Python开发入门与实战17-新浪云部署
- jq 修改input 标签的值
- beta-review阶段组员贡献分分配
- Redis 在新浪微博中的应用
- ios7.0结合storyborad实现页面跳转的总结
- 获取SQL段的执行时间
- sqlserver 2008 局域网跨服务器T-SQL操作(一)
- C#的Task和Java的Future
- [读书笔记]python3.5实现socket通讯(UDP)
- Lesson 3-2 语句:循环语句
- Ajax实现聊天室
- CentOS 7 配置nginx并默认强制使用https对http进行跳转
- SQL-17 获取当前(to_date=&#39;9999-01-01&#39;)薪水第二多的员工的emp_no以及其对应的薪水salary
- 编程实战——电影管理器之利用MediaInfo获取高清视频文件的相关信息
- 【python】网络编程-TCP协议套接字
- Eclipse中如何调整字体