# Un número de cuenta registrada
# 1, existe el nombre de usuario nuevo.
# 2, el nombre de usuario sólo letras y números, de 8 a 16 bits.
# 3, solamente por una contraseña de letras y números, 8 a 16 bits.
# 4, introduzca el código de invitación.
# 4, introduzca el código de verificación para completar el registro.
# En segundo lugar, el acceso a la cuenta
# 1, la cuenta no existe de nuevo.
# 2, el número de cuenta correcto y lo incorrecto tres veces la contraseña es incorrecta para bloquear la cuenta.
# ================ ================ enlace de registro de impresión ( ' súper afiliado registrado ' .center (30, ' = ' )) info_cheek = 1 ivt_cheek = 1 mientras info_cheek: in_name = la entrada ( ' Por favor, introduzca un nombre de usuario que utiliza para iniciar sesión: ' ) .strip () SI no in_name.isalnum (): Imprimir ( ' nombre de usuario sólo por números y letras, inténtelo de nuevo ' ) del Continuar SI len (in_name) <8. o len (in_name)> 16 : Imprimir ( ' nombre de longitud no cumplen las normas de usuario (8-16), por favor, vuelva a introducir ' ) Continuar con Open (R ^ ' 0011 cuenta datos de contraseñas .txt ' , MODE = ' RT ' , encoding = ' UTF-8. ' ) SQL AS: paraMejilla en SQL: SI in_name == cheek.strip split (). ( ' : ' ) [0]: Imprimir ( ' nombre de usuario ya existe, por favor vuelva a entrar ' ) DESCANSO la otra : info_cheek = 0 , mientras que 1 : in_pwd = la entrada ( ' Por favor, introduzca la contraseña que utiliza para iniciar sesión en: ' ) .strip () SI no in_pwd.isalnum (): Imprimir ( ' contraseña sólo por números y letras, por favor, inténtelo de nuevo ' ) del Continuar elif len (in_pwd ) <8. o len (in_pwd)> 16 : Imprimir ( ' longitud no cumplen las normas contraseña (8-16), por favor, vuelva a introducir ' ) Continuar la otra cosa : ROTURA impresión ( ' nombre de usuario y contraseña disponible ' .center (30, ' = ' )) al mismo tiempo ivt_cheek: ivt_num = input ( ' Introduce el código de invitación: ' ) .strip () con abierto (r ' 0012邀请码库.txt ' , modo = ' rt ' , que codifica = ' utf-8 ' ) como sql: para mejilla en sql: si ivt_num == cheek.strip (): ivt_cheek = 0 DESCANSO la otra cosa : Imprimir ( " código de invitación no existe, por favor vuelva a entrar " ) ident_set = { ' 0 ' , ' 1 ' , ' 2 ' , ' 3 ' , ' 4 ' , ' 5 ' , ' 6 ' , ' 7 ' , ' 8 ' , ' 9 ' } ident_num = '' mientras que 1 : para _ en rango (4 ): ident_n = ident_set.pop () ident_num + = ident_n in_ident = input ( " Por favor, introduzca ({}): ' .formato (ident_num)) Gaza (). SI in_ident == ident_num: ROMPER la persona : Imprimir ( ' Error de validación de entrada de código, por favor vuelva a entrar " ) ident_num = '' Imprimir ( ' Felicidades, registrado, Asegúrese de mantener su nombre de usuario y la contraseña ' ) Imprimir ( ' Usuario: {} ' .formato (in_name)) Imprimir ( ' Contraseña: {} ' . formato (in_pwd)) in_info = in_name + ' : ' + in_pwd + ' \ n ' con abierto (r ' 0011账号密码库.txt ' , modo = ' a ' , que codifica = ' utf-8 ' ) como sql: sql.write (in_info) # ================ enlace de conexión ================ Condi = 1 miss_list = [] al mismo tiempo que Condi: Imprimir ( " super afiliados Iniciar sesión ' .center (30, ' = ' )) USER_NAME = input ( ' Introduzca nombre de usuario: ' ) la user_pwd = input ( ' Introduzca la contraseña: ' ) Abrir con (R & lt ' 0013 .txt lista negra ' , MODE = ' RT ' , que codifica = ' UTF-8. ' ) SQL AS: para black_cheek en SQL: SI USER_NAME == black_cheek.strip (): Imprimir ( ' el usuario tiene está bloqueado, por favor intente de nuevo más tarde " ) condi = 0 ruptura otra cosa : Abrir con (R & lt ' 0011 cuenta la base de datos contraseña .txt ' , MODE = ' RT ' , que codifica = ' UTF-8. ' SQL AS): para login_c en SQL: login_cheek . = login_c.strip split () ( ' : ' ) si nombre_usuario == login_cheek [0] y user_pwd == login_cheek [1 ]: impresión ( ' 登录成功' ) condi = 0 ruptura elif nombre_usuario == login_cheek [0] y user_pwd = login_cheek [1! ]: miss_list.append (nombre_usuario) Probabilidad = 3 -. Miss_list.count (usuario) SI oportunidad> 0: Imprimir ( ' contraseña incorrecta, por favor reintentos puede también tratar {} ' .formato (Chance)) ROTURA la otra cosa : Imprimir ( ' contraseña del usuario se ha introducido erróneo tres veces, ha sido bloqueada ' ) condi = 0 con abierto (r ' 0013黑名单.txt ' modo, = ' a ' , que codifica = ' utf-8 ' ) como sql: sql.write ( ' {} \ n ' .formato (usuario)) ROMPER la persona : Imprimir ( " El usuario no existe, por favor, vuelva a introducir " )