先让用户选择,是登陆还是注册
选择序号完毕之后,运行相应的程序,
验证成功之后,可以让其继续选择,登陆还是注册,还可以选择退出。
1 import time,os 2 3 #文件名 4 file_name = 'user_list.txt' 5 6 7 def file_exists(*args,**kwargs): 8 ''' 9 # 判断用户列表文件是否存在 10 :return: True 存在 False 不存在 11 ''' 12 # 判断文件是否存在 13 if os.path.exists(file_name): 14 return True 15 else: 16 with open(file_name, encoding='utf-8', mode='w') as mk: 17 mk.write('张三 123') 18 return False 19 20 21 def registered_username(username): 22 ''' 23 #判断注册用户名是否可用 24 :param username: 用户名 25 :return: True 可用(用户不存在) False 不可用(用户已存在) 26 ''' 27 # 纯用户名列表,不包含密码 28 user_list = [] 29 with open(file_name, encoding='utf-8') as f1: 30 for i in f1: 31 # 去空格,以空格切割,转换为列表 32 li = i.strip().split() # [张三,123] 33 # 将用户名追加到列表中 34 user_list.append(li[0]) 35 # 判断用户名是否存在列表中 36 if username in user_list: 37 # 返回False 38 return False 39 else: 40 return True 41 42 43 def write_file(username,password): 44 ''' 45 #写入用户列表文件 46 :param username: 用户名 47 :param password: 密码 48 :return: True 写入成功 False 写入失败 49 ''' 50 with open(file_name, encoding='utf-8', mode='a') as f2: 51 f2.write('\n{} {}'.format(username, password)) 52 return True 53 54 55 def username_password(username,password): 56 ''' 57 #判断用户名和密码是否匹配 58 :param username: 用户名 59 :param password: 密码 60 :return: True 匹配成功 False 匹配失败 61 ''' 62 # print(username,password) 63 with open(file_name, encoding='utf-8', mode='r') as f3: 64 for i in f3: 65 # print(i) 66 # 去空格,以空格切割,转换为列表 67 li = i.strip().split() # [张三,123] 68 # 判断用户名和密码是否匹配 69 if username == li[0] and password == li[1]: 70 result = True 71 # 当找到匹配时,跳出循环 72 break 73 else: 74 result = False 75 # 当整个用户列表遍历完成之后,再return 76 return result 77 78 79 def register(*args,**kwargs): 80 ''' 81 注册逻辑 82 :return: 83 ''' 84 while True: 85 username = input('请输入注册的用户名,或输入q返回菜单:').strip() 86 if username == '': 87 print('用户名为空,请重新输入!') 88 elif username.upper() == 'Q': 89 break 90 else: 91 # 执行判断用户名函数 92 result = registered_username(username) 93 if result: 94 password = input('请输入您的注册的密码:').strip() 95 # 判断密码 96 if password == '': 97 print('密码为空,请重新输入!') 98 else: 99 # 执行写入用户列表文件函数 100 result = write_file(username, password) 101 if result: 102 print('注册成功!,您的用户名为: {}\n倒计时2秒返回菜单!'.format(username)) 103 time.sleep(2) 104 user_menu() 105 else: 106 print('注册失败!请重试') 107 else: 108 print('用户名已经存在,请重新输入!') 109 110 111 def login(count=0,max=3): 112 ''' 113 登录逻辑 114 :param count: 初始失败次数 115 :param max: 最大失败次数 116 :return: 117 ''' 118 while count < max: 119 count += 1 120 username = input('请输入用户名:').strip() 121 password = input('请输入密码:').strip() 122 # 执行验证用户名和密码函数 123 result = username_password(username,password) 124 if result: 125 print('登陆成功\n倒计时1秒返回菜单!') 126 time.sleep(1) 127 user_menu() 128 break 129 else: 130 print('用户名或密码错误,还剩余{}次机会!'.format(max - count)) 131 132 # 返回主菜单 133 user_menu() 134 135 136 def user_menu(*args,**kwargs): 137 ''' 138 # 用户菜单 139 ''' 140 # 判断文件是否存在,不存在创建文件 141 file_exists() 142 # 循环 143 while True: 144 # 打印菜单 145 menu = ['注册', '登录', '退出'] 146 print('bbs系统'.center(25, '#')) 147 for i in range(len(menu)): 148 print('{}\t{}'.format(i + 1, menu[i])) 149 print(''.center(27, '#')) 150 number = input('请选择序号: ').strip() 151 if number == '1': 152 # 执行注册程序 153 register() 154 elif number == '2': 155 # 执行登录程序 156 login() 157 elif number == '3': 158 exit() 159 else: 160 print('输入错误,请重新输入!') 161 162 163 # 执行菜单 164 user_menu()