English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Se requiere escribir una interfaz de inicio de sesión:
1. Ingrese el nombre de usuario y la contraseña
2. Después de la autenticación exitosa, mostrar un mensaje de bienvenida
3. El nombre de usuario se ha introducido incorrectamente, mostrar un mensaje de que el usuario no existe e ingresar de nuevo (5. Error en el intento, mostrar un mensaje de que se han excedido los intentos de prueba y salir del programa)
4. El nombre de usuario es correcto, la contraseña es incorrecta, mostrar un mensaje de error de contraseña e ingresar de nuevo (contraseña incorrecta3Segundo, bloquear el nombre de usuario y mostrar un mensaje de salida del programa)
readme
Conocimientos aplicados:
I、Operaciones de archivo
Operaciones básicas
f = open('lyrics','r',) #Abrir el archivo first_line = f.readline() print('primera línea:', first_line) #Leer una línea data = f.read()# Leer todo el contenido restante, no se debe usar cuando el archivo es grande print(data) #Imprimir el archivo f.close() #Cerrar el archivo
Los modos de apertura de los archivos son:
r, modo de lectura solo(por defecto).
w, modo de escritura solo。【No legible; si no existe, se crea; si existe, se elimina el contenido;】
a, modo de escritura adicional。【Legible; si no existe, se crea; si existe, se añade contenido solo;】
with sentencia, se pueden abrir varios archivos al mismo tiempo, además, se puede evitar que se olvide cerrar el archivo después de abrirlo, sintaxis:
with open('file1', 'r', encoding='utf-8) as f , \ open('file2', 'w', encoding='utf-8) as f_2 : ...
En este ejemplo hay2Un archivo, uno almacena el nombre de usuario y la contraseña, y el otro almacena la lista negra. Cómo convertir los datos leídos del archivo en objetos Python y realizar operaciones en los objetos es el primer obstáculo que me encontré!
Luego investigué y descubrí que el método split de la cadena, puede dividir la cadena desde el lugar del separador de coma, obteniendo una lista de subcadenas. De esta manera, se puede realizar la búsqueda en la lista negra y otras operaciones.
... user_lis_bak = f.readline().split(',') ...
La función setdefault() del diccionario de Python y el método get() son similares, si la clave no existe en el diccionario, se agregará la clave y se establecerá el valor en el valor predeterminado.
dict.setdefault(key, default=None)
II、Lista y diccionario
La lista es uno de los tipos de datos más utilizados últimamente, a través de la lista se puede realizar la almacenamiento y modificación más convenientes de los datos
names = ['xiaoli', "xiaoming", 'yuanlu']
Acceder a los elementos de la lista mediante índice, el índice comienza en 0
>>> names[0] "xiaoli" >>> names[1] "xiaoming" >>> names[-1] "yuanlu" >>> names[-2] #Se puede tomar al revés "xiaoming"
El diccionario es un key - El tipo de datos de value, se utiliza como el diccionario que usamos en la escuela, se puede encontrar el contenido detallado de la página correspondiente a través de trazos, letras.
info = { "xiaoli": "123456" "xiaoming": "111111" 'yuanlu': ","888888" }
这里key是用户名,value是密码,一一对应,key是唯一的.
三、for loop 和 if...else
for i in range(10): print(i)
还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
for i in range(10): if i>5: continue #不往下走了,直接进入下一次loop print(i)
用户名和密码文件格式:
xiaoli 123456
xiaoming 888888
wangpeng 111111
luyuan 112222
qiling 556666
haiming 223333
黑名单文件格式:
xiaoli,xiaoming,wangpeng,
代码
with open('user_lis', 'r', encoding='utf-8') as f_user_lis,\ open('user_lis_bak', 'r', encoding='utf-8') as f_user_lis_bak: # 打开文件'user_lis'和'user_lis_bak' user_lis_bak = f_user_lis_bak.read().split(',') # 读取f_user_lis_bak并转成列表赋值给 user_lis_bak user_lis_dict = {} # 定义一个空字典 for i in f_user_lis: user_lis_dict.setdefault(i.split()[0], i.split()[1]) # 读取f_user_lis并把值放入字典user_lis_dict中 count = 0 for i in range(5): # 设置错误次数上限为5次 name = input('请输入用户名>>') password = input('请输入密码>>') if name in user_lis_bak: # 第一步先查找黑名单 print('用户名已被锁定,请联系管理员!!!') continue # 在黑名单中直接进入下一次循环,重新输入用户名和密码 elif name in user_lis_dict: # 第二步查找用户白名单 if password == user_lis_dict.get(name): # Contraseña correcta, verificación exitosa, salida print('Querido miembro', name, '¡Bienvenido de vuelta!') break else: # Error de contraseña, mensaje de error if count == 2: name_bak_write = open('user_lis_bak', 'a', encoding='utf-8') name_bak_write.write(name+',') name_bak_write.close() # 3vez de error de contraseña, escriba el nombre de usuario en la lista negra print('El nombre de usuario ha sido bloqueado, por favor póngase en contacto con el administrador!!!') break print('¡Error en la contraseña!!!') count += 1 # Error de contraseña una vez, count se+1 else: if i == 4: # Error de nombre de usuario5vez, salga directamente print('Se han intentado demasiado muchas veces, adiós!!!') continue print('¡El nombre de usuario no existe!!!') # Error de nombre de usuario, mensaje de error
Este artículo sobre la implementación del proceso de inicio de sesión de un usuario principiante en Python (explicación de ejemplo) es todo lo que el editor comparte con ustedes, espero que les sirva de referencia y que apoyen más a Tutorial de Gritación.
Declaración: Este artículo se ha obtenido de la red, pertenece al propietario original, el contenido se ha contribuido y cargado espontáneamente por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no se ha realizado una edición humana y no asume la responsabilidad legal correspondiente. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#w proporcionando evidencia relevante.3Declaración: El contenido de este artículo se obtiene de la red, pertenece al propietario original, el contenido se contribuye y carga espontáneamente por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no se ha realizado una edición humana y no asume la responsabilidad legal correspondiente. Si encuentra contenido sospechoso de copyright, por favor envíe un correo electrónico a: notice#w proporcionando evidencia relevante, una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.