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