python学习:
模拟用户登陆
1、输入帐号密码进行登录;
2、用户信息保存着文件内;
3、用户密码输入错误三次后锁定;
第一次程序,问题比较多,画蛇添足也比较多,写的比较差,还请多多指教
代码如下
Python Code
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 17/7/29 下午5:17
# @Author : Shope
# @Site :
# @File : file_opreation2.py
# @Software: PyCharm
users=[]
line1=[]
users1=[]
login=0
f = open("/users/shope/python/file.txt","r")
#txt文件包括信息
# shope 123456
# jack 654321
# alex 110032
# lilei 111111
for line in f:
users.append(line.split())
print(users)
#用户注册
new = raw_input("是否有帐号(Y\N):")
if new =="y" or new =="Y":
while login==0:
name = raw_input("请输入注册用户名:")
for list in users: #检索用户是否存在
if name == str(list[0]):
print("用户已存在!")
break
else:
login=1
break
password=raw_input("请输入密码:")
f = open("/users/shope/python/file.txt","a")
f.write("%s"%name)
f.write(" ")
f.write("%s\n"%password)
f.close()
else:
#
pass
# f = open("/users/shope/python/new_file.txt","r")
# for line in f:
# users.append(line.split())
# #调试使用
# #print(users)
# f.close()
#调试使用
f = open("/users/shope/python/file.txt","r")
for line in f:
users1.append(line.split())
for line1 in users1:
if line1 in users1:
break
else:
users.append(line.split())
print(users)
f.close()
i,j,m=0,0,0
falg=2 #flag标记最后输出信息
user = raw_input("请输入登陆用户名:")
while i<3:
for list in users: #检索用户是否存在
#print(str(list[0]))
#print(str(list[-1])) #打印当前用户信息,测试使用
if user == str(list[0]):
passwd = raw_input("请重新输入用户%s的密码:"%user)
if passwd == list[-1]:
i=100
falg=1
break
else:
print("登陆密码错误!")#密码输入错误,给用户输入机会
j=0 #重置输入密码次数
while j<2:
print("你还有%s机会输入密码:" % (2 - j))
passwd = raw_input("请重新输入用户%s的密码:"%user)
if passwd ==list[-1]:
i=100
m=99
falg =1
break
else:
j+=1
falg=0
print("输出密码错误过多!!")
break
pass
# else:
# print("用户不存在!")
y = raw_input("是否需要换个用户?(Y\N):") #用户密码输入错误,询问是否还要继续尝试输入用户密码,这儿有bug没有解决
if y== 'N' or y=='n':
m=100
break
elif y== 'Y' or y=='y':
pass
else:
m=100
break
#else:
#user = raw_input("please input your userid again:")
if m>1:
print("谢谢使用!")
i==100
else:
user = raw_input("你还有%s机会输入用户名:"%(2-i))
i+=1
#程序执行完之后,根据flag值打印相关信息
if falg==1:
print("欢迎使用本测试软件")
elif falg==0:
print("密码错误过多!")
else :
print("用户名及密码不能匹配")
file.txt文件内容:
shope 123456
jack 654321
alex 110032
lilei 111111
hanmeimei 11111111