一、需求:
#1、实现注册功能
输入:username、passowrd,cpassowrd
#最多可以输错3次
#3个都不能为空
#用户名长度最少6位, 最长20位,用户名不能重复
#密码长度最少8位,最长15位
#两次输入的密码要一致
#注册成功之后,要写到文件里面
#2、登陆功能实现:
#3次
用户名和密码你去文件里面取
二、代码
'''
注册登录小程序
Author:Test_Lin
'''
import datetime
#先访问文件,将文件中的内容存到列表当中
f = open('RegisterUser.txt','a+') #可以写绝对路径或者相对路径。a+代表追加,w会清空文件内容
f.seek(0) #移动文件指针
file_info = f.readlines()
print('file_info',file_info)
users_info = list() #定义一个空的list存放用户名
passwd_info = list() #定义一个空的list存放密码
all_users = list() #定义一个空的list存放所有账号密码
#将已存在的用户名存在一个list中
for i in file_info:
all_users.append(i.rstrip())
users_info.append(i.split(',')[0])
print('all_users',all_users)
print('users_info',users_info)
#将已存在用户名的密码存在一个list中
for i in range(len(all_users)):
passwd_info.append(all_users[i].split(',')[1])
print('passwd_info:',passwd_info)
#####注册######
for i in range(3):
username = input('请输入用户名:')
if username.strip() == '':
print('用户名不能为空!')
elif len(username) > 20:
print('用户名长度最大为20位!请重新输入。')
elif len(username) < 6 and len(username) > 0:
print('用户名长度最少为6位!请重新输入。')
elif username in users_info:
print('该用户已被注册!')
else:
password = input('请输入密码:')
cpassword = input('请输入确认密码:')
if password != cpassword:
print('密码与确认密码不一致!请确认。')
elif len(password) and len(cpassword) < 8:
print('密码与确认密码长度最少为8位!,请重新输入。')
elif len(password) and len(cpassword) > 15:
print('密码与确认密码长度最多为15位!,请重新输入。')
elif password.strip() == '' or cpassword.strip() == '':
print('密码不能为空!')
else:
print('注册成功!')
f.write('\n' + username + ',' + password) #注册成功的账号写入文件
f.flush() # 刷新文件
dict_login = dict(zip(users_info, passwd_info))
dict_login.setdefault(username,password)
break
else:
print('输入次数过多!')
f.close()
#####登录######
today = datetime.date.today()
count = 0
while count < 3:
count+=1
login_user = input('请输入登录用户名:')
login_passwd = input('请输入登录密码:')
if login_user in dict_login:
if login_passwd == dict_login.get(login_user):
print('%s 欢迎登录,今天的日期是 %s 。' % (login_user, today))
break
else:
print('账号密码有误!')
elif login_user.strip() == '' or login_passwd.strip() == '': # 账号密码为空判断,且账号为空不计次数
print('账号或密码不能为空!')
count -= 1
else:
print('账号密码有误!')
else:
print('\n')
print('账号密码错误3次,请联系管理员!')
运行结果:
C:\Python34\python.exe C:/Users/Administrator/PycharmProjects/day3/RegisterLogin.py
file_info ['testlin1,12345678\n', 'testlin2,12345678\n', 'testlin3,12345678']
all_users ['testlin1,12345678', 'testlin2,12345678', 'testlin3,12345678']
users_info ['testlin1', 'testlin2', 'testlin3']
passwd_info: ['12345678', '12345678', '12345678']
请输入用户名:testlin4
请输入密码:1234
请输入确认密码:1234
密码与确认密码长度最少为8位!,请重新输入。
请输入用户名:testlin4
请输入密码:1234qwer
请输入确认密码:1234qwer
注册成功!
请输入登录用户名:testlin4
请输入登录密码:1234qwer
testlin4 欢迎登录,今天的日期是 2018-08-30 。
Process finished with exit code 0
三、总结:
0、思路:
(1)将文件中的用户读取到两个list1
(2)将整体的用户名及密码读取到一个list2
(3)遍历list3并使用 .append 、.split 来生成密码list3
(4)使用循环来进行登录验证,其中字典中新增一个k-v,使用.setdefault
(5)两个list可以合并转换为一个dict,使用dict_login = dict(zip(users_info, passwd_info))
1、重难点
字符串、list的操作