Python - Llamar función "n" veces con una variable

 
Vista:
sin imagen de perfil

Llamar función "n" veces con una variable

Publicado por Rodrigo Gras (17 intervenciones) el 04/04/2023 00:00:54
Hola, estoy creando un generador de contraseñas, en el cuál yo indico la longitud de la contraseña y la cantidad de contraseñas que quiero que me arroje la función.

El código es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def password(n, rep):
 
    # En una variable tipo LISTA guardo todoas las letras ASCII y todos los números del 0 al 9
    letra_digito = list(string.ascii_letters) + list(string.digits)
 
    # Creo variable vacía dónde se va a almacenar la contraseña y bucleo
    passw = []
    count = 0
 
    while count < rep:
        for i in range(n):
            # En cada iteración guarda (choice) aleatoriamente (random) un valor
            temp = random.choice(letra_digito)
            passw.append(temp)
        # Fuera del for, unimos las letras ("".join) para que no se muestren ['a', 'b', 'c']
        res = "".join(passw)
        print(res)
        count = count + 1
 
password(n, rep)

El problema es que yo quiero que el output me dé:

1
2
3
4
5
contraseña1
contraseña2
.
:
contraseña rep

Y mi output es:

1
contraseña1contraseña2constraseña3.......contraseñarep

Agradezco su ayuda!!!
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

Llamar función "n" veces con una variable

Publicado por Costero (92 intervenciones) el 04/04/2023 15:49:33
1
res = "\n".join(passw)
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
sin imagen de perfil

Llamar función "n" veces con una variable

Publicado por Rodrigo (17 intervenciones) el 04/04/2023 16:18:45
Gracias por la respuesta pero no es la solución!

MI output es

1
2
3
4
5
contraseña1
contraseña1contraseña2
contraseña1contraseña2contraseña3
contraseña1contraseña2contraseña3contraseña4
(n contraseñas según el while)

Y yo quiero que imprima

1
2
3
4
contraseña1
contraseña2
contraseña3
contraseña4

Es decir, que con cada iteración, se "borre" la contraseña almacenada previamente y me imprima una nueva
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

Llamar función "n" veces con una variable

Publicado por Costero (92 intervenciones) el 04/04/2023 17:13:17
Para poder solucionar el tuyo, pon el codigo de 'string'

Trata este codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from random import choice
 
def password(n, rep):
    # En una variable tipo LISTA guardo todoas las letras ASCII y todos los números del 0 al 9
    # letra_digito = list(string.ascii_letters) + list(string.digits)
    letra_digito = ['contraseña1', 'contraseña2', 'contraseña3']
 
    # Creo variable vacía dónde se va a almacenar la contraseña y bucleo
    passw = []
    count = 0
    while count < rep:
        for i in range(n):
            # En cada iteración guarda (choice) aleatoriamente (random) un valor
            temp = choice(letra_digito)
            passw.append(temp)
        # Fuera del for, unimos las letras ("".join) para que no se muestren ['a', 'b', 'c']
        res = "\n".join(passw)
        print(res)
        count = count + 1
 
password(5, 3)

A mi me imprime:

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
contraseña3
contraseña2
contraseña3
contraseña3
contraseña2
contraseña3
contraseña1
contraseña1
contraseña2
contraseña1
contraseña1
contraseña2
contraseña3
contraseña3
contraseña2
contraseña3
contraseña1
contraseña1
contraseña2
contraseña1
contraseña1
contraseña2
contraseña2
contraseña1
contraseña2
contraseña2
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

Llamar función "n" veces con una variable

Publicado por Costero (92 intervenciones) el 04/04/2023 19:06:56
Si la letra_digito es algo asi:

1
letra_digito = ['contraseña1', 'contraseña1contraseña2', 'contraseña1contraseña2contraseña3']

Entonces:

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
from random import choice
 
def separate(list):
    new_list = []
    result = ""
 
    for lst in list:
        for v in lst:
            if v.isnumeric():
                result = result + str(v)
                new_list.append(result)
                result = ""
            else:
                result = result + str(v)
    return new_list
 
 
def password(n, rep):
    # En una variable tipo LISTA guardo todoas las letras ASCII y todos los números del 0 al 9
    # letra_digito = list(string.ascii_letters) + list(string.digits)
    letra_digito = ['contraseña1', 'contraseña1contraseña2', 'contraseña1contraseña2contraseña3']
    letra_digito = separate(letra_digito)
    res = ""
 
    # Creo variable vacía dónde se va a almacenar la contraseña y bucleo
    passw = []
    count = 0
    while count < rep:
        for i in range(n):
            # En cada iteración guarda (choice) aleatoriamente (random) un valor
            temp = choice(letra_digito)
            passw.append(temp)
 
        # Fuera del for, unimos las letras ("".join) para que no se muestren ['a', 'b', 'c']
        res = "\n".join(passw)
        print(res)
        count = count + 1
 
    # print(res)
 
password(5, 3)
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 Antoni Masana
Val: 121
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Llamar función "n" veces con una variable

Publicado por Antoni Masana (67 intervenciones) el 05/04/2023 17:52:04
Quizas el resultado que se espera tener es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
contrasenya1
contrasenya3
contrasenya2
contrasenya2
contrasenya3
 
contrasenya2
contrasenya1
contrasenya1
contrasenya1
contrasenya1
 
contrasenya1
contrasenya2
contrasenya1
contrasenya2
contrasenya2


Y el código es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from random import choice
 
def password(n, rep):
    # En una variable tipo LISTA guardo todoas las letras ASCII y todos los números del 0 al 9
    # letra_digito = list(string.ascii_letters) + list(string.digits)
    letra_digito = ['contraseña1', 'contraseña2', 'contraseña3']
 
    # Creo variable vacía dónde se va a almacenar la contraseña y bucleo
    passw = []
    count = 0
    while count < rep:
        passw = []
        for i in range(n):
            # En cada iteración guarda (choice) aleatoriamente (random) un valor
            temp = choice(letra_digito)
            passw.append(temp)
        # Fuera del for, unimos las letras ("".join) para que no se muestren ['a', 'b', 'c']
        res = "\n".join(passw)
        print(res)
        count = count + 1
        print("")
password(5, 3)

Si en esta línea res = "\n".join(passw) quito el salto de línea y lo dejo asi: res = "".join(passw) el resultado es este:

1
2
3
4
5
contrasenya2contrasenya2contrasenya3contrasenya3contrasenya2
 
contrasenya2contrasenya3contrasenya1contrasenya3contrasenya3
 
contrasenya1contrasenya2contrasenya1contrasenya2contrasenya3

Saludos.
\\//_
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