一、需求:
#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的操作