首页 > 代码库 > python学习一:用户登录

python学习一:用户登录

一,用户登录需求:

1,用户名,密码要保存在文件中。

2,用户可以尝试登录三次,三次之后账户锁定,用户锁定信息保存在文件中,用户输入正确重置锁定信息。

程序代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
username = [] #-----------------------------------------------
for line in open(‘user.txt‘):
line=line.replace(‘\n‘,‘‘).split() #从user.txt文件中取出用户名,保存到列表username中
username.append(line[0]) #-----------------------------------------------

password = [] #-----------------------------------------------
for line in open(‘user.txt‘):
line=line.replace(‘\n‘,‘‘).split() #从user.txt文件中取出密码,保存到列表password中
password.append(line[1]) #-----------------------------------------------

counter = [] #-----------------------------------------------
for line in open(‘user.txt‘):
line=line.replace(‘\n‘,‘‘).split() #从user.txt文件中取出用户账户状态,保存到列表counter中
counter.append(line[2]) #-----------------------------------------------

new_counter = [] #-----------------------------------------------
for n in counter:
new_counter.append(int(n)) #将counter中的元素转换成数值型字符
counter = new_counter #-----------------------------------------------


flag = True
while flag:
if min(counter) < 3: #判断所有用户的状态,只要有用户可登录,就允许程序运行
usname = input("请输入用户名:")
if usname in username: #如果输入的用户名在用户列表中
p = username.index(usname) #确定输入的用户名在列表中的位置
while True:
if counter[p] < 3: #判断所选用户是否锁定
psword = input("请输入密码:")
if psword == password[p]:
print("恭喜!用户名,密码输入正确!")
counter[p] = 0 #-----------------------------------------------
newuser = open("user.txt",‘w‘)
for i in range(len(username)): #用户密码输入正确,重置用户状态,并写入用户文件
newuser.write(‘%s %s %d\n‘ % (username[i],password[i],counter[i]))
newuser.close() #-----------------------------------------------
flag = False #将最外层循环的值置为假,用来退出最终循环
break #退出当前循环
else:
print("用户名密码错误......")
counter[p] += 1 #计数器自加1
newuser = open("user.txt",‘w‘) #-----------------------------------------------
for i in range(len(username)): #将用户错误次数写入用户文件
newuser.write(‘%s %s %d\n‘ % (username[i],password[i],counter[i]))
newuser.close() #-----------------------------------------------
break

else:
print("此用户被锁定......") #判断用户状态为锁定后提示用户已定
break
else:
print("无此用户,请重新输入") #用户名输入错误,提示用户重新输入
else:
print("所有用户均已被锁定,无法开启程序......") #判断所有用户状态均已锁定,程序退出
break

用户文件:
songyang sy123 0 #第一列为用户名,第二列为密码,第三列为用户状态
admin ad123 0

程序重要位置解释:
username = []                                  #创建一个名称为username的空列表
for line in open(‘user.txt‘): #遍历user.txt文件的每一行
line=line.replace(‘\n‘,‘‘).split() #将user.txt文件中的每一行的所有值分别存入line的列表,replace()函数
#是将每行结尾的换行符替换成空格,split()函数是以空格为标志,将文件的每一行分割成列表
username.append(line[0]) #将line列表中的第一个元素保存到username列表中,形成用户名列表

newuser = open("user.txt",‘w‘)                 #以写方式打开用户文件,此时文件中的内容会被读入内存,程序会删除文件内容
for i in range(len(username)): #程序检测username列表有几个元素,循环几次
  newuser.write(‘%s %s %d\n‘ % (username[i],password[i],counter[i])) #将所有列表username,password,counter的内容写入到文件中
newuser.close() #关闭文件

程序运行错误释义
技术分享技术分享
此为相应选择,循环等语句后忘记加“:”导致

技术分享
此为相应报错行没有缩进导致。



python学习一:用户登录