Python - Crear una contraseña

 
Vista:

Crear una contraseña

Publicado por Leticia (10 intervenciones) el 20/10/2020 15:55:56
Hola!
Sigo con mis ejercicios de aprendizaje de Python. Estoy intentando crear una lista de números del 1 al 20 en el que sea el usuario el que me diga cuántos números tendrá la lista.
He conseguido sacar el cuadro de diálogo que pregunte al usuario, pero la lista se me crea en blanco. ¿Alguna idea de qué estoy haciendo mal?



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import random
from PyQt5.QtGui import *
EmptyList =[]#generamos la lista vacía
 
def vecesNumero():
    veces = random.randint(1, 20)
    return veces
while True:
    herramienta=QInputDialog()
    titulo = 'Creando una lista'
    orden = '¿Cuántos números quiere que tenga la lista?'
    modo = QLineEdit.Normal
    valorIn, ok = QInputDialog.getText (herramienta,titulo,orden,modo)
 
    if not ok:
        break
    if not valorIn:
        break
    try:
        veces = int(valorIn)
    except:
        print('El valor introducido no es un número')
        continue
 
    else:
        print ('La lista generada es:\n',random.randint(1,20))
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Crear una contraseña

Publicado por Anikollaste (118 intervenciones) el 20/10/2020 16:58:54
Espero que esto te ayude.
1
2
3
4
5
6
7
8
9
10
from random import randrange
contrasenya=[]
def pas(num):
	for i in range(num):
		aleatorio=randrange(0,20)
		contrasenya.append(aleatorio)
	passString="".join(map(str, contrasenya)) #Convertir lista de enteros en cadena
	return passString # Retorna la contraseña como un string
	#return contrasenya # Retorna una lista
print(pas(8))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear una contraseña

Publicado por Leticia (10 intervenciones) el 20/10/2020 17:08:29
Muchas gracias! El problema lo tengo en cómo hacer para que sea el usuario el que determine el número de caracteres de la lista. No sé si me explico. La lista sale en blanco.
Tendría que hacer un array?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Crear una contraseña

Publicado por Anikollaste (118 intervenciones) el 20/10/2020 17:29:32
La función que te he mostrado recibe por parámetro la cantidad de caracteres de la contraseña en tu caso sería el número introducido por el usuario.
En tu código no consigo ver que la lista se vaya incrementando.
Entiendo que en este punto recibe los n caracteres que debe de tener la contraseña
1
2
3
try:
 
    veces = int(valorIn)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Crear una contraseña

Publicado por Anikollaste (118 intervenciones) el 20/10/2020 17:38:44
Yo uso tkinter para la Gui y no puedo probar el código, pero creo que así debería funcionar:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from PyQt5.QtGui import *
from random import randrange
EmptyList =[]#generamos la lista vacía
 
def pas(num):
	for i in range(num):
		aleatorio=randrange(0,20)
		EmptyList.append(aleatorio)
 
while True:
    herramienta=QInputDialog()
    titulo = 'Creando una lista'
    orden = '¿Cuántos números quiere que tenga la lista?'
    modo = QLineEdit.Normal
    valorIn, ok = QInputDialog.getText (herramienta,titulo,orden,modo)
 
    if not ok:
        break
 
    if not valorIn:
        break
 
    try:
        veces = int(valorIn)
        pas(veces)
 
    except:
        print('El valor introducido no es un número')
        continue
 
    else:
        print ('La lista generada es:\n{}'.format(EmptyList))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear una contraseña

Publicado por Leticia (10 intervenciones) el 20/10/2020 17:43:54
Hola,

Muchas gracias. Sí, funciona!

Pero sigo sin entender cómo funciona. Perdón, pero he empezado hace poco con Python y soy de letras puras y me está costando bastante...

No termino de ver cómo se hace la relación entre "El cuadro de diálogo" y "la información que el usuario mete en el cuadro".

Es decir, sé hacer el cuadro de petición al usuario, pero no sé como hacer para enlazar lo que el usuario . No sé si me explico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Crear una contraseña

Publicado por Anikollaste (118 intervenciones) el 20/10/2020 17:54:55
Te puedo mostrar un ejemplo en tkinter y, un cuadro de diálogo donde voy a capturar lo que introduzca el usuario y almacenarlo en una variable, después podré acceder a su contenido.
1
2
3
4
5
def pantalla(self):
    self.numeroPantalla=StringVar()
    pantalla=Entry(self.miFrame, textvariable=self.numeroPantalla, font=("Arial Bold", 15))
    pantalla.grid(row=1, column=1, padx=10, pady=10)
    pantalla.config(background='black', fg='#03f943', justify='center')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear una contraseña

Publicado por Leticia (10 intervenciones) el 20/10/2020 20:06:57
Hola!

Sigo con la creación de contraseñas a vueltas. Pero creo que estoy cayendo otra vez en el mismo error que antes con este nuevo intento de crear contraseñas de otra manera.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from PyQt5.QtGui import*
 
def nickname(nombre_usuario):
 
        long=len(nombre_usuario) #longitud del nombre de usuario
        y=nombre_usuario.isalnum() #valores alfanuméricos
 
        if y== False: #valores no alfanuméricos
            print("El nombre de usuario puede contener solo letras y números")
 
        if long < 6:
            print("El nombre de usuario debe contener al menos 6 caracteres")
 
        if long > 15:
            print("El nombre de usuario no puede contener más de 15 caracteres")
 
        if long >5 and long <14 and y ==True:
            return True
 
        if lowercase == True:
            return True
 
        if uppercase == True:
            return True
 
while True:
    e1 = QInputDialog ()
    e2 = 'Creación de contraseña'
    e3 = 'Introduzca una contraseña, por favor'
    e4 = QLineEdit.Normal
    nickname, ok = QInputDialog.getText(e1,e2,e3,e4)
    if not ok:
        break
    try:
        nombre_usuario = st(nombre_usuario)
        break
    except:
        print ('No es una contraseña válida')
        continue
print (nickname)

Da igual el valor que ponga que siempre me dice que la contraseña no es válida...

Pero bueno, no me rindo, en algún momento conseguiré hacerlo por mí misma a la primera (espero).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Anikollaste
Val: 570
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Crear una contraseña

Publicado por Anikollaste (118 intervenciones) el 20/10/2020 21:16:17
Seguro qué lo conseguirás!! .La practicas hace al maestro.
No acabo de ver claro que quieres hacer.. Si tu intención es que la función nickname sea la contraseña en la línea 35 deberías ser:
1
2
3
4
try:
    nombre_usuario = st(nombre_usuario)
    nickname(nombre_usuario) # La función tal y como tienes el código Retornará True o False en ningún caso retornará el string
    break
Así quedaría la función nickname:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def nickname(nombre_usuario):
 
    long=len(nombre_usuario) #longitud del nombre de usuario
    y=nombre_usuario.isalnum() #valores alfanuméricos
 
    if y== False: #valores no alfanuméricos
        print("El nombre de usuario puede contener solo letras y números")
 
    elif long < 6:
        print("El nombre de usuario debe contener al menos 6 caracteres")
 
    elif long > 15:
        print("El nombre de usuario no puede contener más de 15 caracteres")
 
    elif long >5 and long <14 and y ==True:
        #return nombre_usuario
        return True
 
    #if lowercase==True: # lowercase es un método de PyQt5?
    #    return True
 
    #if uppercase==True: # Idem lowercase
    #    return True
print(nickname('papamoscas')) #Retorna True Si quieres que retorne el nombre usuario para poder compararlo quita comentario
                            #Línea 16
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear una contraseña

Publicado por Leticia (10 intervenciones) el 21/10/2020 08:44:11
Muchas gracias!

Lo de uppercase era para intentar hacer como en las contraseñas que suelen pedir en los sitios web:
- Tiene que contener mayúsculas y minúsculas sino no es una contraseña válida.
Pero veo que no se hace así .

Vale, entonces me había olvidado de la respuesta con el string para que saliese la contraseña.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Crear una contraseña

Publicado por yoyyo (1 intervención) el 21/10/2020 00:20:46
veamos, voy a hacer algo funcional agregando y cambiando algo de tu código :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#-*- coding: utf - 8 -*-
 
from PyQt5.QtWidgets import*
from PyQt5.QtWidgets import QApplication,QMainWindow,QInputDialog
import sys
 
def nickname(nombre_usuario):
    long=len(nombre_usuario) #longitud del nombre de usuario
    y=nombre_usuario.isalnum() #valores alfanuméricos
    if y== False: #valores no alfanuméricos
        print("El nombre de usuario puede contener solo letras y números")
        return False
    if long < 6:
        print("El nombre de usuario debe contener al menos 6 caracteres")
        return False
    if long > 15:
        print("El nombre de usuario no puede contener más de 15 caracteres")
        return False
    return True
 
def password():
    while True:
        e1 = ventana
        e2 = 'Contraseña'
        e3 = 'Introduzca una contraseña, por favor'
        e4 = QLineEdit.Password
        usuario, ok = QInputDialog.getText(e1,e2,e3,e4)
 
        if not ok:
            break
 
        if nickname(usuario):
            print("usuario correcto")
            break
        else:
            print("Ingrese una contraseña")
 
 
 
app=QApplication(sys.argv)
ventana = QWidget()
ventana.show()
password()
sys.exit(app.exec_())

eso es a modo de como se puede hacer, ahora supongo que sabés que los print no deberías usarlos, sino cual es el sentido de una aplicación gráfica y seguir usando la consola
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar